先修改多串口多装置部分

serial
huyizhong 1 year ago
parent 9f61f98cab
commit 1e8704e60e

@ -19,7 +19,7 @@
#include "SensorsProtocol.h" #include "SensorsProtocol.h"
#include <sys/time.h> #include <sys/time.h>
#include "SensorsProtocol.h" #include "SensorsProtocol.h"
#include "Eint.h" //#include "Eint.h"
SIO_PARAM_SERIAL_DEF serialport[MAX_SERIAL_PORT_NUM]; SIO_PARAM_SERIAL_DEF serialport[MAX_SERIAL_PORT_NUM];
SERIAL_PARAM devparam[MAX_SERIAL_DEV_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 rallypntmsg[6][RALLY_DATA_NUM];
AI_DEF slantpntmsg[6][SLANTANGLE_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 void * memset(void *m, int c, unsigned int n);
extern int atoi(const char *s); extern int atoi(const char *s);
//extern int Gm_GetSamplingTimeSec(void); //extern int Gm_GetSamplingTimeSec(void);
extern void Delayms(kal_uint32 time); //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 srand( unsigned int seed ); extern void srand( unsigned int seed );
extern int rand( void ); 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); sprintf(szbuf, "Close Sensors port %d Power!", port);
/* 关闭电源*/ /* 关闭电源*/
switch(port) //switch(port)
} }
@ -595,7 +563,7 @@ void Gm_OpenSensorsPower(int port)
return; return;
sprintf(szbuf, "Open Sensors port %d Power!", port); sprintf(szbuf, "Open Sensors port %d Power!", port);
/* 打开电源*/ /* 打开电源*/
switch(port) //switch(port)
} }
@ -606,7 +574,7 @@ char Gm_GetSensorsPowerState(int port)
//char szbuf[128]; //char szbuf[128];
/* 查询电源状态*/ /* 查询电源状态*/
switch(port) //switch(port)
return cstate; 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) int Gm_SetSerialPortParam(int commid)
@ -700,6 +694,7 @@ int Gm_SetSerialPortParam(int commid)
LOGE("串口%d 波特率等参数设置错误!", commid+1); LOGE("串口%d 波特率等参数设置错误!", commid+1);
return -1; return -1;
} }
return ret;
} }
// 初始化所有串口及所接传感器的配置 // 初始化所有串口及所接传感器的配置
@ -764,7 +759,7 @@ void Gm_InitSerialComm(void)
} }
LOGI("%s", szbuf); LOGI("%s", szbuf);
sprintf(szbuf, "地址%d!", srdt.ms_dev[i].devaddr); sprintf(szbuf, "地址%d!", devparam[i].devaddr);
LOGI("%s", szbuf); LOGI("%s", szbuf);
if(0 == devparam[i].IsNoInsta) if(0 == devparam[i].IsNoInsta)
sprintf(szbuf, "没有启用!"); sprintf(szbuf, "没有启用!");
@ -835,7 +830,7 @@ void FindDevUseSerialCommNo(void)
} }
} }
void GM_StartSerialComm(BYTE compid) void GM_StartSerialComm(void)
{ {
int i, j; int i, j;
char szbuf[64]; char szbuf[64];
@ -920,15 +915,15 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
srdt.RephotographCnt = 0; srdt.RephotographCnt = 0;
FindDevUseSerialCommNo(); FindDevUseSerialCommNo();
sprintf(szbuf, "sampling=%02X !", srdt.sampling); //sprintf(szbuf, "sampling=%02X !", srdt.sampling);
DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(0 == srdt.selfflag) if(0 == srdt.selfflag)
srdt.selfflag = 1; srdt.selfflag = 1;
Gm_OpenSerialPower(); Gm_OpenSerialPower();
if(0x00 == srdt.sampling) //if(0x00 == srdt.sampling)
{ //{
Gm_OpenSerialPort(); // Gm_OpenSerialPort();
} //}
if(0 == (srdt.sampling & 0x04)) if(0 == (srdt.sampling & 0x04))
{ {
srdt.sampling |= 4; srdt.sampling |= 4;
@ -945,28 +940,24 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
srdt.ms_dev[i].m_iNeedRevLength = 0; 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); //sprintf(szbuf, "装置%d, IsNoInsta=%d, 规约序号=%d", i+1, srdt.ms_dev[i].IsNoInsta, srdt.ms_dev[i].ProtocolIdx);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(1 == srdt.ms_dev[i].IsNoInsta) if(0 == devparam[i].IsNoInsta)
{ {
srdt.ms_dev[i].IsNeedSerial = 0; srdt.ms_dev[i].IsNeedSerial = 0;
continue; continue;
} }
switch(srdt.ms_dev[i].ProtocolIdx) switch(devparam[i].ProtocolIdx)
{ {
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/ case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
case PELCO_P_PROTOCOL: /* 摄像机协议*/ case PELCO_P_PROTOCOL: /* 摄像机协议*/
case PELCO_D_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; srdt.ms_dev[i].IsNeedSerial = 0;
break; break;
} }
if(channel == srdt.ms_dev[i].CameraChannel) if(channel == devparam[i].CameraChannel)
{ {
#if PREVENT_PIRATES_BOARD_V40 ;
;
#else
bCameratype = GetCameraType(channel);
#endif
} }
else else
break; break;
@ -994,8 +985,8 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
if(0x01 == flag) if(0x01 == flag)
{ {
sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!"); sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); //StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
return; return;
} }
@ -1007,6 +998,7 @@ int GM_SerialTimer(void)
GM_IsCloseSensors(); GM_IsCloseSensors();
GM_AllSerialComRecv(); GM_AllSerialComRecv();
GM_ReadWireTemAndCloseTimer(); GM_ReadWireTemAndCloseTimer();
return 1;
} }
/******************************************************************************** /********************************************************************************
@ -1092,7 +1084,7 @@ void GM_IsCloseSensors(void)
srdt.ms_dev[i].IsNeedSerial = 0; srdt.ms_dev[i].IsNeedSerial = 0;
// 关闭传感器电源 // 关闭传感器电源
LOGI("因读取装置%d数据超过20秒关闭装置%d电源!", i+1, i+1); LOGI("因读取装置%d数据超过20秒关闭装置%d电源!", i+1, i+1);
Gm_CtrlCloseSensorsPower(i); //Gm_CtrlCloseSensorsPower(i);
} }
else else
srdt.ms_dev[i].FirstCmdTimeCnt++; srdt.ms_dev[i].FirstCmdTimeCnt++;
@ -1156,60 +1148,48 @@ void GM_AllSerialComRecv(void)
*********************************************************************************/ *********************************************************************************/
void GM_ReadWireTemAndCloseTimer(void) void GM_ReadWireTemAndCloseTimer(void)
{ {
#if (SOUTHERN_POWER_GRID_V1 ||STATE_GRID_CORPORATION_1738)
int faultstate;
#endif
int i, j, iretime; int i, j, iretime;
char buf[256]; char buf[256];
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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)) 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; break;
} }
// 增加被动读取测温数据方式
if(i < MAX_SERIAL_DEV_NUM) if(i < MAX_SERIAL_DEV_NUM)
{ {
srdt.IsReadWireTem = 0;/* add by hyz 20120522*/ return; // 寻找
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
else // 关闭所有串口及电源 else // 关闭所有串口及电源
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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; break;
} }
if(i<MAX_SERIAL_DEV_NUM) if(i<MAX_SERIAL_DEV_NUM)
{ {
if(-1 == srdt.tempsamplingstartime) 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++) for(j=0; j<MAX_SERIAL_DEV_NUM; j++)
{ {
if(srdt.ms_dev[j].IsNeedSerial == 0) if(srdt.ms_dev[j].IsNeedSerial == 0)
continue; continue;
switch(srdt.ms_dev[j].ProtocolIdx) switch(devparam[j].ProtocolIdx)
{ {
case WDIITEMP_PROTOCOL_NEW: // 测温 case 7: // 测温
Gm_SetSerialPortBaud(srdt.ms_dev[j].UseSerialidx, srdt.ms_dev[j].Baud); Gm_SetSerialPortParam(srdt.ms_dev[j].UseSerialidx);
iretime = (int)Gm_GetTimeSec()-srdt.ms_dev[j].FirstCmdTimeCnt; iretime = (int)get_msec()/1000-srdt.ms_dev[j].FirstCmdTimeCnt;
//if(iretime > 35) //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秒", sprintf(buf, "打开无线模块电源!当前时间%d秒起始时间%d秒",
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt); (int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt);
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
} }
//} //}
@ -1218,54 +1198,53 @@ void GM_ReadWireTemAndCloseTimer(void)
//if(iretime > samtime) //if(iretime > samtime)
if(iretime > 155) if(iretime > 155)
{ {
srdt.IsReadWireTem = 0;/* add by dzf 20101110*/
srdt.ms_dev[j].IsNeedSerial = 0; srdt.ms_dev[j].IsNeedSerial = 0;
//srdt.tempsamplingstartime = -1; //srdt.tempsamplingstartime = -1;
srdt.tempsamplingsucctime = -1; srdt.tempsamplingsucctime = -1;
// 关闭传感器电源 // 关闭传感器电源
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
sprintf(buf, "关闭无线模块电源!当前时间%d秒起始时间%d秒采样间隔时间10", sprintf(buf, "关闭无线模块电源!当前时间%d秒起始时间%d秒采样间隔时间10",
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/); (int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/);
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
Gm_CtrlCloseSensorsPower(j); //Gm_CtrlCloseSensorsPower(j);
} }
#endif #endif
break; break;
} }
} }
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); //StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
else else
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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; break;
} }
if(i<MAX_SERIAL_DEV_NUM) if(i<MAX_SERIAL_DEV_NUM)
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); return;
else else
{ {
Gm_CloseSerialPort(); Gm_CloseSerialPort();
for(j=0; j<MAX_SERIAL_PORT_NUM; j++) for(j=0; j<MAX_SERIAL_PORT_NUM; j++)
ClearCmdFormPollCmdBuf(j); ClearCmdFormPollCmdBuf(j);
sprintf(buf, "关闭串口定时器!"); sprintf(buf, "关闭串口定时器!");
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
StopTimer(GM_SERIAL_START); //StopTimer(GM_SERIAL_START);
g_usleep &= 0xFE; //g_usleep &= 0xFE;
if(0 == g_usleep) //if(0 == g_usleep)
{ {
sprintf(buf, "采集数据结束模块休眠!"); sprintf(buf, "采集数据结束模块休眠!");
DebugStringPrintf(buf, strlen(buf), 0); LOGI("%s", buf);
//if(0 == srdt.uRunMode) //if(0 == srdt.uRunMode)
// L1SM_SleepEnable(l1handle); // L1SM_SleepEnable(l1handle);
} }
sprintf(buf, "usleep=%d", g_usleep); //sprintf(buf, "usleep=%d", g_usleep);
DebugStringPrintf(buf, strlen(buf), 1); //DebugStringPrintf(buf, strlen(buf), 1);
srdt.sampling &= 0xFA; srdt.sampling &= 0xFA;
if(1 == srdt.uRunMode) if(1 == srdt.uRunMode)
{ {
GM_StartSerialComm((BYTE)0xFF); // yizhonghu 20110601 GM_StartSerialComm();
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
{ {
srdt.ms_dev[i].FirstCmdTimeCnt = 4*1000/TIMER_CNT; srdt.ms_dev[i].FirstCmdTimeCnt = 4*1000/TIMER_CNT;
@ -1321,7 +1300,7 @@ void CameraPhotoPortDataProcess( int port)
BYTE cmdidx, recvend; BYTE cmdidx, recvend;
pPortParam = &srdt.ms_dev[port]; pPortParam = &srdt.ms_dev[port];
serialport = &g_serialparam[pPortParam->UseSerialidx]; serialport = &serialport[pPortParam->UseSerialidx];
memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData)); memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData));
memcpy((void*)rtumsg.MsgData, (void*)serialport->m_au8RecvBuf, pPortParam->m_iRecvLen); 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); //sprintf(szbuf, "摄像机地址%d,命令%02X!", uDevAddr, cmdidx);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(uDevAddr != pPortParam->devaddr) if(uDevAddr != devparam[port].devaddr)
return; return;
switch(cmdidx) 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); 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); packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
srdt.imagepacketnum = packetnum; 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);
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[pPortParam->CameraChannel-1]); sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
//presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel); //presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel);
presetno = (int)rtumsg.MsgData[i+8]; presetno = (int)rtumsg.MsgData[i+8];
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = 10001; pPortParam->SerialCmdidx = 10001;
/* 保存图片*/ /* 保存图片*/
break; //break
} }
/ serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
pPortParam->SerialCmdidx = 1; pPortParam->SerialCmdidx = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
break; break;
case 0x11: /* 图片数据包*/ case 0x11: /* 图片数据包*/
if(0 == netportparam.InitTimeFlag) // if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = 10001; pPortParam->SerialCmdidx = 10001;
/* 保存图片*/ /* 保存图片*/
break; //break;
} }
i = 6; i = 6;
iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256; iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256;
@ -1391,7 +1370,7 @@ void CameraPhotoPortDataProcess( int port)
pPortParam->FirstCmdTimeCnt = 0; pPortParam->FirstCmdTimeCnt = 0;
if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2])) if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2]))
{ {
/ if(1 == recvend) if(1 == recvend)
pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/ pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/
else if(0xFF == recvend) else if(0xFF == recvend)
{ {
@ -1412,7 +1391,7 @@ void CameraPhotoPortDataProcess( int port)
srdt.errorPhotoNoCnt++; srdt.errorPhotoNoCnt++;
sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!", sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!",
pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt); pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt);
/ if(srdt.errorPhotoNoCnt > 5) if(srdt.errorPhotoNoCnt > 5)
{ {
pPortParam->SerialCmdidx = 0; pPortParam->SerialCmdidx = 0;
srdt.RephotographCnt++; srdt.RephotographCnt++;
@ -1425,11 +1404,10 @@ void CameraPhotoPortDataProcess( int port)
} }
break; break;
case 0x03: case 0x03:
sprintf(szbuf, "设置波特率%d成功", serialport->Baud); sprintf(szbuf, "设置波特率%d成功", devparam[port].baudrate);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
pPortParam->Baud = serialport->Baud; //pPortParam->Baud = serialport->Baud;
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo; pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
SetConfigToMcu(UART_PARAM);
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
pPortParam->FirstCmdTimeCnt = 0; pPortParam->FirstCmdTimeCnt = 0;
break; 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); 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); packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
srdt.imagepacketnum = packetnum; 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 = netportparam.CurPresetno[pPortParam->CameraChannel-1];
presetno = rtumsg.MsgData[i+8]; 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); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = -1; pPortParam->SerialCmdidx = -1;
netportparam.PhotosFlag = FALSE; //netportparam.PhotosFlag = FALSE;
break; break;
} }
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
@ -1474,9 +1452,9 @@ void CameraPhotoPortDataProcess( int port)
} }
if(0 == rtumsg.MsgData[10]) 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; srdt.sampling &= 0xFB;
} }
@ -1486,12 +1464,11 @@ void CameraPhotoPortDataProcess( int port)
else else
{ {
srdt.sampling &= 0xFB; srdt.sampling &= 0xFB;
netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
} }
pPortParam->SerialCmdidx = -1; pPortParam->SerialCmdidx = -1;
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
netportparam.PhotosFlag = FALSE;
break; break;
default: default:
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
@ -1505,7 +1482,7 @@ void CameraPhotoPortDataProcess( int port)
void SendCmdFormPollCmdBuf( int port ) void SendCmdFormPollCmdBuf( int port )
{ {
char buf[64]; char buf[64];
int len, idelay=0, i, ilen; int len, idelay=0, i, ret;
SIO_PARAM_SERIAL_DEF *pPortParam; SIO_PARAM_SERIAL_DEF *pPortParam;
//int recvlen; //int recvlen;
//u_char recvbuf[300]; //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_iRecvLen = 0; // 当发送一条新指令时,清除接收状态
serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 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); len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen-2, port);
if(len < 1) if(len < 1)
{ {
rmmi_write_to_uart((kal_uint8*)"发送命令失败",strlen("发送命令失败"),KAL_FALSE); LOGE("串口%d, 发送命令失败!", port+1);
rmmi_write_to_uart((kal_uint8*)"\n\r",2,KAL_FALSE);
rmmi_write_to_uart((kal_uint8 *)"\n\r",2,KAL_FALSE);
} }
else else
{ {
if(WDIITEMP_PROTOCOL_OLD == srdt.ms_dev[srdt.curdevidx[port]].ProtocolIdx)
{ sprintf(buf, "发送串口%d 装置%d命令:", port+1, srdt.curdevidx[port]+1);
sprintf(buf, "发送串口%d 装置%d命令:%s", port+1, srdt.curdevidx[port]+1,(char*)&pPortParam->PollCmd[2]); BytestreamLOG(buf, &pPortParam->PollCmd[i+2], len, 'D');
DebugStringPrintf(buf, strlen(buf), 0);
}
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]);
}
}
}
} }
pPortParam->SendCmdFlag = 1; pPortParam->SendCmdFlag = 1;
pPortParam->ReSendCmdFlag = 0; pPortParam->ReSendCmdFlag = 0;
@ -1670,34 +1628,27 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "串口摄像机未接或故障!结束拍照!"); sprintf(szbuf, "串口摄像机未接或故障!结束拍照!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
channel = srdt.ms_dev[devidx].CameraChannel; channel = devparam[devidx].CameraChannel;
if((1>channel) || (channel >MAX_CHANNEL_NUM)) if((1>channel) || (channel >MAX_CHANNEL_NUM))
{ {
/* 通道号错误退出拍照流程*/; /* 通道号错误退出拍照流程*/;
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "装置配置中,通道号配置错误!结束拍照!"); 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; packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
srdt.sendphotocmdcnt++; srdt.sendphotocmdcnt++;
srdt.imagepacketnum = 0; srdt.imagepacketnum = 0;
srdt.errorPhotoNoCnt = 0; srdt.errorPhotoNoCnt = 0;
cmdidx = 0x10; cmdidx = 0x10;
srdt.sendphototime=(int)Gm_GetTimeSec(); srdt.sendphototime=(int)time(NULL);
} }
else if(10000 == cmdno)/* 下发设置串口波特率命令*/ else if(10000 == cmdno)/* 下发设置串口波特率命令*/
{ {
switch(g_serialparam[srdt.ms_dev[devidx].UseSerialidx].Baud) switch(devparam[devidx].baudrate)
{ {
case 9600: case 9600:
imagesize = 0x07; imagesize = 0x07;
@ -1719,7 +1670,7 @@ int FindNextCameraPhotoCommand(int devidx)
break; break;
default: default:
sprintf(szbuf, "设置串口摄像机参数时,配置参数错误!退出设置!"); sprintf(szbuf, "设置串口摄像机参数时,配置参数错误!退出设置!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo; srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo;
return -1; return -1;
} }
@ -1727,7 +1678,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "设置串口摄像机参数时15秒未收到摄像机应答!退出设置!"); sprintf(szbuf, "设置串口摄像机参数时15秒未收到摄像机应答!退出设置!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
cmdidx = 0x03; cmdidx = 0x03;
@ -1746,7 +1697,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
cmdidx = 0x15; cmdidx = 0x15;
packetsize = (WORD)MAX_PHOTO_FRAME_LEN; packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
srdt.sendphototime=(int)Gm_GetTimeSec(); srdt.sendphototime=(int)time(NULL);
} }
else else
{ {
@ -1757,7 +1708,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize); sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
} }
@ -1777,7 +1728,7 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd; sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
icurtime = (int)Gm_GetTimeSec(); icurtime = (int)time(NULL);
i = 0; i = 0;
sendbuf[i++] = 0x00; /* 强制等待时间*/ sendbuf[i++] = 0x00; /* 强制等待时间*/
sendbuf[i++] = 0x00; /* 强制等待时间*/ sendbuf[i++] = 0x00; /* 强制等待时间*/
@ -1873,7 +1824,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
// 1.打开串口电源 // 1.打开串口电源
Gm_OpenSerialPower(); Gm_OpenSerialPower();
// 2.打开串口通讯 // 2.打开串口通讯
Gm_OpenSerialPort(); Gm_OpenSerialPort(i);
//} //}
srdt.sampling |= 2; srdt.sampling |= 2;
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
@ -1988,7 +1939,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
commandbuf[len] = (BYTE)Gm_Pelco_pXORCheck(commandbuf, len); commandbuf[len] = (BYTE)Gm_Pelco_pXORCheck(commandbuf, len);
len++; len++;
serialport[srdt.camerauseserial].cmdlen = 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); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
if(len < 1) if(len < 1)
{ {
@ -1998,7 +1949,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
{ {
sprintf(buf, "发送串口%d 像机通道%d Pelco_P命令:", sprintf(buf, "发送串口%d 像机通道%d Pelco_P命令:",
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel); srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf); BytestreamLOG(buf, commandbuf, len, 'D');
} }
ClearCmdFormPollCmdBuf(srdt.camerauseserial); ClearCmdFormPollCmdBuf(srdt.camerauseserial);
serialport[srdt.camerauseserial].ForceWaitCnt = 100; serialport[srdt.camerauseserial].ForceWaitCnt = 100;
@ -2039,7 +1990,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
#endif #endif
len++; len++;
serialport[srdt.camerauseserial].cmdlen = 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); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
if(len < 1) if(len < 1)
{ {
@ -2049,7 +2000,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
{ {
sprintf(buf, "发送串口%d 像机通道%d Pelco_D命令:", sprintf(buf, "发送串口%d 像机通道%d Pelco_D命令:",
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel); srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf); BytestreamLOG(buf, commandbuf, len, 'D');
} }
ClearCmdFormPollCmdBuf(srdt.camerauseserial); ClearCmdFormPollCmdBuf(srdt.camerauseserial);
serialport[srdt.camerauseserial].ForceWaitCnt = 10; serialport[srdt.camerauseserial].ForceWaitCnt = 10;
@ -2106,7 +2057,7 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
//char buf[128]; //char buf[128];
u_char *sendbuf; u_char *sendbuf;
sendbuf = g_serialparam[srdt.ms_dev[portno].UseSerialidx].PollCmd; sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
i = 0; i = 0;
sendbuf[i++] = 0x00; // 强制等待时间 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++] = (BYTE)0x00; // length sendbuf[i++] = (BYTE)0x00; // length
sendbuf[i++] = 0x68; sendbuf[i++] = 0x68;
sendbuf[i++] = (BYTE)srdt.ms_dev[portno].devaddr; // 传感器地址 sendbuf[i++] = (BYTE)devparam[portno].devaddr; // 传感器地址
sendbuf[i++] = cmdidx; // 命令信息0x06 sendbuf[i++] = cmdidx; // 命令信息0x06
sendbuf[i] = CalLpc((u_char *)&sendbuf[6],i-6); sendbuf[i] = CalLpc((u_char *)&sendbuf[6],i-6);
i+= 1; i+= 1;
sendbuf[i++] = 0x16; // 信息尾 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); //sprintf((char*)buf, "生成串口%d 装置%d倾角命令:", srdt.ms_dev[portno].UseSerialidx+1, portno+1);
//Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]); //Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]);
} }
@ -2274,68 +2225,19 @@ void ShxyProtocolDataProcess( int commid)
char szbuf[64]; char szbuf[64];
pPortParam = &srdt.ms_dev[commid]; pPortParam = &srdt.ms_dev[commid];
serialport = &g_serialparam[pPortParam->UseSerialidx]; serialport = &serialport[pPortParam->UseSerialidx];
//取出装置地址,开始处理地址+++ //取出装置地址,开始处理地址+++
if(0x02 == serialport->m_au8RecvBuf[5]) if(0x02 == serialport->m_au8RecvBuf[5])
{ {
pPortParam->devaddr = serialport->m_au8RecvBuf[4]; devparam[commid].devaddr = serialport->m_au8RecvBuf[4];
//pPortParam->LinkOk = TRUE; //pPortParam->LinkOk = TRUE;
return; return;
} }
#if 0
if(0x06 != serialport->m_au8RecvBuf[5])
return;
if(0x08 !=serialport->m_au8RecvBuf[1])
return;
#endif
cmdidx = serialport->m_au8RecvBuf[5]; cmdidx = serialport->m_au8RecvBuf[5];
aipnt = pPortParam->SameTypeDevIdx; aipnt = pPortParam->SameTypeDevIdx;
uDevAddr = serialport->m_au8RecvBuf[4]; 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; fvalua = &fvalue;
if(0x06 == cmdidx) if(0x06 == cmdidx)
@ -2346,7 +2248,7 @@ void ShxyProtocolDataProcess( int commid)
if(pPortParam->recvdatacnt < 2) if(pPortParam->recvdatacnt < 2)
return; return;
// ++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++
g_SelfTest.SensorsFault |= (0x800<<aipnt); //g_SelfTest.SensorsFault |= (0x800<<aipnt);
*(BYTE*)fvalua = serialport->m_au8RecvBuf[9]; *(BYTE*)fvalua = serialport->m_au8RecvBuf[9];
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[8]; *((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].EuValue = fvalue*slantpntmsg[aipnt][0].AiParam.fFactor\
+slantpntmsg[aipnt][0].AiParam.EuValueDelta; +slantpntmsg[aipnt][0].AiParam.EuValueDelta;
slantpntmsg[aipnt][0].AiState = 1; slantpntmsg[aipnt][0].AiState = 1;
if ((gDisSunRain & 0x20) == 0x20) //if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", pPortParam->devaddr, fvalue); sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[commid].devaddr, fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
// yizhonghu 20110629 //XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue; //srdt.SectimesamplingCnt[0] += 1;
srdt.SectimesamplingCnt[0] += 1;
*(BYTE*)fvalua = serialport->m_au8RecvBuf[13]; *(BYTE*)fvalua = serialport->m_au8RecvBuf[13];
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[12]; *((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[12];
*((BYTE*)fvalua+2) = serialport->m_au8RecvBuf[11]; *((BYTE*)fvalua+2) = serialport->m_au8RecvBuf[11];
*((BYTE*)fvalua+3) = serialport->m_au8RecvBuf[10]; *((BYTE*)fvalua+3) = serialport->m_au8RecvBuf[10];
if ((gDisSunRain & 0x20) == 0x20) //if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "Y =%0.3f ", fvalue); sprintf(szbuf, "Y =%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
if((fvalue < -59) ||(fvalue > 59)) 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].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\
+slantpntmsg[aipnt][1].AiParam.EuValueDelta; +slantpntmsg[aipnt][1].AiParam.EuValueDelta;
slantpntmsg[aipnt][1].AiState = 1; 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; srdt.SectimesamplingCnt[1] += 1;
} }
datanum = serialport->m_au8RecvBuf[6]; datanum = serialport->m_au8RecvBuf[6];
if((0x08 != cmdidx) && (0x09 != cmdidx)) if((0x08 != cmdidx) && (0x09 != cmdidx))
return; return;
#if 0
if(1 == srdt.IsReadWireTem) if(1 == srdt.IsReadWireTem)
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
@ -2408,7 +2309,7 @@ void ShxyProtocolDataProcess( int commid)
pPortParam = &srdt.ms_dev[i]; pPortParam = &srdt.ms_dev[i];
aipnt = pPortParam->SameTypeDevIdx; aipnt = pPortParam->SameTypeDevIdx;
} }
#endif
for(i = 0, j=7; (i<datanum) && (j<6+serialport->m_au8RecvBuf[1]); i++, j+=5 ) for(i = 0, j=7; (i<datanum) && (j<6+serialport->m_au8RecvBuf[1]); i++, j+=5 )
{ {
if(0x08 == cmdidx) if(0x08 == cmdidx)
@ -2432,11 +2333,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta; weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta;
weatherpntmsg[0].AiState = 1; weatherpntmsg[0].AiState = 1;
g_SelfTest.SensorsFault |= (0x01); //g_SelfTest.SensorsFault |= (0x01);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "温度:%0.3f ", fvalue); sprintf(szbuf, "温度:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 2: /*气压*/ case 2: /*气压*/
@ -2448,11 +2349,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta; weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta;
weatherpntmsg[5].AiState = 1; weatherpntmsg[5].AiState = 1;
g_SelfTest.SensorsFault |= (0x10); //g_SelfTest.SensorsFault |= (0x10);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "气压:%0.3f ", fvalue); sprintf(szbuf, "气压:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 3: /*湿度*/ case 3: /*湿度*/
@ -2464,11 +2365,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta; weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta;
weatherpntmsg[1].AiState = 1; weatherpntmsg[1].AiState = 1;
g_SelfTest.SensorsFault |= (0x02); //g_SelfTest.SensorsFault |= (0x02);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "湿度:%0.3f ", fvalue); sprintf(szbuf, "湿度:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
break; break;
case 4: /*雨量*/ case 4: /*雨量*/
@ -2484,15 +2385,15 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta; weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta;
weatherpntmsg[2].AiState = 1; weatherpntmsg[2].AiState = 1;
g_SelfTest.SensorsFault |= (0x04); //g_SelfTest.SensorsFault |= (0x04);
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
//fwind = fvalue/1000*0.95; //fwind = fvalue/1000*0.95;
//if(fvalue/1000 > 25) //if(fvalue/1000 > 25)
// fwind -= 1.2; // fwind -= 1.2;
//sprintf(szbuf, "风速:%0.3f ", fwind); //sprintf(szbuf, "风速:%0.3f ", fwind);
sprintf(szbuf, "风速:%0.3f ", fvalue/1000); sprintf(szbuf, "风速:%0.3f ", fvalue/1000);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 7: /*风向*/ case 7: /*风向*/
@ -2504,14 +2405,15 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta; weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta;
weatherpntmsg[3].AiState = 1; weatherpntmsg[3].AiState = 1;
g_SelfTest.SensorsFault |= (0x08); //g_SelfTest.SensorsFault |= (0x08);
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
sprintf(szbuf, "风向:%0.3f ", fvalue/1000); sprintf(szbuf, "风向:%0.3f ", fvalue/1000);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
break; break;
case 8: /*拉力*/ case 8: /*拉力*/
#if 0
if(RESERVE1_PROTOCOL == pPortParam->ProtocolIdx) if(RESERVE1_PROTOCOL == pPortParam->ProtocolIdx)
{ {
leirallypntmsg[0].EuValue = fvalue*leirallypntmsg[0].AiParam.fFactor\ leirallypntmsg[0].EuValue = fvalue*leirallypntmsg[0].AiParam.fFactor\
@ -2526,39 +2428,42 @@ void ShxyProtocolDataProcess( int commid)
} }
else else
{ {
#endif
pPortParam->recvdatacnt++; pPortParam->recvdatacnt++;
if(pPortParam->recvdatacnt < 2) if(pPortParam->recvdatacnt < 2)
break; break;
g_SelfTest.SensorsFault |= (0x040<<aipnt); //g_SelfTest.SensorsFault |= (0x040<<aipnt);
//if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta) //if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta)
// rallypntmsg[aipnt][0].EuValue = 0; // rallypntmsg[aipnt][0].EuValue = 0;
//else //else
rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\ rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
+rallypntmsg[aipnt][0].AiParam.EuValueDelta; +rallypntmsg[aipnt][0].AiParam.EuValueDelta;
rallypntmsg[aipnt][0].AiState = 1; rallypntmsg[aipnt][0].AiState = 1;
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
sprintf(szbuf, "地址%d拉力:%0.3fKg ", pPortParam->devaddr, fvalue/1000.0); sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[commid].devaddr, fvalue/1000.0);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
// yizhonghu 20110629 // 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; srdt.SectimesamplingCnt[2] += 1;
} //}
break; break;
case 9: /*倾角传感器X轴倾角*/ case 9: /*倾角传感器X轴倾角*/
break; break;
case 10: /*倾角传感器Y轴倾角*/ case 10: /*倾角传感器Y轴倾角*/
break; break;
#if 0
case 11: /*测温球导线温度*/ case 11: /*测温球导线温度*/
fcorvalue = WireTemperatureCorrection(fvalue/100, (WORD)pPortParam->devaddr); fcorvalue = WireTemperatureCorrection(fvalue/100, (WORD)pPortParam->devaddr);
#if 0
wdiitemppntmsg[aipnt][0].EuValue = fvalue*wdiitemppntmsg[aipnt][0].AiParam.fFactor\ wdiitemppntmsg[aipnt][0].EuValue = fvalue*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta; +wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
#else //#else
wdiitemppntmsg[aipnt][0].EuValue = fcorvalue*100*wdiitemppntmsg[aipnt][0].AiParam.fFactor\ wdiitemppntmsg[aipnt][0].EuValue = fcorvalue*100*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta; +wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
#endif
wdiitemppntmsg[aipnt][0].AiState = 1; wdiitemppntmsg[aipnt][0].AiState = 1;
g_SelfTest.SensorsFault |= (0x100000); g_SelfTest.SensorsFault |= (0x100000);
sprintf(szbuf, "地址%d导线温度:%0.3f ", pPortParam->devaddr, fcorvalue); sprintf(szbuf, "地址%d导线温度:%0.3f ", pPortParam->devaddr, fcorvalue);
@ -2671,6 +2576,8 @@ void ShxyProtocolDataProcess( int commid)
sprintf(szbuf, "C相超过10mA的脉冲频次:%0.3f ", fvalue); sprintf(szbuf, "C相超过10mA的脉冲频次:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 1); DebugStringPrintf(szbuf, strlen(szbuf), 1);
break; break;
#endif
} }
} }
} }

@ -94,6 +94,9 @@ typedef unsigned char BYTE;
#define D_MOVE_LEFT 0x00042d00 /* 向左移动镜头(1 有效)*/ #define D_MOVE_LEFT 0x00042d00 /* 向左移动镜头(1 有效)*/
#define D_MOVE_RIGHT 0x00022d00 /* 向右移动镜头(1 有效)*/ #define D_MOVE_RIGHT 0x00022d00 /* 向右移动镜头(1 有效)*/
#define SPEED_DOME_CAMERA 0 /* 球机摄像机*/
#define SERIAL_CAMERA 2 /* 串口摄像机a*/
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, "serial_port_comm", fmt, ##args) /* 红色*/ #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, "serial_port_comm", fmt, ##args) /* 红色*/
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, "Sensors_Protocol", fmt, ##args) /* 草绿色*/ #define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, "Sensors_Protocol", fmt, ##args) /* 草绿色*/
#define LOGV(fmt, args...) __android_log_print(ANDROID_LOG_VERBOSE, "serial_port_comm", fmt, ##args)/* 白色*/ #define LOGV(fmt, args...) __android_log_print(ANDROID_LOG_VERBOSE, "serial_port_comm", fmt, ##args)/* 白色*/
@ -110,6 +113,15 @@ typedef struct
char str[MAX_STRING_LEN]; char str[MAX_STRING_LEN];
}IOT_PARAM; }IOT_PARAM;
//SDS包类型结构
typedef struct
{
BYTE PortIdx; // 信息类型
WORD MsgType; // 信息类型
int MsgLen; // 信息长度
u_char MsgData[RECVDATA_MAXLENTH];
} RTUMSG;
typedef struct typedef struct
{ {
//float fAiDead; // 数据变化死区(百分系数值,如:设置死区为5%只需赋值5即可) //float fAiDead; // 数据变化死区(百分系数值,如:设置死区为5%只需赋值5即可)
@ -221,7 +233,6 @@ typedef struct
u_char IsGprs; /* GPRS网络是否注册*/ u_char IsGprs; /* GPRS网络是否注册*/
u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/ u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/
module_type modtype; /* 切换到mod_mmi用户之前的用户名称*/
u_char CommMod; /* 通讯模式(0:自动切换通讯模式;1:手动强制使用光网通讯;2:手动强制使用GPRS通讯)*/ u_char CommMod; /* 通讯模式(0:自动切换通讯模式;1:手动强制使用光网通讯;2:手动强制使用GPRS通讯)*/
u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
@ -254,7 +265,6 @@ typedef struct
int FlagSensorsFault; /*标志字节位从低到高温度、湿度、风速、风向、 int FlagSensorsFault; /*标志字节位从低到高温度、湿度、风速、风向、
线*/ 线*/
#endif #endif
BYTE SameTypeDevNum[SENSORS_TYPE_NUM]; /* 相同类型数据传感器数量*/
int imagepacketnum; /* 串口摄像机拍照图片总包数*/ int imagepacketnum; /* 串口摄像机拍照图片总包数*/
int historyimagenum[MAX_CHANNEL_NUM]; /* 球机保存的历史图片数量*/ int historyimagenum[MAX_CHANNEL_NUM]; /* 球机保存的历史图片数量*/
#if 1 #if 1
@ -313,7 +323,7 @@ void Gm_CloseSerialPort(void);
WORD GM_SerialComSend(const unsigned char * cSendBuf, unsigned long nSendLen, int commid); WORD GM_SerialComSend(const unsigned char * cSendBuf, unsigned long nSendLen, int commid);
// 启动串口通讯 // 启动串口通讯
void GM_StartSerialComm(BYTE compid); void GM_StartSerialComm(void);
// 启动使用串口拍照 // 启动使用串口拍照
void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx); void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx);
@ -390,10 +400,10 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx);
// 上海欣影传感器协议数据处理 // 上海欣影传感器协议数据处理
void ShxyProtocolDataProcess( int commid); void ShxyProtocolDataProcess( int commid);
// 控制关闭传感器电源 // 控制关闭传感器电源
void Gm_CtrlCloseSensorsPower(int devidx); //void Gm_CtrlCloseSensorsPower(int devidx);
// 检查传感器电源是否应该关闭或打开 // 检查传感器电源是否应该关闭或打开
//void Gm_CheckSensorsPower(void); //void Gm_CheckSensorsPower(void);
void Gm_SetSerialPortBaud(int commid, UART_baudrate Baudrate); int Gm_SetSerialPortBaud(int commid);
// 得到串口波特率 // 得到串口波特率
//T_baudrate Gm_GetSerialPortBaud(UART_baudrate Baudrate); //T_baudrate Gm_GetSerialPortBaud(UART_baudrate Baudrate);

@ -661,7 +661,7 @@ Java_com_xinyingpower_testcomm_MainActivity_testSpi(
//setRS485Enable(true); //setRS485Enable(true);
//set12VEnable(true); //set12VEnable(true);
serial_port_comm(); //serial_port_comm();
//lxy modify modify //lxy modify modify
//LOGE("_test_ setRS485Enable false"); //LOGE("_test_ setRS485Enable false");

@ -19,7 +19,7 @@
#include "SensorsProtocol.h" #include "SensorsProtocol.h"
#include <sys/time.h> #include <sys/time.h>
#include "SensorsProtocol.h" #include "SensorsProtocol.h"
#include "Eint.h" //#include "Eint.h"
SIO_PARAM_SERIAL_DEF serialport[MAX_SERIAL_PORT_NUM]; SIO_PARAM_SERIAL_DEF serialport[MAX_SERIAL_PORT_NUM];
SERIAL_PARAM devparam[MAX_SERIAL_DEV_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 rallypntmsg[6][RALLY_DATA_NUM];
AI_DEF slantpntmsg[6][SLANTANGLE_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 void * memset(void *m, int c, unsigned int n);
extern int atoi(const char *s); extern int atoi(const char *s);
//extern int Gm_GetSamplingTimeSec(void); //extern int Gm_GetSamplingTimeSec(void);
extern void Delayms(kal_uint32 time); //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 srand( unsigned int seed ); extern void srand( unsigned int seed );
extern int rand( void ); 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); sprintf(szbuf, "Close Sensors port %d Power!", port);
/* 关闭电源*/ /* 关闭电源*/
switch(port) //switch(port)
} }
@ -595,7 +563,7 @@ void Gm_OpenSensorsPower(int port)
return; return;
sprintf(szbuf, "Open Sensors port %d Power!", port); sprintf(szbuf, "Open Sensors port %d Power!", port);
/* 打开电源*/ /* 打开电源*/
switch(port) //switch(port)
} }
@ -606,7 +574,7 @@ char Gm_GetSensorsPowerState(int port)
//char szbuf[128]; //char szbuf[128];
/* 查询电源状态*/ /* 查询电源状态*/
switch(port) //switch(port)
return cstate; 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) int Gm_SetSerialPortParam(int commid)
@ -700,6 +694,7 @@ int Gm_SetSerialPortParam(int commid)
LOGE("串口%d 波特率等参数设置错误!", commid+1); LOGE("串口%d 波特率等参数设置错误!", commid+1);
return -1; return -1;
} }
return ret;
} }
// 初始化所有串口及所接传感器的配置 // 初始化所有串口及所接传感器的配置
@ -764,7 +759,7 @@ void Gm_InitSerialComm(void)
} }
LOGI("%s", szbuf); LOGI("%s", szbuf);
sprintf(szbuf, "地址%d!", srdt.ms_dev[i].devaddr); sprintf(szbuf, "地址%d!", devparam[i].devaddr);
LOGI("%s", szbuf); LOGI("%s", szbuf);
if(0 == devparam[i].IsNoInsta) if(0 == devparam[i].IsNoInsta)
sprintf(szbuf, "没有启用!"); sprintf(szbuf, "没有启用!");
@ -835,7 +830,7 @@ void FindDevUseSerialCommNo(void)
} }
} }
void GM_StartSerialComm(BYTE compid) void GM_StartSerialComm(void)
{ {
int i, j; int i, j;
char szbuf[64]; char szbuf[64];
@ -920,15 +915,15 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
srdt.RephotographCnt = 0; srdt.RephotographCnt = 0;
FindDevUseSerialCommNo(); FindDevUseSerialCommNo();
sprintf(szbuf, "sampling=%02X !", srdt.sampling); //sprintf(szbuf, "sampling=%02X !", srdt.sampling);
DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(0 == srdt.selfflag) if(0 == srdt.selfflag)
srdt.selfflag = 1; srdt.selfflag = 1;
Gm_OpenSerialPower(); Gm_OpenSerialPower();
if(0x00 == srdt.sampling) //if(0x00 == srdt.sampling)
{ //{
Gm_OpenSerialPort(); // Gm_OpenSerialPort();
} //}
if(0 == (srdt.sampling & 0x04)) if(0 == (srdt.sampling & 0x04))
{ {
srdt.sampling |= 4; srdt.sampling |= 4;
@ -945,28 +940,24 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
srdt.ms_dev[i].m_iNeedRevLength = 0; 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); //sprintf(szbuf, "装置%d, IsNoInsta=%d, 规约序号=%d", i+1, srdt.ms_dev[i].IsNoInsta, srdt.ms_dev[i].ProtocolIdx);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(1 == srdt.ms_dev[i].IsNoInsta) if(0 == devparam[i].IsNoInsta)
{ {
srdt.ms_dev[i].IsNeedSerial = 0; srdt.ms_dev[i].IsNeedSerial = 0;
continue; continue;
} }
switch(srdt.ms_dev[i].ProtocolIdx) switch(devparam[i].ProtocolIdx)
{ {
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/ case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
case PELCO_P_PROTOCOL: /* 摄像机协议*/ case PELCO_P_PROTOCOL: /* 摄像机协议*/
case PELCO_D_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; srdt.ms_dev[i].IsNeedSerial = 0;
break; break;
} }
if(channel == srdt.ms_dev[i].CameraChannel) if(channel == devparam[i].CameraChannel)
{ {
#if PREVENT_PIRATES_BOARD_V40 ;
;
#else
bCameratype = GetCameraType(channel);
#endif
} }
else else
break; break;
@ -994,8 +985,8 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
if(0x01 == flag) if(0x01 == flag)
{ {
sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!"); sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); //StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
return; return;
} }
@ -1007,6 +998,7 @@ int GM_SerialTimer(void)
GM_IsCloseSensors(); GM_IsCloseSensors();
GM_AllSerialComRecv(); GM_AllSerialComRecv();
GM_ReadWireTemAndCloseTimer(); GM_ReadWireTemAndCloseTimer();
return 1;
} }
/******************************************************************************** /********************************************************************************
@ -1092,7 +1084,7 @@ void GM_IsCloseSensors(void)
srdt.ms_dev[i].IsNeedSerial = 0; srdt.ms_dev[i].IsNeedSerial = 0;
// 关闭传感器电源 // 关闭传感器电源
LOGI("因读取装置%d数据超过20秒关闭装置%d电源!", i+1, i+1); LOGI("因读取装置%d数据超过20秒关闭装置%d电源!", i+1, i+1);
Gm_CtrlCloseSensorsPower(i); //Gm_CtrlCloseSensorsPower(i);
} }
else else
srdt.ms_dev[i].FirstCmdTimeCnt++; srdt.ms_dev[i].FirstCmdTimeCnt++;
@ -1156,60 +1148,48 @@ void GM_AllSerialComRecv(void)
*********************************************************************************/ *********************************************************************************/
void GM_ReadWireTemAndCloseTimer(void) void GM_ReadWireTemAndCloseTimer(void)
{ {
#if (SOUTHERN_POWER_GRID_V1 ||STATE_GRID_CORPORATION_1738)
int faultstate;
#endif
int i, j, iretime; int i, j, iretime;
char buf[256]; char buf[256];
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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)) 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; break;
} }
// 增加被动读取测温数据方式
if(i < MAX_SERIAL_DEV_NUM) if(i < MAX_SERIAL_DEV_NUM)
{ {
srdt.IsReadWireTem = 0;/* add by hyz 20120522*/ return; // 寻找
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
else // 关闭所有串口及电源 else // 关闭所有串口及电源
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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; break;
} }
if(i<MAX_SERIAL_DEV_NUM) if(i<MAX_SERIAL_DEV_NUM)
{ {
if(-1 == srdt.tempsamplingstartime) 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++) for(j=0; j<MAX_SERIAL_DEV_NUM; j++)
{ {
if(srdt.ms_dev[j].IsNeedSerial == 0) if(srdt.ms_dev[j].IsNeedSerial == 0)
continue; continue;
switch(srdt.ms_dev[j].ProtocolIdx) switch(devparam[j].ProtocolIdx)
{ {
case WDIITEMP_PROTOCOL_NEW: // 测温 case 7: // 测温
Gm_SetSerialPortBaud(srdt.ms_dev[j].UseSerialidx, srdt.ms_dev[j].Baud); Gm_SetSerialPortParam(srdt.ms_dev[j].UseSerialidx);
iretime = (int)Gm_GetTimeSec()-srdt.ms_dev[j].FirstCmdTimeCnt; iretime = (int)get_msec()/1000-srdt.ms_dev[j].FirstCmdTimeCnt;
//if(iretime > 35) //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秒", sprintf(buf, "打开无线模块电源!当前时间%d秒起始时间%d秒",
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt); (int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt);
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
} }
//} //}
@ -1218,54 +1198,53 @@ void GM_ReadWireTemAndCloseTimer(void)
//if(iretime > samtime) //if(iretime > samtime)
if(iretime > 155) if(iretime > 155)
{ {
srdt.IsReadWireTem = 0;/* add by dzf 20101110*/
srdt.ms_dev[j].IsNeedSerial = 0; srdt.ms_dev[j].IsNeedSerial = 0;
//srdt.tempsamplingstartime = -1; //srdt.tempsamplingstartime = -1;
srdt.tempsamplingsucctime = -1; srdt.tempsamplingsucctime = -1;
// 关闭传感器电源 // 关闭传感器电源
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
sprintf(buf, "关闭无线模块电源!当前时间%d秒起始时间%d秒采样间隔时间10", sprintf(buf, "关闭无线模块电源!当前时间%d秒起始时间%d秒采样间隔时间10",
(int)Gm_GetTimeSec(), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/); (int)time(NULL), srdt.ms_dev[j].FirstCmdTimeCnt/*, samtime*/);
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
Gm_CtrlCloseSensorsPower(j); //Gm_CtrlCloseSensorsPower(j);
} }
#endif #endif
break; break;
} }
} }
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); //StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} }
else else
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) 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; break;
} }
if(i<MAX_SERIAL_DEV_NUM) if(i<MAX_SERIAL_DEV_NUM)
StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); return;
else else
{ {
Gm_CloseSerialPort(); Gm_CloseSerialPort();
for(j=0; j<MAX_SERIAL_PORT_NUM; j++) for(j=0; j<MAX_SERIAL_PORT_NUM; j++)
ClearCmdFormPollCmdBuf(j); ClearCmdFormPollCmdBuf(j);
sprintf(buf, "关闭串口定时器!"); sprintf(buf, "关闭串口定时器!");
DebugStringPrintf(buf, strlen(buf), 1); LOGI("%s", buf);
StopTimer(GM_SERIAL_START); //StopTimer(GM_SERIAL_START);
g_usleep &= 0xFE; //g_usleep &= 0xFE;
if(0 == g_usleep) //if(0 == g_usleep)
{ {
sprintf(buf, "采集数据结束模块休眠!"); sprintf(buf, "采集数据结束模块休眠!");
DebugStringPrintf(buf, strlen(buf), 0); LOGI("%s", buf);
//if(0 == srdt.uRunMode) //if(0 == srdt.uRunMode)
// L1SM_SleepEnable(l1handle); // L1SM_SleepEnable(l1handle);
} }
sprintf(buf, "usleep=%d", g_usleep); //sprintf(buf, "usleep=%d", g_usleep);
DebugStringPrintf(buf, strlen(buf), 1); //DebugStringPrintf(buf, strlen(buf), 1);
srdt.sampling &= 0xFA; srdt.sampling &= 0xFA;
if(1 == srdt.uRunMode) if(1 == srdt.uRunMode)
{ {
GM_StartSerialComm((BYTE)0xFF); // yizhonghu 20110601 GM_StartSerialComm();
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
{ {
srdt.ms_dev[i].FirstCmdTimeCnt = 4*1000/TIMER_CNT; srdt.ms_dev[i].FirstCmdTimeCnt = 4*1000/TIMER_CNT;
@ -1321,7 +1300,7 @@ void CameraPhotoPortDataProcess( int port)
BYTE cmdidx, recvend; BYTE cmdidx, recvend;
pPortParam = &srdt.ms_dev[port]; pPortParam = &srdt.ms_dev[port];
serialport = &g_serialparam[pPortParam->UseSerialidx]; serialport = &serialport[pPortParam->UseSerialidx];
memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData)); memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData));
memcpy((void*)rtumsg.MsgData, (void*)serialport->m_au8RecvBuf, pPortParam->m_iRecvLen); 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); //sprintf(szbuf, "摄像机地址%d,命令%02X!", uDevAddr, cmdidx);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(uDevAddr != pPortParam->devaddr) if(uDevAddr != devparam[port].devaddr)
return; return;
switch(cmdidx) 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); 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); packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
srdt.imagepacketnum = packetnum; 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);
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[pPortParam->CameraChannel-1]); sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
//presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel); //presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel);
presetno = (int)rtumsg.MsgData[i+8]; presetno = (int)rtumsg.MsgData[i+8];
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = 10001; pPortParam->SerialCmdidx = 10001;
/* 保存图片*/ /* 保存图片*/
break; //break
} }
/ serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
pPortParam->SerialCmdidx = 1; pPortParam->SerialCmdidx = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
break; break;
case 0x11: /* 图片数据包*/ case 0x11: /* 图片数据包*/
if(0 == netportparam.InitTimeFlag) // if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = 10001; pPortParam->SerialCmdidx = 10001;
/* 保存图片*/ /* 保存图片*/
break; //break;
} }
i = 6; i = 6;
iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256; iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256;
@ -1391,7 +1370,7 @@ void CameraPhotoPortDataProcess( int port)
pPortParam->FirstCmdTimeCnt = 0; pPortParam->FirstCmdTimeCnt = 0;
if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2])) if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2]))
{ {
/ if(1 == recvend) if(1 == recvend)
pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/ pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/
else if(0xFF == recvend) else if(0xFF == recvend)
{ {
@ -1412,7 +1391,7 @@ void CameraPhotoPortDataProcess( int port)
srdt.errorPhotoNoCnt++; srdt.errorPhotoNoCnt++;
sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!", sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!",
pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt); pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt);
/ if(srdt.errorPhotoNoCnt > 5) if(srdt.errorPhotoNoCnt > 5)
{ {
pPortParam->SerialCmdidx = 0; pPortParam->SerialCmdidx = 0;
srdt.RephotographCnt++; srdt.RephotographCnt++;
@ -1425,11 +1404,10 @@ void CameraPhotoPortDataProcess( int port)
} }
break; break;
case 0x03: case 0x03:
sprintf(szbuf, "设置波特率%d成功", serialport->Baud); sprintf(szbuf, "设置波特率%d成功", devparam[port].baudrate);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
pPortParam->Baud = serialport->Baud; //pPortParam->Baud = serialport->Baud;
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo; pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
SetConfigToMcu(UART_PARAM);
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
pPortParam->FirstCmdTimeCnt = 0; pPortParam->FirstCmdTimeCnt = 0;
break; 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); 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); packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
srdt.imagepacketnum = packetnum; 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 = netportparam.CurPresetno[pPortParam->CameraChannel-1];
presetno = rtumsg.MsgData[i+8]; 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); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
{ {
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
pPortParam->SerialCmdidx = -1; pPortParam->SerialCmdidx = -1;
netportparam.PhotosFlag = FALSE; //netportparam.PhotosFlag = FALSE;
break; break;
} }
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
@ -1474,9 +1452,9 @@ void CameraPhotoPortDataProcess( int port)
} }
if(0 == rtumsg.MsgData[10]) 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; srdt.sampling &= 0xFB;
} }
@ -1486,12 +1464,11 @@ void CameraPhotoPortDataProcess( int port)
else else
{ {
srdt.sampling &= 0xFB; srdt.sampling &= 0xFB;
netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
} }
pPortParam->SerialCmdidx = -1; pPortParam->SerialCmdidx = -1;
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
if(0 == netportparam.InitTimeFlag) //if(0 == netportparam.InitTimeFlag)
netportparam.PhotosFlag = FALSE;
break; break;
default: default:
serialport->RevCmdFlag = 1; serialport->RevCmdFlag = 1;
@ -1505,7 +1482,7 @@ void CameraPhotoPortDataProcess( int port)
void SendCmdFormPollCmdBuf( int port ) void SendCmdFormPollCmdBuf( int port )
{ {
char buf[64]; char buf[64];
int len, idelay=0, i, ilen; int len, idelay=0, i, ret;
SIO_PARAM_SERIAL_DEF *pPortParam; SIO_PARAM_SERIAL_DEF *pPortParam;
//int recvlen; //int recvlen;
//u_char recvbuf[300]; //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_iRecvLen = 0; // 当发送一条新指令时,清除接收状态
serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 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); len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen-2, port);
if(len < 1) if(len < 1)
{ {
rmmi_write_to_uart((kal_uint8*)"发送命令失败",strlen("发送命令失败"),KAL_FALSE); LOGE("串口%d, 发送命令失败!", port+1);
rmmi_write_to_uart((kal_uint8*)"\n\r",2,KAL_FALSE);
rmmi_write_to_uart((kal_uint8 *)"\n\r",2,KAL_FALSE);
} }
else else
{ {
if(WDIITEMP_PROTOCOL_OLD == srdt.ms_dev[srdt.curdevidx[port]].ProtocolIdx)
{ sprintf(buf, "发送串口%d 装置%d命令:", port+1, srdt.curdevidx[port]+1);
sprintf(buf, "发送串口%d 装置%d命令:%s", port+1, srdt.curdevidx[port]+1,(char*)&pPortParam->PollCmd[2]); BytestreamLOG(buf, &pPortParam->PollCmd[i+2], len, 'D');
DebugStringPrintf(buf, strlen(buf), 0);
}
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]);
}
}
}
} }
pPortParam->SendCmdFlag = 1; pPortParam->SendCmdFlag = 1;
pPortParam->ReSendCmdFlag = 0; pPortParam->ReSendCmdFlag = 0;
@ -1670,34 +1628,27 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "串口摄像机未接或故障!结束拍照!"); sprintf(szbuf, "串口摄像机未接或故障!结束拍照!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
channel = srdt.ms_dev[devidx].CameraChannel; channel = devparam[devidx].CameraChannel;
if((1>channel) || (channel >MAX_CHANNEL_NUM)) if((1>channel) || (channel >MAX_CHANNEL_NUM))
{ {
/* 通道号错误退出拍照流程*/; /* 通道号错误退出拍照流程*/;
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "装置配置中,通道号配置错误!结束拍照!"); 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; packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
srdt.sendphotocmdcnt++; srdt.sendphotocmdcnt++;
srdt.imagepacketnum = 0; srdt.imagepacketnum = 0;
srdt.errorPhotoNoCnt = 0; srdt.errorPhotoNoCnt = 0;
cmdidx = 0x10; cmdidx = 0x10;
srdt.sendphototime=(int)Gm_GetTimeSec(); srdt.sendphototime=(int)time(NULL);
} }
else if(10000 == cmdno)/* 下发设置串口波特率命令*/ else if(10000 == cmdno)/* 下发设置串口波特率命令*/
{ {
switch(g_serialparam[srdt.ms_dev[devidx].UseSerialidx].Baud) switch(devparam[devidx].baudrate)
{ {
case 9600: case 9600:
imagesize = 0x07; imagesize = 0x07;
@ -1719,7 +1670,7 @@ int FindNextCameraPhotoCommand(int devidx)
break; break;
default: default:
sprintf(szbuf, "设置串口摄像机参数时,配置参数错误!退出设置!"); sprintf(szbuf, "设置串口摄像机参数时,配置参数错误!退出设置!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo; srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo;
return -1; return -1;
} }
@ -1727,7 +1678,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "设置串口摄像机参数时15秒未收到摄像机应答!退出设置!"); sprintf(szbuf, "设置串口摄像机参数时15秒未收到摄像机应答!退出设置!");
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
cmdidx = 0x03; cmdidx = 0x03;
@ -1746,7 +1697,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
cmdidx = 0x15; cmdidx = 0x15;
packetsize = (WORD)MAX_PHOTO_FRAME_LEN; packetsize = (WORD)MAX_PHOTO_FRAME_LEN;
srdt.sendphototime=(int)Gm_GetTimeSec(); srdt.sendphototime=(int)time(NULL);
} }
else else
{ {
@ -1757,7 +1708,7 @@ int FindNextCameraPhotoCommand(int devidx)
{ {
srdt.ms_dev[devidx].SerialCmdidx = -1; srdt.ms_dev[devidx].SerialCmdidx = -1;
sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize); sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGI("%s", szbuf);
return -1; return -1;
} }
} }
@ -1777,7 +1728,7 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd; sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
icurtime = (int)Gm_GetTimeSec(); icurtime = (int)time(NULL);
i = 0; i = 0;
sendbuf[i++] = 0x00; /* 强制等待时间*/ sendbuf[i++] = 0x00; /* 强制等待时间*/
sendbuf[i++] = 0x00; /* 强制等待时间*/ sendbuf[i++] = 0x00; /* 强制等待时间*/
@ -1873,7 +1824,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
// 1.打开串口电源 // 1.打开串口电源
Gm_OpenSerialPower(); Gm_OpenSerialPower();
// 2.打开串口通讯 // 2.打开串口通讯
Gm_OpenSerialPort(); Gm_OpenSerialPort(i);
//} //}
srdt.sampling |= 2; srdt.sampling |= 2;
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
@ -1988,7 +1939,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
commandbuf[len] = (BYTE)Gm_Pelco_pXORCheck(commandbuf, len); commandbuf[len] = (BYTE)Gm_Pelco_pXORCheck(commandbuf, len);
len++; len++;
serialport[srdt.camerauseserial].cmdlen = 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); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
if(len < 1) if(len < 1)
{ {
@ -1998,7 +1949,7 @@ void Gm_SendPelco_pCommand( DWORD cmdtype)
{ {
sprintf(buf, "发送串口%d 像机通道%d Pelco_P命令:", sprintf(buf, "发送串口%d 像机通道%d Pelco_P命令:",
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel); srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf); BytestreamLOG(buf, commandbuf, len, 'D');
} }
ClearCmdFormPollCmdBuf(srdt.camerauseserial); ClearCmdFormPollCmdBuf(srdt.camerauseserial);
serialport[srdt.camerauseserial].ForceWaitCnt = 100; serialport[srdt.camerauseserial].ForceWaitCnt = 100;
@ -2039,7 +1990,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
#endif #endif
len++; len++;
serialport[srdt.camerauseserial].cmdlen = 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); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
if(len < 1) if(len < 1)
{ {
@ -2049,7 +2000,7 @@ void Gm_SendPelco_DCommand( DWORD cmdtype)
{ {
sprintf(buf, "发送串口%d 像机通道%d Pelco_D命令:", sprintf(buf, "发送串口%d 像机通道%d Pelco_D命令:",
srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel); srdt.camerauseserial+1, devparam[srdt.usecameradevidx].CameraChannel);
Gm_OMC_UART_DebugHex(buf, len, (char*)commandbuf); BytestreamLOG(buf, commandbuf, len, 'D');
} }
ClearCmdFormPollCmdBuf(srdt.camerauseserial); ClearCmdFormPollCmdBuf(srdt.camerauseserial);
serialport[srdt.camerauseserial].ForceWaitCnt = 10; serialport[srdt.camerauseserial].ForceWaitCnt = 10;
@ -2106,7 +2057,7 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
//char buf[128]; //char buf[128];
u_char *sendbuf; u_char *sendbuf;
sendbuf = g_serialparam[srdt.ms_dev[portno].UseSerialidx].PollCmd; sendbuf = serialport[srdt.ms_dev[portno].UseSerialidx].PollCmd;
i = 0; i = 0;
sendbuf[i++] = 0x00; // 强制等待时间 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++] = (BYTE)0x00; // length sendbuf[i++] = (BYTE)0x00; // length
sendbuf[i++] = 0x68; sendbuf[i++] = 0x68;
sendbuf[i++] = (BYTE)srdt.ms_dev[portno].devaddr; // 传感器地址 sendbuf[i++] = (BYTE)devparam[portno].devaddr; // 传感器地址
sendbuf[i++] = cmdidx; // 命令信息0x06 sendbuf[i++] = cmdidx; // 命令信息0x06
sendbuf[i] = CalLpc((u_char *)&sendbuf[6],i-6); sendbuf[i] = CalLpc((u_char *)&sendbuf[6],i-6);
i+= 1; i+= 1;
sendbuf[i++] = 0x16; // 信息尾 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); //sprintf((char*)buf, "生成串口%d 装置%d倾角命令:", srdt.ms_dev[portno].UseSerialidx+1, portno+1);
//Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]); //Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]);
} }
@ -2274,68 +2225,19 @@ void ShxyProtocolDataProcess( int commid)
char szbuf[64]; char szbuf[64];
pPortParam = &srdt.ms_dev[commid]; pPortParam = &srdt.ms_dev[commid];
serialport = &g_serialparam[pPortParam->UseSerialidx]; serialport = &serialport[pPortParam->UseSerialidx];
//取出装置地址,开始处理地址+++ //取出装置地址,开始处理地址+++
if(0x02 == serialport->m_au8RecvBuf[5]) if(0x02 == serialport->m_au8RecvBuf[5])
{ {
pPortParam->devaddr = serialport->m_au8RecvBuf[4]; devparam[commid].devaddr = serialport->m_au8RecvBuf[4];
//pPortParam->LinkOk = TRUE; //pPortParam->LinkOk = TRUE;
return; return;
} }
#if 0
if(0x06 != serialport->m_au8RecvBuf[5])
return;
if(0x08 !=serialport->m_au8RecvBuf[1])
return;
#endif
cmdidx = serialport->m_au8RecvBuf[5]; cmdidx = serialport->m_au8RecvBuf[5];
aipnt = pPortParam->SameTypeDevIdx; aipnt = pPortParam->SameTypeDevIdx;
uDevAddr = serialport->m_au8RecvBuf[4]; 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; fvalua = &fvalue;
if(0x06 == cmdidx) if(0x06 == cmdidx)
@ -2346,7 +2248,7 @@ void ShxyProtocolDataProcess( int commid)
if(pPortParam->recvdatacnt < 2) if(pPortParam->recvdatacnt < 2)
return; return;
// ++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++
g_SelfTest.SensorsFault |= (0x800<<aipnt); //g_SelfTest.SensorsFault |= (0x800<<aipnt);
*(BYTE*)fvalua = serialport->m_au8RecvBuf[9]; *(BYTE*)fvalua = serialport->m_au8RecvBuf[9];
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[8]; *((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].EuValue = fvalue*slantpntmsg[aipnt][0].AiParam.fFactor\
+slantpntmsg[aipnt][0].AiParam.EuValueDelta; +slantpntmsg[aipnt][0].AiParam.EuValueDelta;
slantpntmsg[aipnt][0].AiState = 1; slantpntmsg[aipnt][0].AiState = 1;
if ((gDisSunRain & 0x20) == 0x20) //if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", pPortParam->devaddr, fvalue); sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[commid].devaddr, fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
// yizhonghu 20110629 //XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue; //srdt.SectimesamplingCnt[0] += 1;
srdt.SectimesamplingCnt[0] += 1;
*(BYTE*)fvalua = serialport->m_au8RecvBuf[13]; *(BYTE*)fvalua = serialport->m_au8RecvBuf[13];
*((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[12]; *((BYTE*)fvalua+1) = serialport->m_au8RecvBuf[12];
*((BYTE*)fvalua+2) = serialport->m_au8RecvBuf[11]; *((BYTE*)fvalua+2) = serialport->m_au8RecvBuf[11];
*((BYTE*)fvalua+3) = serialport->m_au8RecvBuf[10]; *((BYTE*)fvalua+3) = serialport->m_au8RecvBuf[10];
if ((gDisSunRain & 0x20) == 0x20) //if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "Y =%0.3f ", fvalue); sprintf(szbuf, "Y =%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
if((fvalue < -59) ||(fvalue > 59)) 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].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\
+slantpntmsg[aipnt][1].AiParam.EuValueDelta; +slantpntmsg[aipnt][1].AiParam.EuValueDelta;
slantpntmsg[aipnt][1].AiState = 1; 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; srdt.SectimesamplingCnt[1] += 1;
} }
datanum = serialport->m_au8RecvBuf[6]; datanum = serialport->m_au8RecvBuf[6];
if((0x08 != cmdidx) && (0x09 != cmdidx)) if((0x08 != cmdidx) && (0x09 != cmdidx))
return; return;
#if 0
if(1 == srdt.IsReadWireTem) if(1 == srdt.IsReadWireTem)
{ {
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
@ -2408,7 +2309,7 @@ void ShxyProtocolDataProcess( int commid)
pPortParam = &srdt.ms_dev[i]; pPortParam = &srdt.ms_dev[i];
aipnt = pPortParam->SameTypeDevIdx; aipnt = pPortParam->SameTypeDevIdx;
} }
#endif
for(i = 0, j=7; (i<datanum) && (j<6+serialport->m_au8RecvBuf[1]); i++, j+=5 ) for(i = 0, j=7; (i<datanum) && (j<6+serialport->m_au8RecvBuf[1]); i++, j+=5 )
{ {
if(0x08 == cmdidx) if(0x08 == cmdidx)
@ -2432,11 +2333,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta; weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta;
weatherpntmsg[0].AiState = 1; weatherpntmsg[0].AiState = 1;
g_SelfTest.SensorsFault |= (0x01); //g_SelfTest.SensorsFault |= (0x01);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "温度:%0.3f ", fvalue); sprintf(szbuf, "温度:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 2: /*气压*/ case 2: /*气压*/
@ -2448,11 +2349,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta; weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta;
weatherpntmsg[5].AiState = 1; weatherpntmsg[5].AiState = 1;
g_SelfTest.SensorsFault |= (0x10); //g_SelfTest.SensorsFault |= (0x10);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "气压:%0.3f ", fvalue); sprintf(szbuf, "气压:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 3: /*湿度*/ case 3: /*湿度*/
@ -2464,11 +2365,11 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta; weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta;
weatherpntmsg[1].AiState = 1; weatherpntmsg[1].AiState = 1;
g_SelfTest.SensorsFault |= (0x02); //g_SelfTest.SensorsFault |= (0x02);
if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
{ {
sprintf(szbuf, "湿度:%0.3f ", fvalue); sprintf(szbuf, "湿度:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
break; break;
case 4: /*雨量*/ case 4: /*雨量*/
@ -2484,15 +2385,15 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta; weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta;
weatherpntmsg[2].AiState = 1; weatherpntmsg[2].AiState = 1;
g_SelfTest.SensorsFault |= (0x04); //g_SelfTest.SensorsFault |= (0x04);
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
//fwind = fvalue/1000*0.95; //fwind = fvalue/1000*0.95;
//if(fvalue/1000 > 25) //if(fvalue/1000 > 25)
// fwind -= 1.2; // fwind -= 1.2;
//sprintf(szbuf, "风速:%0.3f ", fwind); //sprintf(szbuf, "风速:%0.3f ", fwind);
sprintf(szbuf, "风速:%0.3f ", fvalue/1000); sprintf(szbuf, "风速:%0.3f ", fvalue/1000);
DebugStringPrintf(szbuf, strlen(szbuf), 0); LOGV("%s", szbuf);
} }
break; break;
case 7: /*风向*/ case 7: /*风向*/
@ -2504,14 +2405,15 @@ void ShxyProtocolDataProcess( int commid)
else else
weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta; weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta;
weatherpntmsg[3].AiState = 1; weatherpntmsg[3].AiState = 1;
g_SelfTest.SensorsFault |= (0x08); //g_SelfTest.SensorsFault |= (0x08);
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
sprintf(szbuf, "风向:%0.3f ", fvalue/1000); sprintf(szbuf, "风向:%0.3f ", fvalue/1000);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
break; break;
case 8: /*拉力*/ case 8: /*拉力*/
#if 0
if(RESERVE1_PROTOCOL == pPortParam->ProtocolIdx) if(RESERVE1_PROTOCOL == pPortParam->ProtocolIdx)
{ {
leirallypntmsg[0].EuValue = fvalue*leirallypntmsg[0].AiParam.fFactor\ leirallypntmsg[0].EuValue = fvalue*leirallypntmsg[0].AiParam.fFactor\
@ -2526,39 +2428,42 @@ void ShxyProtocolDataProcess( int commid)
} }
else else
{ {
#endif
pPortParam->recvdatacnt++; pPortParam->recvdatacnt++;
if(pPortParam->recvdatacnt < 2) if(pPortParam->recvdatacnt < 2)
break; break;
g_SelfTest.SensorsFault |= (0x040<<aipnt); //g_SelfTest.SensorsFault |= (0x040<<aipnt);
//if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta) //if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta)
// rallypntmsg[aipnt][0].EuValue = 0; // rallypntmsg[aipnt][0].EuValue = 0;
//else //else
rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\ rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
+rallypntmsg[aipnt][0].AiParam.EuValueDelta; +rallypntmsg[aipnt][0].AiParam.EuValueDelta;
rallypntmsg[aipnt][0].AiState = 1; rallypntmsg[aipnt][0].AiState = 1;
if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
{ {
sprintf(szbuf, "地址%d拉力:%0.3fKg ", pPortParam->devaddr, fvalue/1000.0); sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[commid].devaddr, fvalue/1000.0);
DebugStringPrintf(szbuf, strlen(szbuf), 1); LOGV("%s", szbuf);
} }
// yizhonghu 20110629 // 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; srdt.SectimesamplingCnt[2] += 1;
} //}
break; break;
case 9: /*倾角传感器X轴倾角*/ case 9: /*倾角传感器X轴倾角*/
break; break;
case 10: /*倾角传感器Y轴倾角*/ case 10: /*倾角传感器Y轴倾角*/
break; break;
#if 0
case 11: /*测温球导线温度*/ case 11: /*测温球导线温度*/
fcorvalue = WireTemperatureCorrection(fvalue/100, (WORD)pPortParam->devaddr); fcorvalue = WireTemperatureCorrection(fvalue/100, (WORD)pPortParam->devaddr);
#if 0
wdiitemppntmsg[aipnt][0].EuValue = fvalue*wdiitemppntmsg[aipnt][0].AiParam.fFactor\ wdiitemppntmsg[aipnt][0].EuValue = fvalue*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta; +wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
#else //#else
wdiitemppntmsg[aipnt][0].EuValue = fcorvalue*100*wdiitemppntmsg[aipnt][0].AiParam.fFactor\ wdiitemppntmsg[aipnt][0].EuValue = fcorvalue*100*wdiitemppntmsg[aipnt][0].AiParam.fFactor\
+wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta; +wdiitemppntmsg[aipnt][0].AiParam.EuValueDelta;
#endif
wdiitemppntmsg[aipnt][0].AiState = 1; wdiitemppntmsg[aipnt][0].AiState = 1;
g_SelfTest.SensorsFault |= (0x100000); g_SelfTest.SensorsFault |= (0x100000);
sprintf(szbuf, "地址%d导线温度:%0.3f ", pPortParam->devaddr, fcorvalue); sprintf(szbuf, "地址%d导线温度:%0.3f ", pPortParam->devaddr, fcorvalue);
@ -2671,6 +2576,8 @@ void ShxyProtocolDataProcess( int commid)
sprintf(szbuf, "C相超过10mA的脉冲频次:%0.3f ", fvalue); sprintf(szbuf, "C相超过10mA的脉冲频次:%0.3f ", fvalue);
DebugStringPrintf(szbuf, strlen(szbuf), 1); DebugStringPrintf(szbuf, strlen(szbuf), 1);
break; break;
#endif
} }
} }
} }

@ -94,6 +94,9 @@ typedef unsigned char BYTE;
#define D_MOVE_LEFT 0x00042d00 /* 向左移动镜头(1 有效)*/ #define D_MOVE_LEFT 0x00042d00 /* 向左移动镜头(1 有效)*/
#define D_MOVE_RIGHT 0x00022d00 /* 向右移动镜头(1 有效)*/ #define D_MOVE_RIGHT 0x00022d00 /* 向右移动镜头(1 有效)*/
#define SPEED_DOME_CAMERA 0 /* 球机摄像机*/
#define SERIAL_CAMERA 2 /* 串口摄像机a*/
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, "serial_port_comm", fmt, ##args) /* 红色*/ #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, "serial_port_comm", fmt, ##args) /* 红色*/
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, "Sensors_Protocol", fmt, ##args) /* 草绿色*/ #define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, "Sensors_Protocol", fmt, ##args) /* 草绿色*/
#define LOGV(fmt, args...) __android_log_print(ANDROID_LOG_VERBOSE, "serial_port_comm", fmt, ##args)/* 白色*/ #define LOGV(fmt, args...) __android_log_print(ANDROID_LOG_VERBOSE, "serial_port_comm", fmt, ##args)/* 白色*/
@ -110,6 +113,15 @@ typedef struct
char str[MAX_STRING_LEN]; char str[MAX_STRING_LEN];
}IOT_PARAM; }IOT_PARAM;
//SDS包类型结构
typedef struct
{
BYTE PortIdx; // 信息类型
WORD MsgType; // 信息类型
int MsgLen; // 信息长度
u_char MsgData[RECVDATA_MAXLENTH];
} RTUMSG;
typedef struct typedef struct
{ {
//float fAiDead; // 数据变化死区(百分系数值,如:设置死区为5%只需赋值5即可) //float fAiDead; // 数据变化死区(百分系数值,如:设置死区为5%只需赋值5即可)
@ -221,7 +233,6 @@ typedef struct
u_char IsGprs; /* GPRS网络是否注册*/ u_char IsGprs; /* GPRS网络是否注册*/
u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/ u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/
module_type modtype; /* 切换到mod_mmi用户之前的用户名称*/
u_char CommMod; /* 通讯模式(0:自动切换通讯模式;1:手动强制使用光网通讯;2:手动强制使用GPRS通讯)*/ u_char CommMod; /* 通讯模式(0:自动切换通讯模式;1:手动强制使用光网通讯;2:手动强制使用GPRS通讯)*/
u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
@ -254,7 +265,6 @@ typedef struct
int FlagSensorsFault; /*标志字节位从低到高温度、湿度、风速、风向、 int FlagSensorsFault; /*标志字节位从低到高温度、湿度、风速、风向、
线*/ 线*/
#endif #endif
BYTE SameTypeDevNum[SENSORS_TYPE_NUM]; /* 相同类型数据传感器数量*/
int imagepacketnum; /* 串口摄像机拍照图片总包数*/ int imagepacketnum; /* 串口摄像机拍照图片总包数*/
int historyimagenum[MAX_CHANNEL_NUM]; /* 球机保存的历史图片数量*/ int historyimagenum[MAX_CHANNEL_NUM]; /* 球机保存的历史图片数量*/
#if 1 #if 1
@ -313,7 +323,7 @@ void Gm_CloseSerialPort(void);
WORD GM_SerialComSend(const unsigned char * cSendBuf, unsigned long nSendLen, int commid); WORD GM_SerialComSend(const unsigned char * cSendBuf, unsigned long nSendLen, int commid);
// 启动串口通讯 // 启动串口通讯
void GM_StartSerialComm(BYTE compid); void GM_StartSerialComm(void);
// 启动使用串口拍照 // 启动使用串口拍照
void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx); void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx);
@ -390,10 +400,10 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx);
// 上海欣影传感器协议数据处理 // 上海欣影传感器协议数据处理
void ShxyProtocolDataProcess( int commid); void ShxyProtocolDataProcess( int commid);
// 控制关闭传感器电源 // 控制关闭传感器电源
void Gm_CtrlCloseSensorsPower(int devidx); //void Gm_CtrlCloseSensorsPower(int devidx);
// 检查传感器电源是否应该关闭或打开 // 检查传感器电源是否应该关闭或打开
//void Gm_CheckSensorsPower(void); //void Gm_CheckSensorsPower(void);
void Gm_SetSerialPortBaud(int commid, UART_baudrate Baudrate); int Gm_SetSerialPortBaud(int commid);
// 得到串口波特率 // 得到串口波特率
//T_baudrate Gm_GetSerialPortBaud(UART_baudrate Baudrate); //T_baudrate Gm_GetSerialPortBaud(UART_baudrate Baudrate);

Loading…
Cancel
Save