视频监控平台:交通运输标准JTT808设备SDK接入源代码函数分享

目录

一、JT/T 808标准简介

(一)概述

(二)协议特点

1、通信方式

2、鉴权机制

3、消息分类

(三)协议主要内容

1、位置信息

2、报警信息

3、车辆控制

4、数据转发

二、代码和解释

(一)代码和注释

(二)代码解释

1、概述

2、包含的目录和库

3、 宏定义

4、结构体定义

5、类定义(`CJT808NetSDKAPI`)

6、 静态变量和函数

7、成员变量


一、JT/T 808标准简介

(一)概述

        JT/T 808标准,全称为《道路运输车辆卫星定位系统终端通讯协议及数据格式》,是由国家交通运输部发布的一个重要标准。这个标准主要规定了道路运输车辆卫星定位系统车载终端与监控平台之间的通信协议,包括信息交换的格式、数据的加密传输、报警信息的处理等,为车辆监管和服务提供了统一的数据通信标准,实现了信息的快速传输和远程控制。

(二)协议特点

1、通信方式

        采用TCP协议作为通信协议,确保数据传输的稳定性和可靠性。

2、鉴权机制

        车载终端与监控平台之间建立了鉴权机制,确保通信双方的身份合法性。

3、消息分类

        将不同功能的消息分为不同的消息类别,如位置信息汇报、报警信息上传、车辆控制等,每个消息类别都有独特的消息ID

(三)协议主要内容

1、位置信息

        JT/T808标准定义了采集车辆位置信息的方式和格式,如经纬度、速度、方向等,并规定了位置信息上报的频率和条件。

2、报警信息

        标准中定义了不同类型的报警信息,如超速报警、紧急报警等,并规定了报警信息的上报和处理方式。

3、车辆控制

        标准还规定了终端对车辆某些功能的控制,如车辆远程锁车、解锁等。

4、数据转发

        定义了终端之间的数据转发方式,允许终端之间相互通信。

二、代码和解释

(一)代码和注释

        以下部分C++代码是JT808标准接入视频监控平台的SDK代码的头文件,列出了相关的函数,具体如下:

// JT808_NET_SDK_API_H__ header file/* * 定义CJT808NetSDKAPI类,该类用于处理JT808协议的网络通信。* JT808是一种中国制定的车辆监控通信协议。* 本类封装了网络通信的功能,包括登录/登出、数据接收/发送、线程处理等。*/#ifndef __JT808_NET_SDK_API_H__
#define __JT808_NET_SDK_API_H__// 包含标准目录遍历类
#include <dirent.h>
// 引入STL中的map和list容器
#include <map>
#include <list>// 引入自定义的NetSdkApp类,用于处理网络相关应用逻辑
#include "NetSdkApp.h"
// 引入类型定义
#include "TypeDef.h"
// 引入JT808协议相关定义
#include "jt808.h"
// 引入消息中心,用于处理各种消息
#include "MsgCenter.h"// 引入线程相关的类和定义
#include "jthread.h"
#include "TransportMgr.h"
#include "TcpServer.h"// 引入JT808常量定义
#include "JT808Constant.h"
// 可能引入JT808流处理类,但此行被注释掉了
// #include "JT808Stream.h"// 使用命名空间jthread,以便于使用线程相关的类和函数
using namespace jthread;// 定义最大缓存大小
#define JT808_CACHE_MAX_SIZE 1024*2// 定义一个结构体用于缓存接收到的数据
typedef struct _Jt808RecvCache
{// 指向缓存的指针UINT8 *pCache;// 缓存的最大大小int iCacheSize;// 当前缓存的大小int iCurCacheSize;// 结构体的构造函数,初始化成员变量_Jt808RecvCache(){pCache = NULL;iCacheSize = JT808_CACHE_MAX_SIZE;iCurCacheSize = 0;}
}Jt808RecvCache;// CJT808NetSDKAPI类声明
class CJT808NetSDKAPI: public JThread, public CTransportMgr
{
public:// 构造函数和析构函数CJT808NetSDKAPI();~CJT808NetSDKAPI();// 初始化方法void Init(void);// 清理方法void Unit(void);// 登录方法,传入服务器IP和端口long Login(const char *ip, UINT16 port);// 登出方法,传入登录IDvoid Logout(long Loginid);// 线程执行方法void* Thread(void);// 线程退出方法void  ThreadQuit(void);// 从网络接收数据的接口int RecvDataFromNetwork(void);// 向网络发送数据的接口int SendDataToNetwork(void);// 回调函数,处理接收到的数据包int RecvPacketCallBack(CMySocket *pMySocket, const char *pData, int len, char *pSrcIP, UINT16 SrcPort);// 回调函数,处理TCP套接字异常int TcpSockExceptionCallBack(CMySocket *pMySocket);// 处理接收到的消息int MsgProcess(CMySocket *pMySocket, char *pSrcIP, UINT16 SrcPort, Jt808_Head *pHead, char* pBodyData, int BodyLen);// 构造基础响应消息int MsgBaseRsp(CMySocket *pMySocket, char *pSrcIP, UINT16 SrcPort, Jt808_Head *pHead, WORD MsgType, char * pRspData, int DataLen);// 构造通用响应消息int MsgCommonRsp(CMySocket *pMySocket, char *pSrcIP, UINT16 SrcPort, Jt808_Head *pHead, int RetCode);// 构造基础请求消息int MsgBaseReq(CMySocket *pMySocket, char *pSrcIP, UINT16 SrcPort, WORD MsgType, char * pRspData, int DataLen);// 构造实时播放请求消息int RealPlayReq(CMySocket *pMySocket, char *pSrcIP, UINT16 SrcPort, int ChanID);private:// 静态变量和互斥锁,用于管理JT808索引static int jt808Index;static CCritSec CritSec_jt808Index;int JT808IndexAdd(){CAutoLock AutoLock(&CritSec_jt808Index);return ++jt808Index;}private:	// 本地主机IP地址和端口,用于RTSPchar   MyIpAddr[IPSTR_MAX_LEN+4];UINT16 MyPort;	// 进程退出标志bool  	ExitFlag;	// TCP服务器对象CTcpServer *pTcpSvr;	// 暂时先使用一个Jt808RecvCache *m_pStack;};// 文件结束宏
#endif /* INSTRUCTCONVERT_H_ */

(二)代码解释

1、概述

        头文件定义了一个名为`CJT808NetSDKAPI`的比较复杂的类,该类继承了`JThread`和`CTransportMgr`两个接口。

        该文件是用于处理JT808协议的网络通信的SDK(软件开发工具包),包括数据接收、发送、处理和缓存管理等。类也包含了许多网络通信的方法,如登录、登出、数据接收和发送等。它还包含了一些回调函数,用于处理接收到的数据包和TCP套接字异常。此外,它还定义了一些静态变量和互斥锁,用于管理JT808索引。

        具体解释如下所述。

2、包含的目录和库

           - `#include <dirent.h>`:用于目录操作。

           - `#include <map>` 和 `#include <list>`:用于标准模板库中的映射和列表数据结构。

           - `#include "NetSdkApp.h"`:可能是网络应用相关的头文件。

           - `#include "TypeDef.h"`:包含类型定义的头文件。

           - `#include "jt808.h"`:JT808协议相关的定义。

           - `#include "MsgCenter.h"`:消息中心的定义。

           - `#include "jthread.h"`:可能是自定义的线程类。

           - `#include "TransportMgr.h"`:传输管理类的定义。

           - `#include "TcpServer.h"`:TCP服务器类的定义。

           - `#include "JT808Constant.h"`:JT808常量定义。

3、 宏定义

   - `#define JT808_CACHE_MAX_SIZE 1024*2`:

        定义了接收缓存的最大大小为2KB。

4、结构体定义

   - `typedef struct _Jt808RecvCache Jt808RecvCache;`:

        定义了一个用于接收缓存的结构体。

5、类定义(`CJT808NetSDKAPI`)

           - 这个类继承了`JThread`和`CTransportMgr`,这意味着它具有线程功能和传输管理功能。

           - 类中定义了多个成员函数,包括初始化、清理、登录、登出、接收网络数据、发送网络数据等。

           - 还有回调函数,如接收数据包回调和TCP套接字异常回调。

           - 成员函数`MsgProcess`用于处理消息,`MsgBaseRsp`和`MsgCommonRsp`用于发送基础响应和通用响应,`MsgBaseReq`用于发送基础请求,`RealPlayReq`用于实况播放请求。

6、 静态变量和函数

   - `static int jt808Index;` 和 `static CCritSec CritSec_jt808Index;`:

        用于管理JT808索引的静态变量和互斥锁。

   - `static int JT808IndexAdd()`:

        一个静态函数,用于增加JT808索引。

7、成员变量

           - `char MyIpAddr[IPSTR_MAX_LEN+4];` 和 `UINT16 MyPort;`:本地IP地址和端口。

           - `bool ExitFlag;`:进程退出标志。

           - `CTcpServer *pTcpSvr;`:TCP服务器对象指针。

           - `Jt808RecvCache *m_pStack;`:接收缓存堆栈。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《ESP8266通信指南》13-Lua 简单入门(打印数据)

往期 《ESP8266通信指南》12-Lua 固件烧录-CSDN博客 《ESP8266通信指南》11-Lua开发环境配置-CSDN博客 《ESP8266通信指南》10-MQTT通信&#xff08;Arduino开发&#xff09;-CSDN博客 《ESP8266通信指南》9-TCP通信&#xff08;Arudino开发&#xff09;-CSDN博客 《ESP82…

AJAX知识点(前后端交互技术)

原生AJAX AJAX全称为Asynchronous JavaScript And XML,就是异步的JS和XML&#xff0c;通过AJAX可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无需刷新就可获取数据。 AJAX不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方式 …

C语言【文件操作 2】

文章目录 前言顺序读写函数的介绍fputc && fgetcfputcfgetc fputs && fgetsfputsfgets fprintf && fscanffprintffscanf fwrite && freadfwritefread 文件的随机读写fseek函数偏移量ftell函数rewind函数 文件的结束判断被错误使用的feof 结语 …

Linux与windows网络管理

文章目录 一、TCP/IP1.1、TCP/IP概念TCP/IP是什么TCP/IP的作用TCP/IP的特点TCP/IP的工作原理 1.2、TCP/IP网络发展史1.3、OSI网络模型1.4、TCP/IP网络模型1.5、linux中配置网络网络配置文件位置DNS配置文件主机名配置文件常用网络查看命令 1.6、windows中配置网络CMD中网络常用…

认识卷积神经网络

我们现在开始了解卷积神经网络&#xff0c;卷积神经网络是深度学习在计算机视觉领域的突破性成果&#xff0c;在计算机视觉领域&#xff0c;往往我们输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高&#xff0c;图像也很难保留原有的特征&#xff0…

python 和 MATLAB 都能绘制的母亲节花束!!

hey 母亲节快到了&#xff0c;教大家用python和MATLAB两种语言绘制花束~这段代码是我七夕节发的&#xff0c;我对代码进行了简化&#xff0c;同时自己整了个python版本 MATLAB 版本代码 function roseBouquet_M() % author : slandarer% 生成花朵数据 [xr,tr]meshgrid((0:24).…

jQuery-1.语法、选择器、节点操作

jQuery jQueryJavaScriptQuery&#xff0c;是一个JavaScript函数库&#xff0c;为编写JavaScript提供了更高效便捷的接口。 jQuery安装 去官网下载jQuery&#xff0c;1.x版本练习就够用 jQuery引用 <script src"lib/jquery-1.11.2.min.js"></script>…

我的Transformer专栏来啦

五一节前吹的牛&#xff0c;五一期间没完成&#xff0c;今天忙里偷闲&#xff0c;给完成了。 那就是初步拟定了一个《Transformer最后一公里》的写作大纲。 之前一直想写一系列Transformer架构的算法解析文章&#xff0c;但因为一直在忙&#xff08;虽然不知道在忙啥&#xf…

倍思|西圣开放式耳机哪个好用?热门机型深度测评!

在数字化生活的浪潮中&#xff0c;耳机已成为我们不可或缺的伴侣。然而&#xff0c;长时间佩戴传统的耳机容易导致的耳道疼痛等问题&#xff0c;严重的话将影响听力。许多人开始寻找更为舒适的佩戴体验。开放式耳机因为不需要需直接插入耳道的设计&#xff0c;逐渐受到大众的青…

Apipost使用心得,让接口文档变得更清晰,更快捷

Idea和Apipost结合使用 Idea 安装插件Apipost-Helper-2.0 在【file】–>【settings】–>【Plugins】搜索 “Apipost-Helper-2.0”–>【install】&#xff0c;重启Idea 编写controller接口 在idea中编写业务功能及接口之后&#xff0c;在controller中鼠标【右键】单…

Linux下的SPI通信

SPI通信 一. 1.SPI简介: SPI 是一种高速,全双工,同步串行总线。 SPI 有主从俩种模式通常由一个主设备和一个或者多个从设备组从。SPI不支持多主机。 SPI通信至少需要四根线,分别是 MISO(主设备数据输入,从设备输出),MOSI (主设数据输出从设备输入),SCLK(时钟信号),CS/SS…

安卓开发--新建工程,新建虚拟手机,按键事件响应

安卓开发--新建工程&#xff0c;新建虚拟手机&#xff0c;按键事件响应 1.前言2.运行一个工程2.1布局一个Button2.2 button一般点击事件2.2 button属性点击事件2.2 button推荐点击事件 本篇博客介绍安卓开发的入门工程&#xff0c;通过使用按钮Buton来了解一个工程的运作机制。…

【SpringBoot记录】自动配置原理(1):依赖管理

前言 我们都知道SpringBoot能快速创建Spring应用&#xff0c;其核心优势就在于自动配置功能&#xff0c;它通过一系列的约定和内置的配置来减少开发者手动配置的工作。下面通过最简单的案例分析SpringBoot的功能特性&#xff0c;了解自动配置原理。 SpringBoot简单案例 根据S…

第 129 场 LeetCode 双周赛题解

A 构造相同颜色的正方形 枚举&#xff1a;枚举每个 3 3 3\times 3 33的矩阵&#xff0c;判断是否满足条件 class Solution {public:bool canMakeSquare(vector<vector<char>>& grid) {for (int i 0; i < 2; i)for (int j 0; j < 2; j) {int c1 0, c…

hypertherm海宝EDGE控制器显示屏工控机维修

海宝工控机维修V3.0/4.0/5.0&#xff1b;hypertherm数控切割机系统MICRO EDGE系统显示屏维修&#xff1b; 美国hypertherm公司mirco edge数控系统技术标准如下&#xff1a; 1&#xff09; p4处理器 2&#xff09; 512mb内存 3&#xff09; 80g硬盘&#xff0c;1.44m内置软驱…

IOS Xcode证书配置和ipa打包流程(附详细图文教程)

IOS Xcode证书配置和ipa打包流程&#xff08;附图文教程&#xff09; 前言ipa文件简介证书文件简介Provisioning Profile描述文件简介当前环境版本Xcode证书配置和ipa打包流程生成Apple Distribution Certificates证书创建描述文件&#xff08;Provisioning Profiles&#xff0…

Goland开发者软件激活使用教程

Goland开发者工具&#xff1a; Goland是由JetBrains公司推出的专门针对Go语言设计的集成开发环境&#xff08;IDE&#xff09;。这款工具具有智能的代码补全、强大的代码导航和重构功能&#xff0c;同时提供了丰富的调试工具&#xff0c;能够满足Golang开发者的各种需求。 Gol…

pwn(一)前置技能

以下是pwn中的题目&#xff08;漏洞&#xff09;类型&#xff1a; 关于pwn的学习&#xff1a; 一.什么是pwn&#xff1f;&#xff08;二进制的漏洞&#xff09; "Pwn"是一个俚语&#xff0c;起源于电子游戏社区&#xff0c;经常在英语中用作网络或电子游戏文化中的…

数字化转型浪潮下,信创如何破浪前行,六招助你稳中求胜

信创改造落地过程中的六个难点及应对经验 技术生态迅猛发展&#xff0c;尚未成熟且多元化&#xff0c;信创技术栈应用经验匮乏&#xff0c;导致改造落地工作面临重重挑战。在此背景下&#xff0c;如何克服技术难题&#xff0c;推动信创改造顺利实施&#xff0c;成为业界亟待解决…