|
|
|
@ -19,7 +19,7 @@
|
|
|
|
|
#include "SensorsProtocol.h"
|
|
|
|
|
#include <sys/time.h>
|
|
|
|
|
#include "SensorsProtocol.h"
|
|
|
|
|
#include "Eint.h"
|
|
|
|
|
//#include "Eint.h"
|
|
|
|
|
|
|
|
|
|
SIO_PARAM_SERIAL_DEF serialport[MAX_SERIAL_PORT_NUM];
|
|
|
|
|
SERIAL_PARAM devparam[MAX_SERIAL_DEV_NUM];
|
|
|
|
@ -509,55 +509,23 @@ AI_DEF weatherpntmsg[WEATHER_DATA_NUM];
|
|
|
|
|
AI_DEF rallypntmsg[6][RALLY_DATA_NUM];
|
|
|
|
|
AI_DEF slantpntmsg[6][SLANTANGLE_DATA_NUM];
|
|
|
|
|
|
|
|
|
|
extern int gDisSunRain; /* add by dzf 20110613控制打印信息*/
|
|
|
|
|
|
|
|
|
|
extern void rmmi_write_to_uart (kal_uint8 *buffer, kal_uint16 length, kal_bool stuff);
|
|
|
|
|
extern void GPIO_InitIO(char direction, char port);
|
|
|
|
|
extern void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada);
|
|
|
|
|
extern void GPIO_WriteIO(char data, char port);
|
|
|
|
|
extern int sprintf(char *, const char *, ...);
|
|
|
|
|
extern void StartTimer(U16 timerid, U32 delay, FuncPtr funcPtr);
|
|
|
|
|
extern void StopTimer(U16 timerid);
|
|
|
|
|
extern void Gm_OMC_UART_DebugHex(char *print_buf_ptr , int hexlen, char* out_pstr);
|
|
|
|
|
extern void applib_dt_get_date_time(applib_time_struct *t);
|
|
|
|
|
extern void U_SetBaudRate(UART_PORT port, UART_baudrate baudrate, module_type ownerid);
|
|
|
|
|
extern kal_uint32 Gm_GetTimeSec(void);
|
|
|
|
|
//extern void * memset(void *m, int c, unsigned int n);
|
|
|
|
|
extern int atoi(const char *s);
|
|
|
|
|
//extern int Gm_GetSamplingTimeSec(void);
|
|
|
|
|
extern void Delayms(kal_uint32 time);
|
|
|
|
|
// 传感器故障状态
|
|
|
|
|
extern void CsgSensorsFaultStatus(BYTE askall);
|
|
|
|
|
#if PREVENT_PIRATES_BOARD_V40
|
|
|
|
|
#else
|
|
|
|
|
#if STATE_GRID_CORPORATION_1738
|
|
|
|
|
// 保存图片大小和包数
|
|
|
|
|
extern void SavePhotosPacketNumAndSize(u_char channel, int presetno, int img_file_size, int packetnum, int iphototime);
|
|
|
|
|
// 采集到的图片填充到缓存区
|
|
|
|
|
extern BYTE PhotosPacketToBuffer(BYTE channel, BYTE* photobuf, int packetno, int page_size);
|
|
|
|
|
// 获取摄像机类型
|
|
|
|
|
extern BYTE GetCameraType(BYTE channel);
|
|
|
|
|
// 获取摄像机拍照图片大小
|
|
|
|
|
extern BYTE GetCameraImageSize(BYTE channel);
|
|
|
|
|
// 传感器故障状态
|
|
|
|
|
extern void SGC1738_SensorsFaultStatus(BYTE askall);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
extern BOOL SetConfigToMcu(U8 ctrl);
|
|
|
|
|
#if ENCRYPTION_CHIP
|
|
|
|
|
// 获取需要加密的原始数据
|
|
|
|
|
extern int GetEnDecryptData(BYTE * cmdbuf);
|
|
|
|
|
// 清除需要加密数据存储缓存区
|
|
|
|
|
extern void ClearEncryptCmdbuf(void);
|
|
|
|
|
extern void GetOriginalID(int component, BYTE *buf);
|
|
|
|
|
extern int MakeEncryptNetCommand( BYTE cmdidx, BYTE subcmd, BYTE *cmdbuf, int len, BYTE nettype);
|
|
|
|
|
extern void OtomZh_RecvData(u_char *buf, int len);
|
|
|
|
|
// 设置加密状态
|
|
|
|
|
extern void SetEncryptState(int encryptstate);
|
|
|
|
|
#endif
|
|
|
|
|
//extern void Delayms(kal_uint32 time);
|
|
|
|
|
extern void srand( unsigned int seed );
|
|
|
|
|
extern int rand( void );
|
|
|
|
|
|
|
|
|
|
static long get_msec(void )
|
|
|
|
|
{
|
|
|
|
|
struct timeval tv;
|
|
|
|
|
|
|
|
|
|
gettimeofday(&tv, NULL);
|
|
|
|
|
long time_in_msec = tv.tv_sec * 1000 + tv.tv_usec/1000;
|
|
|
|
|
|
|
|
|
|
return time_in_msec;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
打开串口电源
|
|
|
|
|
*/
|
|
|
|
@ -580,7 +548,7 @@ void Gm_CloseSensorsPower(int port)
|
|
|
|
|
sprintf(szbuf, "Close Sensors port %d Power!", port);
|
|
|
|
|
|
|
|
|
|
/* 关闭电源*/
|
|
|
|
|
switch(port)
|
|
|
|
|
//switch(port)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -595,7 +563,7 @@ void Gm_OpenSensorsPower(int port)
|
|
|
|
|
return;
|
|
|
|
|
sprintf(szbuf, "Open Sensors port %d Power!", port);
|
|
|
|
|
/* 打开电源*/
|
|
|
|
|
switch(port)
|
|
|
|
|
//switch(port)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -606,7 +574,7 @@ char Gm_GetSensorsPowerState(int port)
|
|
|
|
|
//char szbuf[128];
|
|
|
|
|
|
|
|
|
|
/* 查询电源状态*/
|
|
|
|
|
switch(port)
|
|
|
|
|
//switch(port)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return cstate;
|
|
|
|
@ -683,9 +651,35 @@ void Gm_CloseSerialPort(void)
|
|
|
|
|
输出参数:
|
|
|
|
|
其它说明:
|
|
|
|
|
*********************************************************************************/
|
|
|
|
|
int GM_SerialComSend(const unsigned char * cSendBuf, unsigned long nSendLen, int commid)
|
|
|
|
|
int GM_SerialComSend(unsigned char * cSendBuf, unsigned long nSendLen, int commid)
|
|
|
|
|
{
|
|
|
|
|
int i, len;
|
|
|
|
|
char szbuf[512];
|
|
|
|
|
|
|
|
|
|
len = write(serialport[commid].fd, cSendBuf, nSendLen);/* 向串囗发送字符串 */
|
|
|
|
|
//serialport[commid].RevCmdFlag = 0;
|
|
|
|
|
//LOGE("发送命令时间差%ld毫秒", get_msec() - isendtime);
|
|
|
|
|
//isendtime = time(NULL);
|
|
|
|
|
//isendtime = get_msec();
|
|
|
|
|
if (len < 0)
|
|
|
|
|
{
|
|
|
|
|
LOGE("write data error \n");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
else if(len > 0)
|
|
|
|
|
{
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
sprintf(szbuf, "串口%d发送%d字节:", commid+1, len);
|
|
|
|
|
BytestreamLOG(szbuf, cSendBuf, len, 'D');
|
|
|
|
|
#if 0
|
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "%s %02X", szbuf, cSendBuf[i]);
|
|
|
|
|
}
|
|
|
|
|
LOGE("%s", szbuf);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
return len;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int Gm_SetSerialPortParam(int commid)
|
|
|
|
@ -700,6 +694,7 @@ int Gm_SetSerialPortParam(int commid)
|
|
|
|
|
LOGE("串口%d 波特率等参数设置错误!", commid+1);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化所有串口及所接传感器的配置
|
|
|
|
@ -764,7 +759,7 @@ void Gm_InitSerialComm(void)
|
|
|
|
|
}
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
|
|
|
|
|
sprintf(szbuf, "地址%d!;", srdt.ms_dev[i].devaddr);
|
|
|
|
|
sprintf(szbuf, "地址%d!;", devparam[i].devaddr);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
if(0 == devparam[i].IsNoInsta)
|
|
|
|
|
sprintf(szbuf, "没有启用!;");
|
|
|
|
@ -835,7 +830,7 @@ void FindDevUseSerialCommNo(void)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GM_StartSerialComm(BYTE compid)
|
|
|
|
|
void GM_StartSerialComm(void)
|
|
|
|
|
{
|
|
|
|
|
int i, j;
|
|
|
|
|
char szbuf[64];
|
|
|
|
@ -920,15 +915,15 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
|
|
|
|
|
srdt.RephotographCnt = 0;
|
|
|
|
|
FindDevUseSerialCommNo();
|
|
|
|
|
sprintf(szbuf, "sampling=%02X !", srdt.sampling);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
//sprintf(szbuf, "sampling=%02X !", srdt.sampling);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
if(0 == srdt.selfflag)
|
|
|
|
|
srdt.selfflag = 1;
|
|
|
|
|
Gm_OpenSerialPower();
|
|
|
|
|
if(0x00 == srdt.sampling)
|
|
|
|
|
{
|
|
|
|
|
Gm_OpenSerialPort();
|
|
|
|
|
}
|
|
|
|
|
//if(0x00 == srdt.sampling)
|
|
|
|
|
//{
|
|
|
|
|
// Gm_OpenSerialPort();
|
|
|
|
|
//}
|
|
|
|
|
if(0 == (srdt.sampling & 0x04))
|
|
|
|
|
{
|
|
|
|
|
srdt.sampling |= 4;
|
|
|
|
@ -945,28 +940,24 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
srdt.ms_dev[i].m_iNeedRevLength = 0;
|
|
|
|
|
//sprintf(szbuf, "装置%d, IsNoInsta=%d, 规约序号=%d", i+1, srdt.ms_dev[i].IsNoInsta, srdt.ms_dev[i].ProtocolIdx);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
if(1 == srdt.ms_dev[i].IsNoInsta)
|
|
|
|
|
if(0 == devparam[i].IsNoInsta)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
switch(srdt.ms_dev[i].ProtocolIdx)
|
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机协议*/
|
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机协议*/
|
|
|
|
|
if((1>srdt.ms_dev[i].CameraChannel) || (srdt.ms_dev[i].CameraChannel >MAX_CHANNEL_NUM))
|
|
|
|
|
if((1>devparam[i].CameraChannel) || (devparam[i].CameraChannel >MAX_CHANNEL_NUM))
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(channel == srdt.ms_dev[i].CameraChannel)
|
|
|
|
|
if(channel == devparam[i].CameraChannel)
|
|
|
|
|
{
|
|
|
|
|
#if PREVENT_PIRATES_BOARD_V40
|
|
|
|
|
;
|
|
|
|
|
#else
|
|
|
|
|
bCameratype = GetCameraType(channel);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
@ -994,8 +985,8 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
if(0x01 == flag)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!");
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
//StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -1007,6 +998,7 @@ int GM_SerialTimer(void)
|
|
|
|
|
GM_IsCloseSensors();
|
|
|
|
|
GM_AllSerialComRecv();
|
|
|
|
|
GM_ReadWireTemAndCloseTimer();
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/********************************************************************************
|
|
|
|
@ -1092,7 +1084,7 @@ void GM_IsCloseSensors(void)
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
// 关闭传感器电源
|
|
|
|
|
LOGI("因读取装置%d数据超过20秒,关闭装置%d电源!", i+1, i+1);
|
|
|
|
|
Gm_CtrlCloseSensorsPower(i);
|
|
|
|
|
//Gm_CtrlCloseSensorsPower(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt++;
|
|
|
|
@ -1156,60 +1148,48 @@ void GM_AllSerialComRecv(void)
|
|
|
|
|
*********************************************************************************/
|
|
|
|
|
void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
{
|
|
|
|
|
#if (SOUTHERN_POWER_GRID_V1 ||STATE_GRID_CORPORATION_1738)
|
|
|
|
|
int faultstate;
|
|
|
|
|
#endif
|
|
|
|
|
int i, j, iretime;
|
|
|
|
|
char buf[256];
|
|
|
|
|
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if((WDIITEMP_PROTOCOL_NEW == srdt.ms_dev[i].ProtocolIdx)
|
|
|
|
|
|| (RESERVE5_PROTOCOL== srdt.ms_dev[i].ProtocolIdx))
|
|
|
|
|
continue;
|
|
|
|
|
if(((srdt.ms_dev[i].IsNeedSerial == 1) || ((srdt.sampling & 0x02) == 0x02))
|
|
|
|
|
&& ((0<srdt.ms_dev[i].ProtocolIdx)&&(INVALID_PROTOCOL >srdt.ms_dev[i].ProtocolIdx)))
|
|
|
|
|
&& ((0<devparam[i].ProtocolIdx)&&(INVALID_PROTOCOL >devparam[i].ProtocolIdx)))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// 增加被动读取测温数据方式
|
|
|
|
|
if(i < MAX_SERIAL_DEV_NUM)
|
|
|
|
|
{
|
|
|
|
|
srdt.IsReadWireTem = 0;/* add by hyz 20120522*/
|
|
|
|
|
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
return; // 寻找
|
|
|
|
|
}
|
|
|
|
|
else // 关闭所有串口及电源
|
|
|
|
|
{
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (WDIITEMP_PROTOCOL_NEW == srdt.ms_dev[i].ProtocolIdx))
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (7 == devparam[i].ProtocolIdx))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i<MAX_SERIAL_DEV_NUM)
|
|
|
|
|
{
|
|
|
|
|
if(-1 == srdt.tempsamplingstartime)
|
|
|
|
|
{
|
|
|
|
|
srdt.tempsamplingstartime = 0; // yizhonghu 110612
|
|
|
|
|
srdt.IsReadWireTem = 1;/* add by dzf 20101110*/
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
for(j=0; j<MAX_SERIAL_DEV_NUM; j++)
|
|
|
|
|
{
|
|
|
|
|
if(srdt.ms_dev[j].IsNeedSerial == 0)
|
|
|
|
|
continue;
|
|
|
|
|
switch(srdt.ms_dev[j].ProtocolIdx)
|
|
|
|
|
switch(devparam[j].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
case WDIITEMP_PROTOCOL_NEW: // 测温
|
|
|
|
|
Gm_SetSerialPortBaud(srdt.ms_dev[j].UseSerialidx, srdt.ms_dev[j].Baud);
|
|
|
|
|
iretime = (int)Gm_GetTimeSec()-srdt.ms_dev[j].FirstCmdTimeCnt;
|
|
|
|
|
case 7: // 测温
|
|
|
|
|
Gm_SetSerialPortParam(srdt.ms_dev[j].UseSerialidx);
|
|
|
|
|
iretime = (int)get_msec()/1000-srdt.ms_dev[j].FirstCmdTimeCnt;
|
|
|
|
|
//if(iretime > 35)
|
|
|
|
|
//{
|
|
|
|
|
if((srdt.ms_dev[j].PowerPort) == 0)
|
|
|
|
|
// if((devparam[j].PowerPort) == 0)
|
|
|
|
|
{
|
|
|
|
|
if(-1 == srdt.tempsamplingstartime)
|
|
|
|
|
srdt.tempsamplingstartime = iretime; // yizhonghu 110612
|
|
|
|
|
srdt.IsReadWireTem = 1;/* add by dzf 20101110*/
|
|
|
|
|
sprintf(buf, "打开无线模块电源!当前时间%d秒,起始时间%d秒",
|
|
|
|
|
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt);
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
(int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt);
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
@ -1218,54 +1198,53 @@ void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
//if(iretime > samtime)
|
|
|
|
|
if(iretime > 155)
|
|
|
|
|
{
|
|
|
|
|
srdt.IsReadWireTem = 0;/* add by dzf 20101110*/
|
|
|
|
|
srdt.ms_dev[j].IsNeedSerial = 0;
|
|
|
|
|
//srdt.tempsamplingstartime = -1;
|
|
|
|
|
srdt.tempsamplingsucctime = -1;
|
|
|
|
|
// 关闭传感器电源
|
|
|
|
|
memset(buf, 0, sizeof(buf));
|
|
|
|
|
sprintf(buf, "关闭无线模块电源!当前时间%d秒,起始时间%d秒,采样间隔时间10",
|
|
|
|
|
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/);
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
Gm_CtrlCloseSensorsPower(j);
|
|
|
|
|
(int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/);
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
//Gm_CtrlCloseSensorsPower(j);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
//StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (RESERVE5_PROTOCOL == srdt.ms_dev[i].ProtocolIdx))
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (RESERVE5_PROTOCOL == devparam[i].ProtocolIdx))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i<MAX_SERIAL_DEV_NUM)
|
|
|
|
|
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
return;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Gm_CloseSerialPort();
|
|
|
|
|
for(j=0; j<MAX_SERIAL_PORT_NUM; j++)
|
|
|
|
|
ClearCmdFormPollCmdBuf(j);
|
|
|
|
|
sprintf(buf, "关闭串口定时器!");
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
StopTimer(GM_SERIAL_START);
|
|
|
|
|
g_usleep &= 0xFE;
|
|
|
|
|
if(0 == g_usleep)
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
//StopTimer(GM_SERIAL_START);
|
|
|
|
|
//g_usleep &= 0xFE;
|
|
|
|
|
//if(0 == g_usleep)
|
|
|
|
|
{
|
|
|
|
|
sprintf(buf, "采集数据结束模块休眠!");
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 0);
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
//if(0 == srdt.uRunMode)
|
|
|
|
|
// L1SM_SleepEnable(l1handle);
|
|
|
|
|
}
|
|
|
|
|
sprintf(buf, "usleep=%d", g_usleep);
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
//sprintf(buf, "usleep=%d", g_usleep);
|
|
|
|
|
//DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
srdt.sampling &= 0xFA;
|
|
|
|
|
if(1 == srdt.uRunMode)
|
|
|
|
|
{
|
|
|
|
|
GM_StartSerialComm((BYTE)0xFF); // yizhonghu 20110601
|
|
|
|
|
GM_StartSerialComm();
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = 4*1000/TIMER_CNT;
|
|
|
|
@ -1321,7 +1300,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
BYTE cmdidx, recvend;
|
|
|
|
|
|
|
|
|
|
pPortParam = &srdt.ms_dev[port];
|
|
|
|
|
serialport = &g_serialparam[pPortParam->UseSerialidx];
|
|
|
|
|
serialport = &serialport[pPortParam->UseSerialidx];
|
|
|
|
|
|
|
|
|
|
memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData));
|
|
|
|
|
memcpy((void*)rtumsg.MsgData, (void*)serialport->m_au8RecvBuf, pPortParam->m_iRecvLen);
|
|
|
|
@ -1332,7 +1311,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
|
|
|
|
|
//sprintf(szbuf, "摄像机地址%d,命令%02X!", uDevAddr, cmdidx);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
if(uDevAddr != pPortParam->devaddr)
|
|
|
|
|
if(uDevAddr != devparam[port].devaddr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
switch(cmdidx)
|
|
|
|
@ -1356,31 +1335,31 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
|
srdt.historyimagenum[pPortParam->CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
|
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[pPortParam->CameraChannel-1]);
|
|
|
|
|
srdt.historyimagenum[devparam[port].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
|
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
//presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel);
|
|
|
|
|
presetno = (int)rtumsg.MsgData[i+8];
|
|
|
|
|
if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
{
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
pPortParam->SerialCmdidx = 10001;
|
|
|
|
|
/* 保存图片*/
|
|
|
|
|
break;
|
|
|
|
|
//break
|
|
|
|
|
}
|
|
|
|
|
/ serialport->RevCmdFlag = 1;
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
pPortParam->SerialCmdidx = 1;
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 0x11: /* 图片数据包*/
|
|
|
|
|
if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
// if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
{
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
pPortParam->SerialCmdidx = 10001;
|
|
|
|
|
/* 保存图片*/
|
|
|
|
|
break;
|
|
|
|
|
//break;
|
|
|
|
|
}
|
|
|
|
|
i = 6;
|
|
|
|
|
iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256;
|
|
|
|
@ -1391,7 +1370,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
pPortParam->FirstCmdTimeCnt = 0;
|
|
|
|
|
if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2]))
|
|
|
|
|
{
|
|
|
|
|
/ if(1 == recvend)
|
|
|
|
|
if(1 == recvend)
|
|
|
|
|
pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/
|
|
|
|
|
else if(0xFF == recvend)
|
|
|
|
|
{
|
|
|
|
@ -1412,7 +1391,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
srdt.errorPhotoNoCnt++;
|
|
|
|
|
sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!",
|
|
|
|
|
pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt);
|
|
|
|
|
/ if(srdt.errorPhotoNoCnt > 5)
|
|
|
|
|
if(srdt.errorPhotoNoCnt > 5)
|
|
|
|
|
{
|
|
|
|
|
pPortParam->SerialCmdidx = 0;
|
|
|
|
|
srdt.RephotographCnt++;
|
|
|
|
@ -1425,11 +1404,10 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 0x03:
|
|
|
|
|
sprintf(szbuf, "设置波特率%d成功", serialport->Baud);
|
|
|
|
|
sprintf(szbuf, "设置波特率%d成功", devparam[port].baudrate);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
pPortParam->Baud = serialport->Baud;
|
|
|
|
|
//pPortParam->Baud = serialport->Baud;
|
|
|
|
|
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
|
SetConfigToMcu(UART_PARAM);
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
pPortParam->FirstCmdTimeCnt = 0;
|
|
|
|
|
break;
|
|
|
|
@ -1448,17 +1426,17 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
|
srdt.historyimagenum[pPortParam->CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
|
srdt.historyimagenum[devparam[port].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
|
//presetno = netportparam.CurPresetno[pPortParam->CameraChannel-1];
|
|
|
|
|
presetno = rtumsg.MsgData[i+8];
|
|
|
|
|
sprintf(szbuf, "读取历史图片,还有%d张历史图片!",srdt.historyimagenum[pPortParam->CameraChannel-1]);
|
|
|
|
|
sprintf(szbuf, "读取历史图片,还有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
{
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
|
netportparam.PhotosFlag = FALSE;
|
|
|
|
|
//netportparam.PhotosFlag = FALSE;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
@ -1474,9 +1452,9 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
}
|
|
|
|
|
if(0 == rtumsg.MsgData[10])
|
|
|
|
|
{
|
|
|
|
|
if(0 == srdt.historyimagenum[pPortParam->CameraChannel-1])
|
|
|
|
|
if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1])
|
|
|
|
|
{
|
|
|
|
|
netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0;
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -1486,12 +1464,11 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
netportparam.PhotosFlag = FALSE;
|
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
@ -1505,7 +1482,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
void SendCmdFormPollCmdBuf( int port )
|
|
|
|
|
{
|
|
|
|
|
char buf[64];
|
|
|
|
|
int len, idelay=0, i, ilen;
|
|
|
|
|
int len, idelay=0, i, ret;
|
|
|
|
|
SIO_PARAM_SERIAL_DEF *pPortParam;
|
|
|
|
|
//int recvlen;
|
|
|
|
|
//u_char recvbuf[300];
|
|
|
|
@ -1568,38 +1545,19 @@ void SendCmdFormPollCmdBuf( int port )
|
|
|
|
|
|
|
|
|
|
serialport[devparam[srdt.curdevidx[port]].commid].m_iRecvLen = 0; // 当发送一条新指令时,清除接收状态
|
|
|
|
|
serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 0;
|
|
|
|
|
Gm_SetSerialPortParam(port);
|
|
|
|
|
ret = Gm_SetSerialPortParam(port);
|
|
|
|
|
if(ret < 0)
|
|
|
|
|
return;
|
|
|
|
|
len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen-2, port);
|
|
|
|
|
if(len < 1)
|
|
|
|
|
{
|
|
|
|
|
rmmi_write_to_uart((kal_uint8*)"发送命令失败",strlen("发送命令失败"),KAL_FALSE);
|
|
|
|
|
rmmi_write_to_uart((kal_uint8*)"\n\r",2,KAL_FALSE);
|
|
|
|
|
rmmi_write_to_uart((kal_uint8 *)"\n\r",2,KAL_FALSE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(WDIITEMP_PROTOCOL_OLD == srdt.ms_dev[srdt.curdevidx[port]].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
sprintf(buf, "发送串口%d 装置%d命令:%s", port+1, srdt.curdevidx[port]+1,(char*)&pPortParam->PollCmd[2]);
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 0);
|
|
|
|
|
LOGE("串口%d, 发送命令失败!", port+1);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if ((gDisSunRain & 0x04) == 0x04)
|
|
|
|
|
{ /* add by dzf 20110613 控制打印信息*/
|
|
|
|
|
|
|
|
|
|
sprintf(buf, "发送串口%d 装置%d命令:", port+1, srdt.curdevidx[port]+1);
|
|
|
|
|
DebugStringPrintf(buf, strlen(buf), 0);
|
|
|
|
|
for(i=0; i<len; i+=100)
|
|
|
|
|
{
|
|
|
|
|
if(len - i > 100)
|
|
|
|
|
ilen = 100;
|
|
|
|
|
else
|
|
|
|
|
ilen = len-i;
|
|
|
|
|
memset(buf, 0,sizeof(buf));
|
|
|
|
|
Gm_OMC_UART_DebugHex(buf, ilen, (char*)&pPortParam->PollCmd[i+2]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BytestreamLOG(buf, &pPortParam->PollCmd[i+2], len, 'D');
|
|
|
|
|
}
|
|
|
|
|
pPortParam->SendCmdFlag = 1;
|
|
|
|
|
pPortParam->ReSendCmdFlag = 0;
|
|
|
|
@ -1670,34 +1628,27 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
|
sprintf(szbuf, "串口摄像机未接或故障!结束拍照!");
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
channel = srdt.ms_dev[devidx].CameraChannel;
|
|
|
|
|
channel = devparam[devidx].CameraChannel;
|
|
|
|
|
if((1>channel) || (channel >MAX_CHANNEL_NUM))
|
|
|
|
|
{
|
|
|
|
|
/* 通道号错误退出拍照流程*/;
|
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
|
sprintf(szbuf, "装置配置中,通道号配置错误!结束拍照!");
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
#if PREVENT_PIRATES_BOARD_V40
|
|
|
|
|
#else
|
|
|
|
|
//imagesize = GetCameraImageSize(channel);
|
|
|
|
|
//imagequality = netportparam.bContrast[channel-1];
|
|
|
|
|
#endif
|
|
|
|
|
//if((imagesize > 6) || (imagesize < 1))
|
|
|
|
|
// imagesize = 6;
|
|
|
|
|
packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
|
|
|
|
|
srdt.sendphotocmdcnt++;
|
|
|
|
|
srdt.imagepacketnum = 0;
|
|
|
|
|
srdt.errorPhotoNoCnt = 0;
|
|
|
|
|
cmdidx = 0x10;
|
|
|
|
|
srdt.sendphototime=(int)Gm_GetTimeSec();
|
|
|
|
|
srdt.sendphototime=(int)time(NULL);
|
|
|
|
|
}
|
|
|
|
|
else if(10000 == cmdno)/* 下发设置串口波特率命令*/
|
|
|
|
|
{
|
|
|
|
|
switch(g_serialparam[srdt.ms_dev[devidx].UseSerialidx].Baud)
|
|
|
|
|
switch(devparam[devidx].baudrate)
|
|
|
|
|
{
|
|
|
|
|
case 9600:
|
|
|
|
|
imagesize = 0x07;
|
|
|
|
@ -1719,7 +1670,7 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
sprintf(szbuf, "设置串口摄像机参数时,配置参数错误!退出设置!");
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
@ -1727,7 +1678,7 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
|
sprintf(szbuf, "设置串口摄像机参数时,15秒未收到摄像机应答!退出设置!");
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
cmdidx = 0x03;
|
|
|
|
@ -1746,7 +1697,7 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
|
{
|
|
|
|
|
cmdidx = 0x15;
|
|
|
|
|
packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
|
|
|
|
|
srdt.sendphototime=(int)Gm_GetTimeSec();
|
|
|
|
|
srdt.sendphototime=(int)time(NULL);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -1757,7 +1708,7 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
|
sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1777,7 +1728,7 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
|
|
|
|
|
|
|
|
|
|
sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
|
|
|
|
|
|
|
|
|
|
icurtime = (int)Gm_GetTimeSec();
|
|
|
|
|
icurtime = (int)time(NULL);
|
|
|
|
|
i = 0;
|
|
|
|
|
sendbuf[i++] = 0x00; /* 强制等待时间*/
|
|
|
|
|
sendbuf[i++] = 0x00; /* 强制等待时间*/
|
|
|
|
@ -1873,7 +1824,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
|
|
|
|
|
// 1.打开串口电源
|
|
|
|
|
Gm_OpenSerialPower();
|
|
|
|
|
// 2.打开串口通讯
|
|
|
|
|
Gm_OpenSerialPort();
|
|
|
|
|
Gm_OpenSerialPort(i);
|
|
|
|
|
//}
|
|
|
|
|
srdt.sampling |= 2;
|
|
|
|
|
srdt.SendStopPtzCmdTimeCnt = -1;
|
|
|
|
@ -1988,7 +1939,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
|
|
|
|
|
commandbuf[len] = (BYTE)Gm_Pelco_pXORCheck(commandbuf, len);
|
|
|
|
|
len++;
|
|
|
|
|
serialport[srdt.camerauseserial].cmdlen = len;
|
|
|
|
|
Gm_SetSerialPortBaud(srdt.camerauseserial, devparam[srdt.usecameradevidx].baudrate);
|
|
|
|
|
Gm_SetSerialPortParam(srdt.camerauseserial);
|
|
|
|
|
len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
|
|
|
|
|
if(len < 1)
|
|
|
|
|
{
|
|
|
|
@ -1998,7 +1949,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
|
|
|
|
|
{
|
|
|
|
|
sprintf(buf, "发送串口%d 像机通道%d Pelco_P命令:",
|
|
|
|
|
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
|
|
|
|
|
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf);
|
|
|
|
|
BytestreamLOG(buf, commandbuf, len, 'D');
|
|
|
|
|
}
|
|
|
|
|
ClearCmdFormPollCmdBuf(srdt.camerauseserial);
|
|
|
|
|
serialport[srdt.camerauseserial].ForceWaitCnt = 100;
|
|
|
|
@ -2039,7 +1990,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
|
|
|
|
|
#endif
|
|
|
|
|
len++;
|
|
|
|
|
serialport[srdt.camerauseserial].cmdlen = len;
|
|
|
|
|
Gm_SetSerialPortBaud(srdt.camerauseserial, devparam[srdt.usecameradevidx].baudrate);
|
|
|
|
|
Gm_SetSerialPortParam(srdt.camerauseserial);
|
|
|
|
|
len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
|
|
|
|
|
if(len < 1)
|
|
|
|
|
{
|
|
|
|
@ -2049,7 +2000,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
|
|
|
|
|
{
|
|
|
|
|
sprintf(buf, "发送串口%d 像机通道%d Pelco_D命令:",
|
|
|
|
|
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
|
|
|
|
|
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf);
|
|
|
|
|
BytestreamLOG(buf, commandbuf, len, 'D');
|
|
|
|
|
}
|
|
|
|
|
ClearCmdFormPollCmdBuf(srdt.camerauseserial);
|
|
|
|
|
serialport[srdt.camerauseserial].ForceWaitCnt = 10;
|
|
|
|
@ -2106,7 +2057,7 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
|
|
|
|
|
//char buf[128];
|
|
|
|
|
u_char *sendbuf;
|
|
|
|
|
|
|
|
|
|
sendbuf = g_serialparam[srdt.ms_dev[portno].UseSerialidx].PollCmd;
|
|
|
|
|
sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
|
|
|
|
|
|
|
|
|
|
i = 0;
|
|
|
|
|
sendbuf[i++] = 0x00; // 强制等待时间
|
|
|
|
@ -2115,12 +2066,12 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
|
|
|
|
|
sendbuf[i++] = (BYTE)0x00; // length
|
|
|
|
|
sendbuf[i++] = (BYTE)0x00; // length
|
|
|
|
|
sendbuf[i++] = 0x68;
|
|
|
|
|
sendbuf[i++] = (BYTE)srdt.ms_dev[portno].devaddr; // 传感器地址
|
|
|
|
|
sendbuf[i++] = (BYTE)devparam[portno].devaddr; // 传感器地址
|
|
|
|
|
sendbuf[i++] = cmdidx; // 命令信息0x06
|
|
|
|
|
sendbuf[i] = CalLpc((u_char *)&sendbuf[6],i-6);
|
|
|
|
|
i+= 1;
|
|
|
|
|
sendbuf[i++] = 0x16; // 信息尾
|
|
|
|
|
g_serialparam[srdt.ms_dev[portno].UseSerialidx].cmdlen = i;
|
|
|
|
|
serialport[srdt.ms_dev[portno].UseSerialidx].cmdlen = i;
|
|
|
|
|
//sprintf((char*)buf, "生成串口%d 装置%d倾角命令:", srdt.ms_dev[portno].UseSerialidx+1, portno+1);
|
|
|
|
|
//Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]);
|
|
|
|
|
}
|
|
|
|
@ -2274,68 +2225,19 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
char szbuf[64];
|
|
|
|
|
|
|
|
|
|
pPortParam = &srdt.ms_dev[commid];
|
|
|
|
|
serialport = &g_serialparam[pPortParam->UseSerialidx];
|
|
|
|
|
serialport = &serialport[pPortParam->UseSerialidx];
|
|
|
|
|
|
|
|
|
|
//取出装置地址,开始处理地址+++
|
|
|
|
|
if(0x02 == serialport->m_au8RecvBuf[5])
|
|
|
|
|
{
|
|
|
|
|
pPortParam->devaddr = serialport->m_au8RecvBuf[4];
|
|
|
|
|
devparam[commid].devaddr = serialport->m_au8RecvBuf[4];
|
|
|
|
|
//pPortParam->LinkOk = TRUE;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
#if 0
|
|
|
|
|
if(0x06 != serialport->m_au8RecvBuf[5])
|
|
|
|
|
return;
|
|
|
|
|
if(0x08 !=serialport->m_au8RecvBuf[1])
|
|
|
|
|
return;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
cmdidx = serialport->m_au8RecvBuf[5];
|
|
|
|
|
aipnt = pPortParam->SameTypeDevIdx;
|
|
|
|
|
uDevAddr = serialport->m_au8RecvBuf[4];
|
|
|
|
|
#if MINI_INTERFACE_BOARD_V20/* 2.0板子测温单独使用串口2接测温球数据*/
|
|
|
|
|
if(1==pPortParam->UseSerialidx)
|
|
|
|
|
;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(0 == srdt.IsReadWireTem)
|
|
|
|
|
{
|
|
|
|
|
if(uDevAddr != pPortParam->devaddr)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
if(0 == srdt.IsReadWireTem)
|
|
|
|
|
{
|
|
|
|
|
if(uDevAddr != pPortParam->devaddr)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
/* 增加拉力实时采样数据存储时间控制 yizhonghu 20110629*/
|
|
|
|
|
if(srdt.samplingtimeSec == 0)
|
|
|
|
|
{
|
|
|
|
|
srdt.samplingtimeSec = Gm_GetTimeSec();
|
|
|
|
|
srdt.SectimesamplingCnt[0] = 0;
|
|
|
|
|
srdt.SectimesamplingCnt[1] = 0;
|
|
|
|
|
srdt.SectimesamplingCnt[2] = 0;
|
|
|
|
|
memset(XslantSec, 0xff, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
memset(YslantSec, 0xFF, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
memset(rallyd, 0xFF, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
}
|
|
|
|
|
if(srdt.samplingtimeSec - Gm_GetTimeSec() >= 1)
|
|
|
|
|
{
|
|
|
|
|
if ((gDisSunRain & 0x20) == 0x20)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "拉力次数:%d ", srdt.SectimesamplingCnt[2]);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
}
|
|
|
|
|
srdt.samplingtimeSec = Gm_GetTimeSec();
|
|
|
|
|
srdt.SectimesamplingCnt[0] = 0;
|
|
|
|
|
srdt.SectimesamplingCnt[1] = 0;
|
|
|
|
|
srdt.SectimesamplingCnt[2] = 0;
|
|
|
|
|
memset(XslantSec, 0xff, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
memset(YslantSec, 0xFF, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
memset(rallyd, 0xFF, 6*Second_Sam_NUM*sizeof(short));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fvalua = &fvalue;
|
|
|
|
|
if(0x06 == cmdidx)
|
|
|
|
@ -2346,7 +2248,7 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if(pPortParam->recvdatacnt < 2)
|
|
|
|
|
return;
|
|
|
|
|
// ++++++++++++++++++++++++++++
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x800<<aipnt);
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x800<<aipnt);
|
|
|
|
|
|
|
|
|
|
*(BYTE*)fvalua = serialport->m_au8RecvBuf[9];
|
|
|
|
|
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[8];
|
|
|
|
@ -2361,23 +2263,22 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
slantpntmsg[aipnt][0].EuValue = fvalue*slantpntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
+slantpntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
slantpntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
if ((gDisSunRain & 0x20) == 0x20)
|
|
|
|
|
//if ((gDisSunRain & 0x20) == 0x20)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", pPortParam->devaddr, fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 0);
|
|
|
|
|
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[commid].devaddr, fvalue);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
// yizhonghu 20110629
|
|
|
|
|
XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
|
srdt.SectimesamplingCnt[0] += 1;
|
|
|
|
|
//XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
|
//srdt.SectimesamplingCnt[0] += 1;
|
|
|
|
|
|
|
|
|
|
*(BYTE*)fvalua = serialport->m_au8RecvBuf[13];
|
|
|
|
|
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[12];
|
|
|
|
|
*((BYTE*)fvalua+2) = serialport->m_au8RecvBuf[11];
|
|
|
|
|
*((BYTE*)fvalua+3) = serialport->m_au8RecvBuf[10];
|
|
|
|
|
if ((gDisSunRain & 0x20) == 0x20)
|
|
|
|
|
//if ((gDisSunRain & 0x20) == 0x20)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "Y =%0.3f ", fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 0);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
if((fvalue < -59) ||(fvalue > 59))
|
|
|
|
|
{
|
|
|
|
@ -2388,14 +2289,14 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
slantpntmsg[aipnt][1].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\
|
|
|
|
|
+slantpntmsg[aipnt][1].AiParam.EuValueDelta;
|
|
|
|
|
slantpntmsg[aipnt][1].AiState = 1;
|
|
|
|
|
// yizhonghu 20110629
|
|
|
|
|
YslantSec[aipnt][srdt.SectimesamplingCnt[1]] = (short)slantpntmsg[aipnt][1].EuValue;
|
|
|
|
|
//YslantSec[aipnt][srdt.SectimesamplingCnt[1]] = (short)slantpntmsg[aipnt][1].EuValue;
|
|
|
|
|
srdt.SectimesamplingCnt[1] += 1;
|
|
|
|
|
}
|
|
|
|
|
datanum = serialport->m_au8RecvBuf[6];
|
|
|
|
|
if((0x08 != cmdidx) && (0x09 != cmdidx))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
if(1 == srdt.IsReadWireTem)
|
|
|
|
|
{
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
@ -2408,7 +2309,7 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
pPortParam = &srdt.ms_dev[i];
|
|
|
|
|
aipnt = pPortParam->SameTypeDevIdx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
for(i = 0, j=7; (i<datanum) && (j<6+serialport->m_au8RecvBuf[1]); i++, j+=5 )
|
|
|
|
|
{
|
|
|
|
|
if(0x08 == cmdidx)
|
|
|
|
@ -2432,11 +2333,11 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
else
|
|
|
|
|
weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta;
|
|
|
|
|
weatherpntmsg[0].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x01);
|
|
|
|
|
if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x01);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "温度:%0.3f ", fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 0);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2: /*气压*/
|
|
|
|
@ -2448,11 +2349,11 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
else
|
|
|
|
|
weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta;
|
|
|
|
|
weatherpntmsg[5].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x10);
|
|
|
|
|
if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x10);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "气压:%0.3f ", fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 0);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3: /*湿度*/
|
|
|
|
@ -2464,11 +2365,11 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
else
|
|
|
|
|
weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta;
|
|
|
|
|
weatherpntmsg[1].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x02);
|
|
|
|
|
if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x02);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "湿度:%0.3f ", fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 4: /*雨量*/
|
|
|
|
@ -2484,15 +2385,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
else
|
|
|
|
|
weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta;
|
|
|
|
|
weatherpntmsg[2].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x04);
|
|
|
|
|
if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x04);
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
{
|
|
|
|
|
//fwind = fvalue/1000*0.95;
|
|
|
|
|
//if(fvalue/1000 > 25)
|
|
|
|
|
// fwind -= 1.2;
|
|
|
|
|
//sprintf(szbuf, "风速:%0.3f ", fwind);
|
|
|
|
|
sprintf(szbuf, "风速:%0.3f ", fvalue/1000);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 0);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 7: /*风向*/
|
|
|
|
@ -2504,14 +2405,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
else
|
|
|
|
|
weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta;
|
|
|
|
|
weatherpntmsg[3].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x08);
|
|
|
|
|
if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x08);
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "风向:%0.3f ", fvalue/1000);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 8: /*拉力*/
|
|
|
|
|
#if 0
|
|
|
|
|
if(RESERVE1_PROTOCOL == pPortParam->ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
leirallypntmsg[0].EuValue = fvalue*leirallypntmsg[0].AiParam.fFactor\
|
|
|
|
@ -2526,39 +2428,42 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#endif
|
|
|
|
|
pPortParam->recvdatacnt++;
|
|
|
|
|
if(pPortParam->recvdatacnt < 2)
|
|
|
|
|
break;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x040<<aipnt);
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x040<<aipnt);
|
|
|
|
|
//if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta)
|
|
|
|
|
// rallypntmsg[aipnt][0].EuValue = 0;
|
|
|
|
|
//else
|
|
|
|
|
rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
+rallypntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
rallypntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "地址%d拉力:%0.3fKg ", pPortParam->devaddr, fvalue/1000.0);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[commid].devaddr, fvalue/1000.0);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
// yizhonghu 20110629
|
|
|
|
|
rallyd[aipnt][srdt.SectimesamplingCnt[2]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
|
//rallyd[aipnt][srdt.SectimesamplingCnt[2]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
|
srdt.SectimesamplingCnt[2] += 1;
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
break;
|
|
|
|
|
case 9: /*倾角传感器X轴倾角*/
|
|
|
|
|
break;
|
|
|
|
|
case 10: /*倾角传感器Y轴倾角*/
|
|
|
|
|
break;
|
|
|
|
|
#if 0
|
|
|
|
|
case 11: /*测温球导线温度*/
|
|
|
|
|
|
|
|
|
|
fcorvalue = WireTemperatureCorrection(fvalue/100, (WORD)pPortParam->devaddr);
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
|
|
wdiitemppntmsg[aipnt][0].EuValue = fvalue*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
#else
|
|
|
|
|
//#else
|
|
|
|
|
wdiitemppntmsg[aipnt][0].EuValue = fcorvalue*100*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
wdiitemppntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
g_SelfTest.SensorsFault |= (0x100000);
|
|
|
|
|
sprintf(szbuf, "地址%d导线温度:%0.3f ", pPortParam->devaddr, fcorvalue);
|
|
|
|
@ -2671,6 +2576,8 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
sprintf(szbuf, "C相超过10mA的脉冲频次:%0.3f ", fvalue);
|
|
|
|
|
DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|