增加单独接入启动摄像机流程

serial
huyizhong 1 year ago
parent a81cc00253
commit 65473d7a6e

@ -739,7 +739,6 @@ void Gm_InitSerialComm_Test()
{ {
int i, j; int i, j;
srdt.sampling = 0;
srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型 srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
for(i=0; i<MAX_SERIAL_PORT_NUM; i++) for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
{ {
@ -977,7 +976,6 @@ void Gm_InitSerialComm()
Gm_InitSerialComm_Test(); Gm_InitSerialComm_Test();
// srdt 配置 // srdt 配置
//srdt.sampling = 0;
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型 //srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
//srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数 //srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数
//srdt.uRunMode = 0; //srdt.uRunMode = 0;
@ -996,48 +994,50 @@ void Gm_InitSerialComm()
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
{ {
memset(szbuf, 0, sizeof(szbuf)); memset(szbuf, 0, sizeof(szbuf));
switch(devparam[i].ProtocolIdx) switch (devparam[i].ProtocolIdx)
{ {
case 0: case 0:
sprintf(szbuf, "传感器%d没有接!", i+1); sprintf(szbuf, "传感器%d没有接!", i + 1);
break; break;
case WEATHER_PROTOCOL: case WEATHER_PROTOCOL:
sprintf(szbuf, "传感器%d接的是气象传感器!", i+1); sprintf(szbuf, "传感器%d接的是气象传感器!", i + 1);
break; break;
case SERIALCAMERA_PROTOCOL: case SERIALCAMERA_PROTOCOL:
sprintf(szbuf, "传感器%d接的是串口摄像机!", i+1); sprintf(szbuf, "传感器%d接的是串口摄像机!", i + 1);
break; break;
case PELCO_P_PROTOCOL: case PELCO_P_PROTOCOL:
sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i+1); sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i + 1);
break; break;
case SLANT_PROTOCOL: case SLANT_PROTOCOL:
sprintf(szbuf, "传感器%d接的是直川倾角!", i+1); sprintf(szbuf, "传感器%d接的是倾角!", i + 1);
break; break;
case WIND_PROTOCOL: case WIND_PROTOCOL:
sprintf(szbuf, "传感器%d接的是风速风向传感器", i+1); sprintf(szbuf, "传感器%d接的是风速风向传感器", i + 1);
break; break;
case RALLY_PROTOCOL: case RALLY_PROTOCOL:
sprintf(szbuf, "传感器%d接的是拉力!", i+1); sprintf(szbuf, "传感器%d接的是拉力!", i + 1);
break; break;
case PELCO_D_PROTOCOL: case PELCO_D_PROTOCOL:
sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i+1); sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i + 1);
break; break;
case RESERVE5_PROTOCOL: case RESERVE5_PROTOCOL:
sprintf(szbuf, "传感器%d接的是加密芯片", i+1); sprintf(szbuf, "传感器%d接的是加密芯片", i + 1);
break; break;
default: default:
sprintf(szbuf, "传感器%d没有接!", i+1); sprintf(szbuf, "传感器%d没有接!", i + 1);
break; break;
} }
LOGI("%s", szbuf); //LOGI("%s", szbuf);
sprintf(szbuf, "地址%d!", devparam[i].devaddr); sprintf(szbuf, "%s 地址%d!", szbuf, devparam[i].devaddr);
LOGI("%s", szbuf); //LOGI("%s", szbuf);
if(0 == devparam[i].IsNoInsta) if (0 == devparam[i].IsNoInsta)
sprintf(szbuf, "没有启用!"); sprintf(szbuf, "没有启用!");
else else
sprintf(szbuf, "已启用!"); {
LOGI("%s", szbuf); sprintf(szbuf, "%s 已启用!", szbuf);
LOGI("%s", szbuf);
}
} }
#endif #endif
#if 0 #if 0
@ -1104,47 +1104,79 @@ void FindDevUseSerialCommNo()
void GM_StartSerialComm() void GM_StartSerialComm()
{ {
int i, j; int i, j, commid;
char szbuf[64]; char szbuf[64];
long polltime=0; long polltime=0;
// 测试使用初始化配置 // 测试使用初始化配置
Gm_InitSerialComm(); Gm_InitSerialComm();
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx)); // 此处不能对轮询设备标识清零否则如果先起摄像机就会导致poll乱掉
//memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx));
//Gm_OpenSerialPower(); /* 不在这使用*/ //Gm_OpenSerialPower(); /* 不在这使用*/
srdt.sampling[0] = 1;
FindDevUseSerialCommNo(); FindDevUseSerialCommNo();
//Gm_InitSensorsIsUse(); //Gm_InitSensorsIsUse();
// 初始化串口使用状态 // 初始化串口使用状态(需要考虑不同时间启用了摄像机使用)
for(i=0; i<MAX_SERIAL_PORT_NUM; i++) if(0 == srdt.sampling[1])
{
for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
{
serialport[i].m_iRevStatus = 0;
serialport[i].m_iRecvLen = 0;
serialport[i].m_iNeedRevLength = 0;
serialport[i].fd = -1;
ClearCmdAllFlag(i);
}
}
else
{ {
serialport[i].m_iRevStatus = 0; for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
serialport[i].m_iRecvLen = 0; {
serialport[i].m_iNeedRevLength = 0; for(j=0; j<MAX_SERIAL_DEV_NUM; j++)
serialport[i].fd = -1; {
ClearCmdAllFlag(i); if(((PELCO_D_PROTOCOL == devparam[i].ProtocolIdx) ||(PELCO_P_PROTOCOL == devparam[i].ProtocolIdx)\
||(SERIALCAMERA_PROTOCOL == devparam[i].ProtocolIdx)) &&(1 == devparam[i].IsNoInsta))
break;
}
if(j < MAX_SERIAL_DEV_NUM)
continue;
serialport[i].m_iRevStatus = 0;
serialport[i].m_iRecvLen = 0;
serialport[i].m_iNeedRevLength = 0;
serialport[i].fd = -1;
ClearCmdAllFlag(i);
}
} }
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
{ {
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec(); if(0 == devparam[i].IsNoInsta)
{
srdt.ms_dev[i].IsNeedSerial = 0;
continue;
}
memset(szbuf, 0, sizeof(szbuf)); memset(szbuf, 0, sizeof(szbuf));
switch(devparam[i].ProtocolIdx) switch(devparam[i].ProtocolIdx)
{ {
case WEATHER_PROTOCOL: // 气象 case WEATHER_PROTOCOL: // 气象
sprintf(szbuf, "气象"); sprintf(szbuf, "气象");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case RALLY_PROTOCOL: /* 拉力*/ case RALLY_PROTOCOL: /* 拉力*/
sprintf(szbuf, "拉力"); sprintf(szbuf, "拉力");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case WIND_PROTOCOL: /* 风速风向*/ case WIND_PROTOCOL: /* 风速风向*/
sprintf(szbuf, "风速风向"); sprintf(szbuf, "风速风向");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case SLANT_PROTOCOL: /* 倾角*/ case SLANT_PROTOCOL: /* 倾角*/
sprintf(szbuf, "倾角"); sprintf(szbuf, "倾角");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case PELCO_D_PROTOCOL: /* 摄像机协议*/ case PELCO_D_PROTOCOL: /* 摄像机协议*/
case PELCO_P_PROTOCOL: /* 摄像机协议*/ case PELCO_P_PROTOCOL: /* 摄像机协议*/
@ -1156,12 +1188,6 @@ void GM_StartSerialComm()
sprintf(szbuf, "无效传感器"); sprintf(szbuf, "无效传感器");
break; break;
} }
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
if(0 == devparam[i].IsNoInsta)
{
srdt.ms_dev[i].IsNeedSerial = 0;
continue;
}
// 测试查询传感器电源状态 // 测试查询传感器电源状态
#if 0 #if 0
LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE)); LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
@ -1188,6 +1214,7 @@ void GM_StartSerialComm()
// 打开串口通讯 // 打开串口通讯
if(1 == srdt.ms_dev[i].IsNeedSerial) if(1 == srdt.ms_dev[i].IsNeedSerial)
{ {
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
Gm_OpenSensorsPower(i); Gm_OpenSensorsPower(i);
Gm_OpenSerialPort(i); Gm_OpenSerialPort(i);
} }
@ -1425,7 +1452,7 @@ void GM_IsCloseSensors(void)
if(srdt.ms_dev[i].FirstCmdTimeCnt > 6*1000/TIMER_CNT) if(srdt.ms_dev[i].FirstCmdTimeCnt > 6*1000/TIMER_CNT)
{ {
srdt.ms_dev[i].IsNeedSerial = 0; srdt.ms_dev[i].IsNeedSerial = 0;
srdt.sampling &= 0xFB; //srdt.sampling &= 0xFB;
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
LOGI("通道%d摄像机使用完毕!可以关闭摄像机电源!", devparam[i].CameraChannel); LOGI("通道%d摄像机使用完毕!可以关闭摄像机电源!", devparam[i].CameraChannel);
//netportparam.SerialCameraPowerCtrl[srdt.ms_dev[i].CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[srdt.ms_dev[i].CameraChannel-1] = 0;
@ -1797,7 +1824,7 @@ void CameraPhotoPortDataProcess( int port)
if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1]) if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1])
{ {
//netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0;
srdt.sampling &= 0xFB; //srdt.sampling &= 0xFB;
} }
else else
@ -1805,7 +1832,7 @@ 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;
@ -2172,7 +2199,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
// 2.打开串口通讯 // 2.打开串口通讯
Gm_OpenSerialPort(i); Gm_OpenSerialPort(i);
//} //}
srdt.sampling |= 2; //srdt.sampling |= 2;
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
//return 1; //return 1;
return Gm_Camera_Timer(); return Gm_Camera_Timer();
@ -2241,7 +2268,7 @@ int Gm_Camera_Timer(void)
if((SET_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000)) if((SET_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000))
|| (MOVE_TO_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000))) || (MOVE_TO_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000)))
{ {
srdt.sampling &= 0xFD; //srdt.sampling &= 0xFD;
return 1; return 1;
} }
srdt.PtzCmdType = Cmd_Cancel; srdt.PtzCmdType = Cmd_Cancel;
@ -2257,7 +2284,7 @@ int Gm_Camera_Timer(void)
else else
Gm_SendPelco_pCommand(srdt.PtzCmdType); Gm_SendPelco_pCommand(srdt.PtzCmdType);
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
srdt.sampling &= 0xFD; //srdt.sampling &= 0xFD;
return 1; return 1;
} }
else else

@ -234,7 +234,7 @@ typedef struct
u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/ u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/
u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char sampling[5]; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
u_char clcyesampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char clcyesampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
u_char camerauseserial; /* 云台指令正在使用那个串口*/ u_char camerauseserial; /* 云台指令正在使用那个串口*/
DWORD PtzCmdType; /* 云台指令类型*/ DWORD PtzCmdType; /* 云台指令类型*/

@ -48,6 +48,7 @@ extern SIO_PARAM_SERIAL_DEF serialport;
extern float weatherpntmsg[10]; extern float weatherpntmsg[10];
#endif #endif
int istop=1;
//set_port_attr (int fd, int baudrate, int databit, const char *stopbit, char parity, int vtime, int vmin ) //set_port_attr (int fd, int baudrate, int databit, const char *stopbit, char parity, int vtime, int vmin )
class NrsecSpiPort : public SpiPort { class NrsecSpiPort : public SpiPort {
public: public:
@ -655,7 +656,7 @@ Java_com_xinyingpower_testcomm_MainActivity_testSpi(
//a.sm3hash_tosm2(newkey,16,outpub,newkey,pucid,16); //a.sm3hash_tosm2(newkey,16,outpub,newkey,pucid,16);
//a.SM2Sign(0x00,outpub,outsign); //a.SM2Sign(0x00,outpub,outsign);
//a.SM2VerifySign(0x00,outpub,outsign); //a.SM2VerifySign(0x00,outpub,outsign);
//if(i < wen, i++)
//lxy modify modify //lxy modify modify
//LOGE("_test_ setRS485Enable true"); //LOGE("_test_ setRS485Enable true");
//setRS485Enable(true); //setRS485Enable(true);

@ -34,9 +34,9 @@ public class MainActivity extends AppCompatActivity {
binding.btnSpi.setOnClickListener(new View.OnClickListener() { binding.btnSpi.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
String s = binding.edtTEXT.getText().toString(); String s = binding.edtPort.getText().toString();
Integer integer = Integer.valueOf(s); // Integer integer = Integer.valueOf(s);
String str = testSpi(integer,"ghghghh"); String str = testSpi(0,"ghghghh");
binding.sampleText.setText(s); binding.sampleText.setText(s);
} }
}); });

Loading…
Cancel
Save