JT808协议实现及obd数据采集源码

使用jt808-2011协议进行实现
1:linux嵌入式版本
代码是与JT808终端侧部分,
开发语言:C语言
运行平台:linux、NDK环境、PC模拟环境

2:单片机版本
通过OBD实现车内系统的数据采集,采用808协议进行数据上传;
通过TCP socket与平台建立连接,将OBD的数据、GPS数据、G-senor数据以交通部布标808协议格式发送到平台,信号不好情况,自己缓存数据到flash,支持OTA远程升级功能

808头文件定义
#define UP_UNIRESPONSE 0x0001 //终端通用应答//
#define UP_HEARTBEAT 0x0002 //终端心跳//
#define UP_REGISTER 0x0100 //终端注册//
#define UP_LOGOUT 0x0101 //终端注销//
#define UP_AUTHENTICATION 0x0102 //终端鉴权//
#define UP_POSITIONREPORT 0x0200

#define MSGBODY_NOPACKAGE_POS 13
#define MSGBODY_PACKAGE_POS 17
#define PROTOCOL_SIGN 0x7E //标识位//
#define PROTOCOL_ESCAPE 0x7D //转义标识//
#define PROTOCOL_ESCAPE_SIGN 0x02 //0x7e<–>0x7d后紧跟一个0x02//
#define PROTOCOL_ESCAPE_ESCAPE 0x01 //0x7d<–>0x7d后紧跟一个0x01//

#define DOWN_UNIRESPONSE 0x8001 //平台通用应答//
#define DOWN_REGISTERRSPONSE 0x8100 //终端注册应答//
#define OBDBUFFER_SIZE 20
#define MAX_PROFRAMEBUF_LEN 512

#define BigLittleSwap16(A) ((((unsigned short)(A) & 0xff00) >> 8) |
(((unsigned short)(A) & 0x00ff) << 8))

#define BigLittleSwap32(A) ((((unsigned long)(A) & 0xff000000) >> 24) |
(((unsigned long)(A) & 0x00ff0000) >> 8) |
(((unsigned long)(A) & 0x0000ff00) << 8) |
(((unsigned long)(A) & 0x000000ff) << 24))

#define LOOP_BUFFER_SIZE 5

#pragma pack(1)

typedef struct
{
u8 u8Para1; //参数一//
u8 u8Para2; //参数二//
u16 u16Para3; //参数三//
u16 u16Para4; //参数四//
u32 u32Para5; //参数五//
u32 u32Para6; //参数六//
u8* buf;
}sProPara;

typedef struct
{
u8 flag;
unsigned short len;
unsigned char buffer[400];

}_SendBuffer;
typedef struct
{
unsigned head;
unsigned char tail;
_SendBuffer SendBuf[LOOP_BUFFER_SIZE];

}_SendDataLoop;

typedef union
{
struct bit
{
u16 msglen:10; //消息体长度//
u16 encrypt:3; //数据加密方式// //当此三位都为0,表示消息体不加密// 当第10位为1,表示消息体经过RSA算法加密
u16 package:1; //分包标记//
u16 res1:2; //保留//
}bit;
u16 val;
}sMsgattribute; //消息体属性格式结构//

typedef struct
{
u16 id; //消息ID//
sMsgattribute attribute; //消息体属性//
u8 phone[6]; //终端手机号//
u16 serialnum; //消息流水号//
u16 totalpackage; //消息总包数// // 该消息分包后的总包数//
u16 packetseq; //包序号// //从1开始//
}sMessagehead; //消息头内容//

typedef union
{
struct bita
{
u32 sos:1; //紧急报瞥触动报警开关后触发//
u32 overspeed:1; //超速报警//
u32 fatigue:1; //疲劳驾驶//
u32 earlywarning:1; //预警//
u32 gnssfault:1; //GNSS模块发生故障//
u32 gnssantennacut:1; //GNSS天线未接或被剪断//
u32 gnssantennashortcircuit:1; //GNSS天线短路//
u32 powerlow:1; //终端主电源欠压//

 u32 powercut:1;                 //终端主电源掉电//u32 lcdfault:1;                  //终端LCD或显示器故障//u32 ttsfault:1;                      //TTS模块故障//u32 camerafault:1;                   //摄像头故障//u32 obddtc:1;                      //OBD故障码//u32 res1:5;                       //保留//u32 daydriveovertime:1;           //当天累计驾驶超时//u32 stopdrivingovertime:1;          //超时停车//u32 inoutarea:1;                    //进出区域//u32 inoutroad:1;                    //进出路线//u32 roaddrivetime:1;                //路段行驶时间不足/过长//u32 roaddeviate:1;               //路线偏离报警//u32 vssfault:1;                   //车辆VSS故障//u32 oilfault:1;                      //车辆油量异常//u32 caralarm:1;                   //车辆被盗(通过车辆防盗器)//u32 caraccalarm:1;             //车辆非法点火//u32 carmove:1;                    //车辆非法位移//u32 collision:1;                  //碰撞侧翻报警//u32 res2:2;                       //保留//
}bita;
u32 val;

}sbitalarm;

typedef union
{
struct bits
{
u32 acc:1; //ACC 0: ACC关;1:ACC开//
u32 location:1; //定位 0:未定位;1:定位//
u32 snlatitude:1; //0:北纬:1:南纬//
u32 ewlongitude:1; //0:东经;1:西经//
u32 operation:1; //0:运营状态:1:停运状态//
u32 gpsencrypt:1; //0:经纬度未经保密插件加密;l:经纬度已经保密插件加密//
u32 trip_stat:2; //00:等待新行程01:行程开始10:正在行驶11:行程结束,(有附带数据0x07)//
u32 Alarm_en:1; //防盗功能打开关闭//
u32 ResetState:1; //上电状态上报//

 u32 oilcut:1;                       //0:车辆油路正常:1:车辆油路断开//u32 circuitcut:1;                  //0:车辆电路正常:1:车辆电路断开//u32 doorlock:1;                    //0:车门解锁;1:车门加锁//u32 gpsen:1;                     // 1:无GPS数据,但字段占用 0:有GPS数据//u32 res2:18;                      //保留//
}bits;
u32 val;

}sbitstate;

typedef struct
{
sbitalarm alarm;
sbitstate state;
u32 latitude; //纬度(以度为单位的纬度值乘以10的6次方,精确到百万分之一度)//
u32 longitude; //经度(以度为单位的纬度值乘以10的6次方,精确到百万分之一度)//
u16 atitude; //海拔高度,单位为米(m)//
u16 speed; //速度 1/10km/h//
u16 direction; //方向 0-359,正北为0,顺时针//
u8 time[6]; //时间 BCD[6] YY-MM-DD-hh-mm-ss(GMT+8时间,本标准之后涉及的时间均采用此时区)//
}sPositionbasicinfo;

typedef struct
{

u8 Sim808Step;
u8 AnsWerFalg;
u8 AuthenFlag;
u16 AutionLen;
u8 AutionBuf[16];

}SIM808DEAL;

#pragma pack()

extern u8 ProTBuf[512];
extern u8 ProTempBuf[512];
extern sProPara ProPara;
u16 ProFrame_Pack(u8 dec,u16 Cmd,sProPara Para,u8* Tempbuf);
u8 SVR808_FameDeal(void);
u8 Up_Register(void);
u8 UP_Authentication(void);
void ProFrameRec(u8 data);
void ProFramePrase(u8* FrameData,u16 Framelen,u16* ResId);

Email:braveban@163.com

jt808、obd采集源码相关推荐

  1. 百度相关搜索软件_Python与seo,百度关键词相关搜索关键词采集源码

    百度关键词相关搜索关键词采集源码 瞎写的,看看就好! #百度相关搜索# -*- coding=utf-8 -*-#20200714 by 微信:huguo00289import requests,ti ...

  2. 【Python与SEO】搜狗微信搜索下拉框词采集多线程/异步采集源码公布

    随意写了一下,更多可关注本渣渣微信公众号:二爷记!! 欢迎与本渣渣交流!!! 运行效果: 搜狗微信搜索下拉框词采集核心代码参考: #微信搜索下拉词采集 #首发:微信公众号:二爷记 #author:微信 ...

  3. 【python】又拍云采集工具助手exe带python图片采集源码

    [python]又拍云采集工具助手exe带python图片采集源码 论坛的老哥要的东西!练手试了一下! 技术比较渣,见谅! 拿去玩! 适合想要获取 又拍云 相册图片的需求! 自己测试了一下,没有用多线 ...

  4. 小红书关键字标题采集源码PHP采集程序

    通过小红书网址或手机app复制带网址内容提取出小红书链接从而获取关键字标题采集源码PHP采集程序 程序界面效果 查询后效果 手机端采集效果: 小红书关键字标题采集源码PHP采集程序有本人手写代码仿制, ...

  5. [分享源码] 美女写真图片采集源码

    昨天无聊写了一个采集图片的源码,又可以说是爬虫,我将某个网站里的美女图片写真一共24337张图片的链接全部爬下来了,有需要的自己写多几条下载线程来进行下载. 其他就不多说了,自己看源码吧,很简单的.( ...

  6. Python与seo工具脚本,360/搜狗相关搜索词采集源码参考

    搜索引擎相关搜索词应该是不少seoer在寻找和选择使用的关键词拓展类别,除开热门的百度相关搜索词采集,当然还有360搜索引擎以及搜狗搜索引擎,当然知道方法以后,应用python来实现,基本都是大同小异 ...

  7. ForeSpider数据采集系统如何采集源码中看不到的数据

    以前介绍过如何从网页源码中抓取自己想要的数据,可是还有很多数据是源码中看不到的.那今天来给大家讲一下如何抓取源码中看不到的数据. 如上图中,我想取到红框中"保证金"的金额,但是通过 ...

  8. 精仿CNZZ网站访客统计系统源码 | 网页访客抓取采集源码 | 网站访客流量统计源码

    源码简介: 仿cnzz多用户统计系统,功能强大,界面完美仿照cnzz统计!支持所有浏览器不乱码,程序是完整,没有删除任何东西,请大家放心使用,想建立自己的统计站点就这么简单! 安装的时候先还原数据库  ...

  9. NtripShare OpenSource/NtripShare GNSS共享计划 -- JT808终端模拟器源码(四)

    JT808终端模拟器,请勿用于商业用途! 开源地址:https://gitee.com/forgy/jt808-terminal

最新文章

  1. 错误记录 ---------------------- 乱七八糟
  2. 计算机安全原理与实践_《计算机图形学原理及实践》学习笔记之第三章
  3. 明年起,汉语正式纳入俄罗斯“高考”,光看题目我都要笑出声了!
  4. 日期工具类---DateUtil
  5. FE.ES-理解Event Loop
  6. chromium笔记目录
  7. Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi..
  8. 232转485通讯测试软件,(DIY制作)多功能调试工具——实现USB转:485/232/NRF24L01等(原理图和程序)...
  9. 图像的旋转——imrotate
  10. CVPR 2021最全论文开放下载!附pdf下载链接!
  11. Android图标下载网站
  12. 苹果开发者账号添加受信任电话号
  13. 对日软件工程师的几种招聘要求
  14. 论文模型构建的步骤_Deep Learning of Graph Matching论文解读
  15. Echarts图表之雷达图(一)
  16. RealSense 动态校准
  17. 拯救全球变暖,人工智能被用于寻找可降温地球的珊瑚礁
  18. 架构设计:不存在放之四海皆准的解决方案
  19. 一阶rc matlab,matlab – 一阶RC滤波器的时间离散实现
  20. 预防网络诈骗PPT模板

热门文章

  1. 2023年新自采集壁纸网页源码+简约大气
  2. 连接数据库失败提示hba.conf不符合的处理方法
  3. 明明已部署EDR,服务器为什么还是被入侵了?
  4. 守护云原生安全,青藤让浙江移动“心里更有底”
  5. 房地产业务学习 04 -房企信息化 谁忽悠了谁
  6. Leetcode中级算法-动态规划01
  7. cij期刊_核心期刊评价与文献计量学研究CJournalJLX
  8. ArcGIS 同一要素图层合并
  9. 粒子群算法python(含例程代码与详解)
  10. 文献管理软件--zotero基本使用