修改串口摄像机下发命令宏定义

main
jxjajs 6 months ago
parent 813d9f6485
commit f91a65d280

@ -1130,7 +1130,7 @@ void testComm()
CameraPhotoCmd(time(NULL), 1, 0, 6, 1, "/dev/ttyS1",38400, 1);
sleep(5);
CameraPhotoCmd(time(NULL), 1, 10017, 0, 2, "/dev/ttyS1",38400, 1);
CameraPhotoCmd(time(NULL), 1, MOVE_PRESETNO, 0, 2, "/dev/ttyS1",38400, 1);
sleep(5);
CameraPhotoCmd(0, 1, MOVE_LEFT, 0, 0, "/dev/ttyS1",38400, 1);
@ -1141,7 +1141,7 @@ void testComm()
sleep(5);
CameraPhotoCmd(0, 1, MOVE_UP, 0, 0, "/dev/ttyS1",38400, 1);
sleep(5);
CameraPhotoCmd(0, 1, 10017, 0, 1, "/dev/ttyS1",38400, 1);
CameraPhotoCmd(0, 1, MOVE_PRESETNO, 0, 1, "/dev/ttyS1",38400, 1);
sleep(5);
sleep(5);
//CameraPhotoCmd(0, 1, ZOOM_WIDE, 0, 0);
@ -1306,16 +1306,16 @@ void GM_StartSerialComm()
for (i = 0; i < MAX_SERIAL_DEV_NUM; i++)
{
memset(srdt.ms_dev[i].aiValue, 0, sizeof(AI_DEF)*MAX_DEV_VALUE_NUM);
memset(weatherpntmsg, 0, sizeof(AI_DEF)*WEATHER_DATA_NUM);
if (0 == devparam[i].IsNoInsta)
{
srdt.ms_dev[i].IsNeedSerial = 0;
continue;
}
memset(szbuf, 0, sizeof(szbuf));
switch (devparam[i].ProtocolIdx)
{
case WEATHER_PROTOCOL: // 气象
memset(weatherpntmsg, 0, sizeof(AI_DEF)*WEATHER_DATA_NUM);
memset(szbuf, 0, sizeof(szbuf));
sprintf(szbuf, "%s", "气象");
srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
@ -1324,6 +1324,8 @@ void GM_StartSerialComm()
{
srdt.ms_dev[i].aiValue[j].AiState = SER_STARTSAMPLE;
weatherpntmsg[j].AiState = SER_STARTSAMPLE;
sprintf(logbuf, "init weather_state%d=%d", j, weatherpntmsg[j].AiState);
DebugLog(8, logbuf, 'I');
}
break;
case RALLY_PROTOCOL: /* 拉力*/
@ -1335,6 +1337,8 @@ void GM_StartSerialComm()
srdt.ms_dev[i].aiValue[j].AiState = SER_STARTSAMPLE;
break;
case WIND_PROTOCOL: /* 风速风向*/
memset(weatherpntmsg, 0, sizeof(AI_DEF)*WEATHER_DATA_NUM);
memset(szbuf, 0, sizeof(szbuf));
sprintf(szbuf, "%s", "风速风向");
srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
@ -1342,6 +1346,8 @@ void GM_StartSerialComm()
{
srdt.ms_dev[i].aiValue[j].AiState = SER_STARTSAMPLE;
weatherpntmsg[j].AiState = SER_STARTSAMPLE;
sprintf(logbuf, "init weather_state%d=%d", j, weatherpntmsg[j].AiState);
DebugLog(8, logbuf, 'I');
}
break;
case SLANT_PROTOCOL: /* 倾角*/
@ -1535,13 +1541,18 @@ void GM_IsCloseSensors()
else if (SER_SAMPLE == srdt.ms_dev[i].aiValue[j].AiState)
srdt.ms_dev[i].aiValue[j].AiState = SAMPLINGSUCCESS;
}
for (j = 0; j < WEATHER_DATA_NUM; j++)
{
if (SER_STARTSAMPLE == weatherpntmsg[j].AiState)
weatherpntmsg[j].AiState = SER_SAMPLEFAIL;
else if (SER_SAMPLE == weatherpntmsg[j].AiState)
weatherpntmsg[j].AiState = SAMPLINGSUCCESS;
}
if((devparam[i].ProtocolIdx == WIND_PROTOCOL) || (WEATHER_PROTOCOL == devparam[i].ProtocolIdx))
{
for (j = 0; j < WEATHER_DATA_NUM; j++)
{
if (SER_STARTSAMPLE == weatherpntmsg[j].AiState)
weatherpntmsg[j].AiState = SER_SAMPLEFAIL;
else if (SER_SAMPLE == weatherpntmsg[j].AiState)
weatherpntmsg[j].AiState = SAMPLINGSUCCESS;
sprintf(buf, "over weather_state%d=%d", j, weatherpntmsg[j].AiState);
DebugLog(8, buf, 'I');
}
}
}
break;
case PELCO_D_PROTOCOL: /* 摄像机类型*/
@ -2254,7 +2265,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
}
switch (cmdno)
{
case 0:/* 下发拍照指令*/
case Take_Photo:/* 下发拍照指令*/
if (lcurtime - pPortParam->FirstCmdTimeCnt < 3800)
return -1;
if ((lcurtime - pPortParam->FirstCmdTimeCnt > 3 * 35 * 1000) || (lcurtime - pPortParam->FirstCmdTimeCnt < 0))
@ -2281,7 +2292,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
imagesize = srdt.bImageSize;
break;
case 10000: /* 下发设置串口波特率命令*/
case SET_BAUD: /* 下发设置串口波特率命令*/
#if 0
switch (devparam[devidx].baudrate)
{
@ -2329,7 +2340,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
packetsize = (uint16_t)MAX_PHOTO_FRAME_LEN;
break;
case 10005: /* 关闭功能*/
case STOP_CMD: /* 关闭功能*/
//Gm_CtrlPtzCmd(1, P_MOVE_LEFT);
//sleep(2);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2338,25 +2349,25 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
srdt.iLastGetPhotoNo = -1;
//sleep(20);
return 1;
case 10006: /* 自动扫描功能控制(1/0 打开/关闭该功能)*/
case AUTO_SCAN: /* 自动扫描功能控制(1/0 打开/关闭该功能)*/
Gm_CtrlPtzCmd(pPortParam, P_Auto_Scan);
usleep(100000);
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10007: /* 光圈缩小(1 有效)*/
case IRIS_CLOSE: /* 光圈缩小(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_IRIS_CLOSE);
usleep(100000);
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10008: /* 光圈放大(1 有效)*/
case IRIS_OPEN: /* 光圈放大(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_IRIS_OPEN);
usleep(100000);
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10009: /* 近距离聚焦(1 有效)*/
case FOCUS_NEAR: /* 近距离聚焦(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_FOCUS_NEAR);
usleep(500000);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2364,7 +2375,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10010: /* 远距离聚焦(1 有效)*/
case FOCUS_FAR: /* 远距离聚焦(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_FOCUS_FAR);
usleep(500000);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2372,7 +2383,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10011: /* 远离物体(1 有效)*/
case ZOOM_WIDE: /* 远离物体(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_ZOOM_WIDE);
usleep(500000);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2380,7 +2391,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10012: /* 接近物体(1 有效)*/
case ZOOM_TELE: /* 接近物体(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_ZOOM_TELE);
usleep(500000);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2388,7 +2399,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10013: /* 向下移动镜头(1 有效)*/
case MOVE_DOWN: /* 向下移动镜头(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_MOVE_DOWN);
sleep(1);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2396,7 +2407,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10014: /* 向上移动镜头(1 有效)*/
case MOVE_UP: /* 向上移动镜头(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_MOVE_UP);
sleep(1);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2404,7 +2415,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10015: /* 向左移动镜头(1 有效)*/
case MOVE_LEFT: /* 向左移动镜头(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_MOVE_LEFT);
sleep(1);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2412,7 +2423,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10016: /* 向右移动镜头(1 有效)*/
case MOVE_RIGHT: /* 向右移动镜头(1 有效)*/
Gm_CtrlPtzCmd(pPortParam, P_MOVE_RIGHT);
sleep(1);
Gm_CtrlPtzCmd(pPortParam, Cmd_Cancel);
@ -2420,13 +2431,13 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
srdt.iLastGetPhotoNo = -1;
return 1;
case 10017: /* 调用预置点*/
case MOVE_PRESETNO: /* 调用预置点*/
//srdt.presetno = 2;
Gm_CtrlPtzCmd(pPortParam, MOVE_TO_PRESETNO + srdt.presetno);
sleep(2);
if (0 == srdt.IsSleep)
{
pPortParam->SerialCmdidx = 10017;
pPortParam->SerialCmdidx = MOVE_PRESETNO;
srdt.IsSleep++;
return 1;
}
@ -2434,7 +2445,7 @@ int FindNextCameraPhotoCommand(SIO_PARAM_SERIAL_DEF *pPortParam)
srdt.iLastGetPhotoNo = -1;
srdt.IsSleep = 0;
return 1;
case 10018: /* 设置预置点*/
case SAVE_PRESETNO: /* 设置预置点*/
Gm_CtrlPtzCmd(pPortParam, SET_PRESETNO + srdt.presetno);
usleep(100000);
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
@ -2769,7 +2780,7 @@ uint8_t Gm_Pelco_DCheck(uint8_t *msg, int len)
**********************************************************************************/
int FindNextShxyProtocolCommand(int devidx)
{
int cmdno = 1;
int cmdno = 0;
//如果命令缓冲区仍有命令,则退出本函数
if ((devparam[devidx].commid + 1 < 1) || (devparam[devidx].commid + 1 > MAX_SERIAL_PORT_NUM))
@ -3098,8 +3109,8 @@ void ShxyProtocolDataProcess(int devno)
}
else
{
pPortParam->aiValue[AirTempNo].EuValue = fvalue;/*pPortParam->aiValue[0].AiParam.fFactor + pPortParam->aiValue[0].AiParam.EuValueDelta;*/
weatherpntmsg[AirTempNo].EuValue = fvalue;/*weatherpntmsg[AirTempNo].AiParam.fFactor + weatherpntmsg[AirTempNo].AiParam.EuValueDelta;*/
pPortParam->aiValue[AirTempNo].EuValue = fvalue;
weatherpntmsg[AirTempNo].EuValue = fvalue;
}
pPortParam->aiValue[AirTempNo].AiState = SER_SAMPLE;
weatherpntmsg[AirTempNo].AiState = SER_SAMPLE;
@ -3119,8 +3130,8 @@ void ShxyProtocolDataProcess(int devno)
}
else
{
pPortParam->aiValue[AtmosNo].EuValue = fvalue;/*pPortParam->aiValue[5].AiParam.fFactor + pPortParam->aiValue[5].AiParam.EuValueDelta;*/
weatherpntmsg[AtmosNo].EuValue = fvalue;/*weatherpntmsg[AtmosNo].AiParam.fFactor + weatherpntmsg[AtmosNo].AiParam.EuValueDelta;*/
pPortParam->aiValue[AtmosNo].EuValue = fvalue;
weatherpntmsg[AtmosNo].EuValue = fvalue;
}
pPortParam->aiValue[AtmosNo].AiState = SER_SAMPLE;
weatherpntmsg[AtmosNo].AiState = SER_SAMPLE;
@ -3817,7 +3828,7 @@ int GetWeatherData(Data_DEF *data, int datano)
sprintf(szbuf, "大气压");
break;
case OpticalRadiationNo:
sprintf(szbuf, "大气压");
sprintf(szbuf, "日照");
break;
default:
sprintf(szbuf, "未知");

@ -107,9 +107,9 @@
/* 摄像机下发命令宏定义*/
#define Take_Photo 0 /* 拍照*/
#define Stop_Baud 10000 /* 设置球机波特率*/
#define Stop_Cmd 10005 /* 取消或停止指令*/
#define Auto_Scan 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/
#define SET_BAUD 10000 /* 设置球机波特率*/
#define STOP_CMD 10005 /* 取消或停止指令*/
#define AUTO_SCAN 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/
#define IRIS_CLOSE 10007 /* 光圈缩小(1 有效)*/
#define IRIS_OPEN 10008 /* 光圈放大(1 有效)*/
#define FOCUS_NEAR 10009 /* 近距离聚焦(1 有效)*/

@ -54,6 +54,10 @@ extern float weatherpntmsg[10];
#endif
int istop=1;
char serialfile[] = "/dev/ttyS0";
int baud = 9600;
int cameraaddr = 1;
//set_port_attr (int fd, int baudrate, int databit, const char *stopbit, char parity, int vtime, int vmin )
class NrsecSpiPort : public SpiPort {
public:
@ -221,7 +225,7 @@ void setInt(int cmd, int value)
// LOGE("set_int22 cmd=%d,value=%d,result=%d\r\n",param.cmd, param.value, param.result);
close(fd);
}
return;
}
static void setRS485Enable(bool z) {
setInt(CMD_SET_485_EN_STATE, z ? 1 : 0);
@ -332,7 +336,7 @@ static void InitPLZ()
#if 1
//云台
sensorParam[0].SensorsType = PELCO_D_PROTOCOL;
sensorParam[0].baudrate = 38400;
sensorParam[0].baudrate = baud;
sensorParam[0].databit = 8;
sensorParam[0].stopbit = 1;
sensorParam[0].parity = '0';
@ -344,7 +348,7 @@ static void InitPLZ()
sprintf(sensorParam[0].pathname, "/dev/ttyS0");
#else //球基
sensorParam[0].SensorsType = PELCO_D_PROTOCOL;
sensorParam[0].baudrate = 38400;
sensorParam[0].baudrate = baud;
sensorParam[0].databit = 8;
sensorParam[0].stopbit = 1;
sensorParam[0].parity = 0;
@ -936,42 +940,42 @@ extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_turnLeft(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, MOVE_LEFT, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, MOVE_LEFT, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_turnRight(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, MOVE_RIGHT, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, MOVE_RIGHT, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_turnUp(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, MOVE_UP, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, MOVE_UP, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_turnDown(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, MOVE_DOWN, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, MOVE_DOWN, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_zoomIn(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, ZOOM_TELE, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, ZOOM_TELE, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_zoomOut(
JNIEnv* env,
jobject /*this*/) {
CameraPhotoCmd(0, 1, ZOOM_WIDE, 0, 0, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, ZOOM_WIDE, 0, 0, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
@ -980,11 +984,11 @@ Java_com_xinyingpower_testcomm_MainActivity_setSpeed(
jobject /*this*/, jint speed) {
//CameraPhotoCmd(0, 1, ZOOM_WIDE, 0, 0);
CameraPhotoCmd(time(NULL), 1, 0, (u_char)(speed/10), speed%10, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(time(NULL), 1, 0, (u_char)(speed/10), speed%10, serialfile, baud, cameraaddr);
//return;
//CameraPhotoCmd(0, 1, OPEN_TOTAL, 0, 0, "/dev/ttyS0", 38400, 1);
//CameraPhotoCmd(0, 1, OPEN_TOTAL, 0, 0, "/dev/ttyS0", baud, 1);
//usleep(200000);
//CameraPhotoCmd(0, 1, OPEN_MODULE_POWER, 0, 0, "/dev/ttyS0", 38400, 1);
//CameraPhotoCmd(0, 1, OPEN_MODULE_POWER, 0, 0, "/dev/ttyS0", baud, 1);
}
@ -992,14 +996,14 @@ extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_setPreset(
JNIEnv* env,
jobject /*this*/, jint preset) {
CameraPhotoCmd(0, 1, SAVE_PRESETNO, 0, preset, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, SAVE_PRESETNO, 0, preset, serialfile, baud, cameraaddr);
}
extern "C" JNIEXPORT void JNICALL
Java_com_xinyingpower_testcomm_MainActivity_gotoPreset(
JNIEnv* env,
jobject /*this*/, jint preset) {
CameraPhotoCmd(0, 1, MOVE_PRESETNO, 0, preset, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(0, 1, MOVE_PRESETNO, 0, preset, serialfile, baud, cameraaddr);
}
#if 1
@ -1018,7 +1022,7 @@ void photo_function()
for(j=0; j<=8; j++)
{
t0 = get_msec();
CameraPhotoCmd(time(NULL), 1, 0, (u_char)(j), j%3+1, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(time(NULL), 1, 0, (u_char)(j), j%3+1, serialfile, baud, cameraaddr);
GetImage(0, photo);
t1 = get_msec();
sprintf(logbuf, "拍照时长:%lld, 预置点:%d, pic_name:%s", t0-t1, photo->presetno, photo->photoname);
@ -1036,7 +1040,7 @@ void photo_function()
void photo_function()
{
Collect_sensor_data();
CameraPhotoCmd(time(NULL), 1, 0, 2, 3, "/dev/ttyS1", 38400, 0);
CameraPhotoCmd(time(NULL), 1, 0, 2, 3, serialfile, baud, 0);
}
#endif
@ -1072,7 +1076,7 @@ void weather_function()
data = (Data_DEF*)malloc(sizeof(Data_DEF));
for(int i=0;i<3;i++)try-catch();
for(int i=0;i<3;i++)
{
Open_All_Power();
usleep(200);

Loading…
Cancel
Save