|
|
|
@ -27,6 +27,7 @@
|
|
|
|
|
#define IOT_PARAM_WRITE 0xAE
|
|
|
|
|
#define IOT_PARAM_READ 0xAF
|
|
|
|
|
|
|
|
|
|
#define MAX_FIELDS_NUM 20 /* BD_NMEA0183单组字符串数据内含数据最大数量*/
|
|
|
|
|
#define MAX_SERIAL_DEV_NUM 25 /* 最大接串口传感器数量*/
|
|
|
|
|
#define MAX_SERIAL_PORT_NUM 5
|
|
|
|
|
#define MAX_DEV_VALUE_NUM 12 /* 一台装置最大的采样值数量*/
|
|
|
|
@ -39,6 +40,7 @@
|
|
|
|
|
#define PELCO_D_PROTOCOL 6 /* 摄像机Pelco_D协议序号*/
|
|
|
|
|
#define SERIALCAMERA_PROTOCOL 8 /* 串口摄像机协议序号*/
|
|
|
|
|
#define MUTIWEATHER_PROTOCOL 9 /*多合一气象*/
|
|
|
|
|
#define NMEA0183_PROTOCOL 10 /* 单一北斗NMEA0183标准协议*/
|
|
|
|
|
#define RESERVE2_PROTOCOL 17 /* 备用2协议序号*/
|
|
|
|
|
#define RESERVE4_PROTOCOL 19 /* 备用4协议序号*/
|
|
|
|
|
#define RESERVE5_PROTOCOL 20 /* 备用5协议序号*/
|
|
|
|
@ -83,9 +85,9 @@
|
|
|
|
|
#define P_IRIS_OPEN 0x04000000 /* 光圈放大(1 有效)*/
|
|
|
|
|
#define P_FOCUS_NEAR 0x02000000 /* 近距离聚焦(1 有效)*/
|
|
|
|
|
#define P_FOCUS_FAR 0x01000000 /* 远距离聚焦(1 有效)*/
|
|
|
|
|
#define P_ZOOM_WIDE 0x00400000 /* 远离物体(1 有效)*/
|
|
|
|
|
#define P_ZOOM_WIDE 0x00400000 /* 远离物体(1 有效)*/
|
|
|
|
|
#define P_ZOOM_TELE 0x00200000 /* 接近物体(1 有效)*/
|
|
|
|
|
#define P_MOVE_DOWN 0x0010001f /* 向下移动镜头(1 有效)*/
|
|
|
|
|
#define P_MOVE_DOWN 0x0010001f /* 向下移动镜头(1 有效)*/
|
|
|
|
|
#define P_MOVE_UP 0x0008001f /* 向上移动镜头(1 有效)*/
|
|
|
|
|
#define P_MOVE_LEFT 0x00041f00 /* 向左移动镜头(1 有效)*/
|
|
|
|
|
#define P_MOVE_RIGHT 0x00021f00 /* 向右移动镜头(1 有效)*/
|
|
|
|
@ -95,10 +97,10 @@
|
|
|
|
|
#define D_IRIS_CLOSE 0x04000000 /* 光圈缩小(1 有效)*/
|
|
|
|
|
#define D_IRIS_OPEN 0x02000000 /* 光圈放大(1 有效)*/
|
|
|
|
|
#define D_FOCUS_NEAR 0x01000000 /* 近距离聚焦(1 有效)*/
|
|
|
|
|
#define D_FOCUS_FAR 0x00800000 /* 远距离聚焦(1 有效)*/
|
|
|
|
|
#define D_ZOOM_WIDE 0x00400000 /* 远离物体(1 有效)*/
|
|
|
|
|
#define D_ZOOM_TELE 0x00200000 /* 接近物体(1 有效)*/
|
|
|
|
|
#define D_MOVE_DOWN 0x0010002d /* 向下移动镜头(1 有效)*/
|
|
|
|
|
#define D_FOCUS_FAR 0x00800000 /* 远距离聚焦(1 有效)*/
|
|
|
|
|
#define D_ZOOM_WIDE 0x00400000 /* 远离物体(1 有效)*/
|
|
|
|
|
#define D_ZOOM_TELE 0x00200000 /* 接近物体(1 有效)*/
|
|
|
|
|
#define D_MOVE_DOWN 0x0010002d /* 向下移动镜头(1 有效)*/
|
|
|
|
|
#define D_MOVE_UP 0x0008002d /* 向上移动镜头(1 有效)*/
|
|
|
|
|
#define D_MOVE_LEFT 0x00042d00 /* 向左移动镜头(1 有效)*/
|
|
|
|
|
#define D_MOVE_RIGHT 0x00022d00 /* 向右移动镜头(1 有效)*/
|
|
|
|
@ -106,10 +108,10 @@
|
|
|
|
|
#define D_OPEN_MODULE_POWER 0x0009000C /* 打开机芯电源(1 有效)*/
|
|
|
|
|
|
|
|
|
|
/* 摄像机下发命令宏定义*/
|
|
|
|
|
#define Take_Photo 0 /* 拍照*/
|
|
|
|
|
#define Stop_Baud 10000 /* 设置球机波特率*/
|
|
|
|
|
#define Stop_Cmd 10005 /* 取消或停止指令*/
|
|
|
|
|
#define Auto_Scan 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/
|
|
|
|
|
#define TAKE_PHOTO 20000 /* 拍照*/
|
|
|
|
|
#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 有效)*/
|
|
|
|
@ -124,8 +126,8 @@
|
|
|
|
|
#define SAVE_PRESETNO 10018 // 设置预置点
|
|
|
|
|
#define OPEN_TOTAL 10019 /* 打开总电源(1 有效)*/
|
|
|
|
|
#define OPEN_MODULE_POWER 10020 /* 打开机芯电源(1 有效)*/
|
|
|
|
|
#define CLOSE_TOTAL 10040 /* 关闭总电源*/
|
|
|
|
|
|
|
|
|
|
#define NOTIFY_PTZ_CLOSE 10021 // 通知云台关闭
|
|
|
|
|
#define QUERY_PTZ_STATE 10022 // 查询云台状态
|
|
|
|
|
#define SPEED_DOME_CAMERA 0 /* 球机摄像机*/
|
|
|
|
|
#define SERIAL_CAMERA 2 /* 串口摄像机a*/
|
|
|
|
|
|
|
|
|
@ -216,6 +218,48 @@ typedef struct
|
|
|
|
|
uint8_t Phase; /* 传感器所安装相别,指拉力和倾角11表示A1....*/
|
|
|
|
|
} SERIAL_PARAM;
|
|
|
|
|
|
|
|
|
|
// 云台状态数据
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
uint8_t ptz_process; /* 云台所处过程(1:自检状态;2:调用预置点;3:一般状态;)*/
|
|
|
|
|
uint8_t ptz_status; /* 云台当前状态值(0:停止;1:运动;2:机芯未上电;其他:其他错误*/
|
|
|
|
|
int presetno; /* 云台所处预置点值*/
|
|
|
|
|
float x_coordinate; /* 云台所处位置水平方向坐标*/
|
|
|
|
|
float y_coordinate; /* 云台所处位置垂直方向坐标*/
|
|
|
|
|
} PTZ_STATE;
|
|
|
|
|
/*
|
|
|
|
|
$--RMC 字符串 消息 ID,RMC 语句头,’--‘为系统标识
|
|
|
|
|
2 UTCtime hhmmss.ss 当前定位的 UTC 时间
|
|
|
|
|
3 status 字符串 位置有效标志。
|
|
|
|
|
V=接收机警告,数据无效
|
|
|
|
|
A=数据有效
|
|
|
|
|
4 lat ddmm.mmmmm 纬度,前 2 字符表示度,后面的字符表示分
|
|
|
|
|
5 uLat 字符 纬度方向:N-北,S-南
|
|
|
|
|
6 lon dddmm.mmmm
|
|
|
|
|
m
|
|
|
|
|
经度,前 3 字符表示度,后面的字符表示分
|
|
|
|
|
7 uLon 字符 经度方向:E-东,W-西
|
|
|
|
|
8 spd 数值 对地速度,单位为节
|
|
|
|
|
9 cog 数值 对地真航向,单位为度
|
|
|
|
|
10 date ddmmyy 日期(dd 为日,mm 为月,yy 为年)
|
|
|
|
|
11 mv 数值 磁偏角,单位为度。固定为空
|
|
|
|
|
12 mvE 字符 磁偏角方向:E-东,W-西。固定为空
|
|
|
|
|
13 mode 字符 定位模式标志(备注[1])
|
|
|
|
|
14 navStatus 字符 导航状态标示符(V 表示系统不输出导航状态信息)
|
|
|
|
|
仅 NMEA 4.1 及以上版本有效
|
|
|
|
|
15 CS 16 进制数值 校验和,$和*之间(不包括$和*)所有字符的异或结果*/
|
|
|
|
|
// 北斗卫星数据
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
struct tm UTC_time; /* UTC时间*/
|
|
|
|
|
int ms_time; /* 毫秒*/
|
|
|
|
|
double lat; /* 纬度,原值(前 2 字符表示度,后面的字符表示分)转换后为° */
|
|
|
|
|
char uLat; /* 纬度方向:N-北,S-南*/
|
|
|
|
|
double lon; /* 经度,原值(前 3 字符表示度,后面的字符表示分)转换后为°*/
|
|
|
|
|
char uLon; /* 经度'E'-东,'W'-西*/
|
|
|
|
|
char status; /* 'A'=数据有效 其他字符表示数据无效*/
|
|
|
|
|
} BD_GNSS_DATA;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
int m_iRevStatus; /* */
|
|
|
|
@ -237,16 +281,26 @@ typedef struct
|
|
|
|
|
uint16_t ForceWaitCnt; /* 强制等待计数*/
|
|
|
|
|
uint8_t ReSendCmdFlag; /* 重发命令标志 */
|
|
|
|
|
uint8_t SendCmdFlag; /* 命令发送标志 */
|
|
|
|
|
uint8_t RevCmdFlag; /* 命令正常接收标志*/
|
|
|
|
|
uint8_t RevCmdFlag; /* 命令正常接收标志*/
|
|
|
|
|
//**********************************************************
|
|
|
|
|
int64_t lsendtime; /* 命令发送绝对时间计时(毫秒)*/
|
|
|
|
|
int cameraaddr; /* 摄像机地址*/
|
|
|
|
|
int64_t lsendtime; /* 命令发送绝对时间计时(毫秒)*/
|
|
|
|
|
int cameraaddr; /* 摄像机地址*/
|
|
|
|
|
int SerialCmdidx; /* 正在使用的串口发送命令的命令序号(-1:表示没有命令发送)
|
|
|
|
|
摄像机使用命令序号存储*/
|
|
|
|
|
PHOTO_DEF image; /* 临时存储图片数据*/
|
|
|
|
|
PHOTO_DEF image; /* 临时存储图片数据*/
|
|
|
|
|
int64_t FirstCmdTimeCnt; /* 串口读取数据起始时间*/
|
|
|
|
|
PTZ_STATE ptz_state;
|
|
|
|
|
int sendptzstatecmd; // 查询命令次数控制
|
|
|
|
|
BD_GNSS_DATA bd_data;
|
|
|
|
|
} SIO_PARAM_SERIAL_DEF;
|
|
|
|
|
|
|
|
|
|
typedef const struct
|
|
|
|
|
{
|
|
|
|
|
//char *account; // 命令说明
|
|
|
|
|
char *cmd_name; // 命令名称
|
|
|
|
|
int (*recv_process)(SIO_PARAM_SERIAL_DEF *); /* urc数据处理*/
|
|
|
|
|
}BD_NMEA0183_PROC_FUNC;
|
|
|
|
|
|
|
|
|
|
//串口相关装置所有参数集中定义
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
@ -474,6 +528,24 @@ int GM_IsCloseCamera(SIO_PARAM_SERIAL_DEF *pPortParam);
|
|
|
|
|
|
|
|
|
|
int GM_CameraSerialTimer(SIO_PARAM_SERIAL_DEF *pPortParam);
|
|
|
|
|
|
|
|
|
|
int QueryPtzState(PTZ_STATE *ptz_state, int cmdidx, const char *serfile, unsigned int baud, int addr);
|
|
|
|
|
|
|
|
|
|
int Query_BDGNSS_Data(BD_GNSS_DATA *BD_data, int samptime, const char *serfile, unsigned int baud);
|
|
|
|
|
|
|
|
|
|
int GM_BdSerialTimer(SIO_PARAM_SERIAL_DEF *pPortParam);
|
|
|
|
|
|
|
|
|
|
void GM_BdSerialComRecv(SIO_PARAM_SERIAL_DEF *pPortParam);
|
|
|
|
|
|
|
|
|
|
void BdRecvData(SIO_PARAM_SERIAL_DEF *pPortParam, u_char *buf, int len);
|
|
|
|
|
|
|
|
|
|
unsigned char BDXorCheck(unsigned char *msg, int len);
|
|
|
|
|
|
|
|
|
|
void BD_NMEA0183_PortDataProcess(SIO_PARAM_SERIAL_DEF *curserial);
|
|
|
|
|
|
|
|
|
|
char** BD_NMEA0183_SplitString(char *str, int *total_fields);
|
|
|
|
|
|
|
|
|
|
int BD_get_BDRMC_data(SIO_PARAM_SERIAL_DEF *curserial);
|
|
|
|
|
|
|
|
|
|
#endif // __SENSOR_PROTOCOL_H__
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|