diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index 3c10e01..81dbffd 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -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, "未知"); diff --git a/app/src/main/cpp/SensorsProtocol.h b/app/src/main/cpp/SensorsProtocol.h index 1f181ac..81bb08f 100644 --- a/app/src/main/cpp/SensorsProtocol.h +++ b/app/src/main/cpp/SensorsProtocol.h @@ -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 有效)*/ diff --git a/app/src/main/cpp/native-lib.cpp b/app/src/main/cpp/native-lib.cpp index b66d1bf..66645a6 100644 --- a/app/src/main/cpp/native-lib.cpp +++ b/app/src/main/cpp/native-lib.cpp @@ -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);