CMSV6帮助文档
/
901 DOCS · 225 VIDEOSEN

数据库表字段说明

作者 yanghaiqing更新 2026-01-13 18:18:38文档 ID 2470约 10,244 字 · 阅读 24 分钟查看原文 ↗

1、功能说明

从数据库表中获取车辆轨迹、车辆报警时的状态信息。

2、字段说明

一.报警表的状态字段

jt808_vehicle_alarm_xxxx 报警表:StatusStart -- StatusEnd参数说明

例子:
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21
说明:将上面参数用|进行分割成数组array,下标从0开始.
array[0] = 1; 表示状态1;
array[1] = 2; 表示状态2;
array[2] = 3; 表示状态3;
array[3] = 4; 表示状态4;
参考api界面:

array[4] = 5; 表示速度;单位: km/h,使用中需先除以10。 9999 = 999.9
array[5] = 6; 表示经度;
如果设备定位无效,值为0。
例如:113231258,真实值为113.231258
array[6] = 7; 表示纬度;
如果设备定位无效,值为0。
例如:39231258,真实值为39.231258
array[7] = 8; 表示高度;
array[8] = 9; 表示航向;方向:正北方向为0度,顺时针方向增大,最大值360度。
array[9] = 10; 表示里程;单位: 米。
array[10] = 11; 表示油量;单位: 升,使用中需先除以100。 9999 = 99.99
array[11] = 12; 表示停车时长;单位: 秒。
array[12] = 13; 表示温度传感器1;
array[13] = 14; 表示温度传感器2;
array[14] = 15; 表示温度传感器3;
array[15] = 16; 表示温度传感器4;
array[16] = 17; 表示线路id;公交使用,线路号
array[17] = 18; 表示方向;方向 0-上行, 1-下行
array[18] = 19; 表示站点;公交使用,站点标志 0-站点 1-站场
array[19] = 20; 表示站点状态;公交使用,站点状态 0-本站 1-下一站
array[20] = 21; 表示站点索引; 公交使用,站点索引

二.gps轨迹表

jt808_vehicle_gps_xxx的GPSData字段

typedef struct _tagGPSVehicleGpsNew
{
    GPSTime_S Time;
    unsigned int uiSpeed:14;    //速度值 KM/S  9999 = 999.9    范围(0-16384)
    unsigned int uiYouLiang:18; //油量   升    9999 = 99.99    范围(0-262100)
    unsigned int uiLiCheng;     //里程   公里   9999 = 9.999    
    unsigned int uiHangXiang:9; //地面航向,(0-360) 范围(0-512)
    unsigned int uiMapType:3;   //地图类型      1表示GOOGLE,2表示百度,0表示无效
    unsigned int uiNetWorkType:4;   //网络类型(3G类,WIFI,有线,4G)
    unsigned int uiTachographSpeed:14;  //速度值 KM/S  9999 = 999.9    范围(0-16384) 行驶记录仪速度     
                                        //ttx协议: 为人员时,解析为  电池电量  0-100,  90 = 90%
    //unsigned int uiReserve:2;  //保留位1
    unsigned int uiLongGps : 2;     //长GPS,表示此结构体后面还有72个字节的数据  0位有效表示libmdvrnet数据有效  1位有效表示Gateway/数据库数据有效
    unsigned int uiStatus[4];       //目前只使用,每1个状态   0位表示GPS定位状态(0无效,1有效)
    short sTempSensor[4];   //温度传感器的状态
    int nJingDu;        //经度    4字节 整数部分    9999999 = 9.999999 
    int nWeiDu;         //纬度    4字节 整数部分    9999999 = 9.999999
    short nGaoDu;           //高度,暂时未使用
    unsigned short usSatellites:4;  //卫星数,大于0时显示,范围0-12
    unsigned short usReserve:8;     //保留字段
    unsigned short usExtraFlag:4;   //附加信息标志, 默认为0
    int nParkTime;      //停车时长 秒    在静止状态时有效
    GPSVehicleExtra_S  Extra;       //联合体
}GPSVehicleGpsNew_S;
const int GPSVehicleGpsNew_LEN = sizeof(GPSVehicleGpsNew_S);
static_assert(72 == GPSVehicleGpsNew_LEN, "GPSVehicleGpsNew_S Length error");

typedef struct _tagGPSVehicleLongGps : public GPSVehicleGps_S
{
    GPSTime_S RecvTime;             //接收GPS的系统时间
    unsigned int uiLongStatus;          //状态位  0位:车厢温度  1位:IO状态位  2位:扩展车辆信号状态  3位:模拟量  4位:胎压
                                        //      5位:主动安全ADAS  6位:主动安全DSM  7位:主动安全BSD 8位:激烈驾驶参数 9位:智能检测(上海)
                                        //      10位:卫星定位  11位:路网附加信息(车辆当前限速值) 12位:路网附加信息(当前道路信息)
                                        //      13位:新主动安全状态位有效  14位:(副)油箱  15位:水位  16位:已产生主动安全的结束报警
                                        //      17位:渣土车状态位有效  18位:今日里程参数有效
    short usCompartmentTemp;            //车厢温度(0x06)
    unsigned short usIOStatus;          //IO状态位(0x2A)
    unsigned int uiExtraStatus;         //扩展车辆信号状态位(0x25)
    unsigned int uiAnalogQuantity;      //模拟量(0x2B)

    unsigned short usSafetyAlarm;
    // 主动安全报警 一级(+1000)
    // 主动安全报警 二级(+2000)
    // 主动安全报警 三级(+10000)
    /*  0:前向碰撞报警    1:车道偏离报警    2:车距过近报警    3:行人碰撞报警    4:频繁变道报警    5:道路标识超限报警  6:障碍物报警
    7:弯道车速预警        8:驾驶辅助功能失效报警        9:路口快速通过报警      10:实线变道报警       11:设备失效提醒报警     12:低速前车碰撞预警报警1级
    13: 路面抛洒  14:黑名单车辆报警  15:白名单车辆报警  16:授权超期车辆报警  17:未授权车辆报警  18:车厢过道行人检测报警  19:盲区监测报警
    20:限速报警  21:限高报警  22:限宽报警  23:限重报警
    */
    //主动安全dsm报警状态位 一级(+3000)
    //主动安全dsm报警状态位 二级(+4000)
    //主动安全dsm报警状态位 三级(+11000)
    /*  0:疲劳驾驶报警    1:接打电话报警    2:抽烟报警  3:长时间不目视前方报警    4:系统不能正常工作报警  5:未系安全带报警
    6:未检测到驾驶员报警     7:双手同时脱离方向盘报警  8:分神驾驶报警(苏) 9:驾驶员异常报警(苏) 10:驾驶员IC卡异常报警(陕)
    11:墨镜失效     12:驾驶员行为监测功能失效报警        13:探头遮挡报警       14:换人驾驶报警       15:超时驾驶报警  
    16:单手脱离方向盘报警    17:喝水报警  18:长时间驾驶  19:玩手机  20:巡检乘客安全带  21:夜间异动
    22:酒测正常  23:未完成酒测  24:酒后驾驶  25:醉驾驾驶
    */
    //主动安全bsd报警状态位(+5000)
    /*  0:左侧盲区报警    1:右侧盲区报警    2:后方接近报警  3:右侧盲区一级报警  4:右侧盲区二级报警  5:右侧盲区三级报警
    6:前向盲区报警一级报警  7:前向盲区报警二级报警
    */
    //激烈驾驶报警(+6000)
    /*  0:急加速报警 1:急减速报警 2:急转弯报警 3:怠速报警  4:异常熄火报警    5:空挡滑行报警    6:发动机超转报警
    7:侧翻报警
    */
    //智能检测(上海) 一级(+7000)
    //智能检测(上海) 二级(+8000)
    /*  0:车厢超载报警    1:站外上客报警  2:超过车辆额定载重报警  3:超过道路承重报警
    */
    //黑标相关报警 (+9000)
    /*  0:人证不符报警  1:IC 卡从业资格证读卡失败报警  2:事故报警  3:主存储器异常报警  4:备用存储器异常报警  5:卫星信号异常报警
    6:通信信号异常报警  7:备用电池欠压报警  8:备用电池失效报警  9:IC 卡从业资格证模块故障报警
    */

    union
    {
        unsigned short usADASAlarmL2Reserved;   //预留
        unsigned short usWater;//水位  9999 = 9999 升  范围(0-65535)
    };
    union
    {
        //unsigned int uiDSMAlarmReserved;
        struct
        {
            unsigned short usDSMAlarmL1Reserved;    //预留
            unsigned short usDSMAlarmL2Reserved;    //预留
        };
        struct
        {
            unsigned int uiYouHaoHigh : 4;  //油箱1扩展,高4位
            unsigned int uiYouHao2 : 22;    //副油箱油量 升   9999 = 99.99    范围(0-4194304)
            unsigned int uiReserved : 6;    //预留
        };
    };
    //unsigned char ucBSDAlarmL1Reserved;   //预留
    //unsigned char ucBSDAlarmL2Reserved;   //预留
    unsigned short usTodayLiCheng;      //今日里程   0.1公里  范围(0-65536)

    union
    {
        struct
        {
            unsigned char ucLimitSpeedL;        //路网附加信息位(11)有效时,车辆当前限速值:单位:km/h
            unsigned char ucLimitSpeedH;        //路网附加信息位(11)有效时,车辆当前限速值:单位:km/h
        };
        unsigned short usLimitSpeed;
    };

    unsigned char ucSatellite;          //卫星定位
    /*  0:超过阈值速度报警  1:超过道路限速报警  2.(黑标)超速报警  3.(黑标)路线偏离报警  4.(黑标)禁行路段/区域报警
    */
    unsigned char ucReserved_1 : 3;     //预留
    unsigned char ucDistractedDriving : 1;  //分神驾驶报警 2级(平台)
    unsigned char ucReserved_2 : 4;     //预留

    //unsigned char ucReserved_3;           //预留
    unsigned char ucSatelliteContinue;  //卫星定位(持续)
    /*  0:超过阈值速度报警  1:超过道路限速报警  2.(黑标)超速报警  3.(黑标)路线偏离报警  4.(黑标)禁行路段/区域报警
    */

    unsigned char ucRoadType;           //路网附加信息位(12)有效时,表示当前道路类型

    union
    {
        struct //注意:4字节对齐,前两个参数必须包含进来 [2020-8-21 ydl]
        {
            unsigned char ucRoadLimitSpeed;     //路网附加信息位(12)有效时,表示当前道路限速值

            unsigned char ucStatus5;            //状态位(在uiStatus[4]的基础上扩展报警位)
            /*  0:危险驾驶行为报警  1:IO7   2:IO8  3:备用电池欠压报警  4:备用电池失效报警  5:备用存储器故障报警  6:急转弯
            */

            unsigned char ucTirePressure[30];   //胎压(0x05)
        };
        struct  // 黑标定义
        {
            unsigned short usHBNotUse;          //不要使用,有效数据,占位的

            short sAccelerationX;       //加速度,有符号 0:X  1:Y  2:Z  单位:0.01g
            short sAccelerationY;       //加速度,有符号 0:X  1:Y  2:Z  单位:0.01g
            short sAccelerationZ;       //加速度,有符号 0:X  1:Y  2:Z  单位:0.01g

            short sAngularVelocityX;    //角速度 0:X  1:Y  2:Z  单位:0.1°/s
            short sAngularVelocityY;    //角速度 0:X  1:Y  2:Z  单位:0.1°/s
            short sAngularVelocityZ;    //角速度 0:X  1:Y  2:Z  单位:0.1°/s

            unsigned char ucAccelPedalStroke;   //加速踏板行程值 范围 1~100,单位%
            unsigned char ucBrakePedalStroke;   //制动踏板行程值 范围 1~100,单位%

            unsigned short usOBDSpeed;          //OBD速度
            unsigned short usOBDRpm;            //发动机转速 单位 RPM  0~16384

            short sOBDAngle;                    //方向盘角度 方向盘转过的角度,顺时针为正,逆时针为负  单位 -1024~1023         
            unsigned char ucOBDGear;            //档位状态 0:空挡  01~09:档位  10:倒挡  11:驻车档

            unsigned char ucHBReserved[9];      //预留
        };
        struct  //渣土车定义 
        {
            unsigned short usZtcNotUse;         //不要使用,有效数据,占位的

            unsigned char ucZtcTarpStatus;      //渣土车 篷布状态
                                            //0:无效 1:关闭 2:打开 3:异常 4:开启未完全 5:关闭未完全

            unsigned char ucZtcLiftStatus;      //渣土车 举升状态
                                            //0:无效 1:平放 2:举升 3:异常

            unsigned int uiZtcPlatformStatus;   //渣土车(平台使用)
                                            //bit0:篷布状态异常报警  bit1:举升状态异常报警  bit2:重空载状态异常报警
                                            //bit3:进出电子围栏报警  bit4:违规区域卸载  bit5:重车行驶厢盖未关闭
                                            //bit6:锐明渣土车协议

            unsigned int uiZtcDeviceLinkStatus;//渣土车 设备连接状态
            /*
            0   1:连接,0:未连接  篷布检测装置
            1   1:连接,0:未连接  举升检测装置
            2   1:连接,0:未连接  重空载检测装置
            3(锐明)   1:连接,0:未连接  ECU通信
            4(锐明)   1:连接,0:未连接  声光报警器
            5(锐明)   1:连接,0:未连接  厢门闭合监测
            6   1:连接,0:未连接  身份验证装置
            7   1:连接,0:未连接  显示外屏
            8   1:连接,0:未连接  显示内屏
            9   1:连接,0:未连接  DSM
            10  1:连接,0:未连接  BSD
            11  1:连接,0:未连接  ADAS
            12  1:连接,0:未连接  第一路摄像头
            13  1:连接,0:未连接  第二路摄像头
            14  1:连接,0:未连接  第三路摄像头
            15  1:连接,0:未连接  第四路摄像头
            16  1:连接,0:未连接  第五路摄像头
            17  1:连接,0:未连接  第六路摄像头
            18  1:连接,0:未连接  第七路摄像头
            19  1:连接,0:未连接  继电器输入状态 1:高电平 0:低电平
            20  1:连接,0:未连接  继电器输出状态 1:高电平 0:低电平
            21~31   保留
            28(锐明) 1:管控模式
            30(锐明) 1:证件有效
            31(锐明) 1:有证
            */

            unsigned int uiZtcAlarmStatus;  //渣土车 违规报警状态
            /*
            0   举升作弊,标志维持至解除
            1   篷布作弊,标志维持至解除
            2   空重车作弊,标志维持至解除
            3   GPS作弊,标志维持至解除
            4   ECU作弊,标志维持至解除
            5(锐明)  速度作弊
            6(锐明)  开关箱作弊
            7(锐明)  GPS 长时间不定位
            5~15    保留
            16  车速线被剪报警,标志维持至解除
            17  (重车)未密闭行驶报警,标志维持至解除
            18  非法举升,标志维持至解除
            19  无证,标志维持至解除
            20  证件无效,标志维持至解除
            21  偷运,标志维持至解除
            22  越界,标志维持至解除
            23~31   保留
            */

            unsigned char ucZtcLimitStatus; //渣土车 限制状态 Bit0:锁车 Bit1:限速 Bit2:限举
            unsigned char ucZtcEleFenceType;    //电子围栏类型 1:工地;2:禁区;3:消纳场;4:限速圈;5:停车场;6:路线
            unsigned char ucZtcEleFenceDirection;   //电子围栏方向 (0:进;  1:出)
            unsigned char ucZtcMuckType;    //(锐明)渣土类型  1:普通渣土 2:砂石 3:建筑废料 4:盾构土
            unsigned int uiZtcCarLockReason;    //渣土车 锁车原因 0:未锁车 1:平台下发锁车 8:身份验证未通过锁车
            unsigned int uiZtcSpeedLimitReason; //渣土车 限速原因 0:未限速(最大车速) 1:平台下发限速 2:(重车)顶盖未密闭行驶限速
                                                // 3:重车越界限速 4:卫星信号被恶意屏蔽限速 5:无证进入工地限速
                                                // 7:GNSS异常限速 9:举升传感器故障或未连接限速 15:SIM卡故障限速
                                                // 16:货箱摄像头故障或未连接限速 21:区域限速 23:重车无核准证限速
            unsigned int uiZtcLiftLimitReason;  //渣土车 限举原因 0:未限举 1:平台下发限举 2:重车不在指定区域限举(在非指定区域限举)
                                                // 3:无证进入工地限举 4:无证进入消纳场限举
        };
    };

    int nDriverID;                      //司机ID
}GPSVehicleLongGps_S;
const int GPSVehicleLongGps_LEN = sizeof(GPSVehicleLongGps_S);

解析流程:
A、先按GPSVehicleGpsNew_S结构体来解析,判断 uiLongGps变量,如果uiLongGps =1,则后面还有72个字节的内容为GPSVehicleLongGps_S的数据。
B、uiLongGps为0,则这部分的gps数据已经解析完了。

以下为JAVA的解析代码示例

//解析GPS轨迹信息
        private void analyVehicleTrack(byte[] data, int offset, StandardDeviceTrack track) {
                offset += 4;
                int temp = ByteArrayUtils.byteArray2int(data, offset);
                //时间
                offset += 4;
                //速度值 KM/S        9999 = 999.9         范围(0-16384)
                track.setSpeed(temp & 0x00003FFF);
                //油量   升        9999 = 99.99         范围(0-262100)
                track.setYouLiang((temp>>14) & 0x0003FFFF);
                //里程   公里        9999 = 9.999
                temp = ByteArrayUtils.byteArray2int(data, offset);
                offset += 4;
                track.setLiCheng(temp);
                //地面航向,(0-360) 范围(0-512)
                temp = ByteArrayUtils.byteArray2int(data, offset);
                offset += 4;
                track.setHuangXiang( temp & 0x01FF );
                //状态        0位表示GPS定位状态(0无效,1有效)
                temp = ByteArrayUtils.byteArray2int(data, offset);
                track.setStatus1(temp);
                offset += 4;
                analyVehicleStatus(temp,track);
                //状态2
                temp = ByteArrayUtils.byteArray2int(data, offset);
                track.setStatus2(temp);
                offset += 4;
                //状态3
                temp = ByteArrayUtils.byteArray2int(data, offset);
                track.setStatus3(temp);
                offset += 4;
                //状态4
                temp = ByteArrayUtils.byteArray2int(data, offset);
                track.setStatus4(temp);
                offset += 4;
                //温度传感器1
                short sTemp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                track.setTempSensor1((int)sTemp);
                //温度传感器2
                sTemp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                track.setTempSensor2((int)sTemp);
                //温度传感器3
                sTemp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                track.setTempSensor3((int)sTemp);
                //温度传感器4
                sTemp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                track.setTempSensor4((int)sTemp);
                //经度        4字节 整数部分        9999999 = 9.999999
                temp = ByteArrayUtils.byteArray2int(data, offset);
                offset += 4;
                track.setJingDu(temp);
                //纬度        4字节 整数部分        9999999 = 9.999999
                temp = ByteArrayUtils.byteArray2int(data, offset);
                offset += 4;
                track.setWeiDu(temp);
                //高度        2字节 整数部分        9999999 = 9.999999
                temp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                track.setGaoDu(temp);
                //
                temp = ByteArrayUtils.byteArray2short(data, offset);
                offset += 2;
                //附加信息标志位 0-公交OBD 1-视频部标 2-UAE校车
                track.setExtraFlag((temp>>12)& 0x00000001);

                //停车时长 秒        在静止状态时有效
                temp = ByteArrayUtils.byteArray2int(data, offset);
                offset += 4;
                track.setParkTime(temp);


                保留参数
                offset += 16;
        }

注:手动插入数据库的数据很可能解析失败,建议用系统自动写入数据库的数据进行测试

数据来源 help.cmsv8.com
901 篇文档 · 225 个视频 · docs.alwaycare.com