⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 record_protocol.h

📁 车载GPS监控终端的完整代码,与监控中心的通讯采用GPRS.
💻 H
字号:
/********************************************************\
*	文件名:  Record_Protocol.H
*	创建时间:2005年6月22日
*	创建人:  
*	版本号:  1.00
*	功能:	  定义车载终端与系统中心之间的无线协议
*	文件属性:公共文件
*	修改历史:(每条详述)
	协议说明:

	1,来自中心下行的针对行使记录仪的参数设置的数据
	2,来自记录仪针对的参数设置的响应的数据
	3,来自记录仪主动发送的数据,但却不是需要主控直接转发,而是需要重新组包向中心发送的数据
	4,主控主动向记录仪发送的数据

故规定主控与记录仪之间的通讯协议的格式如下:

一,原来国标的通讯格式

通讯机发送给记录仪的数据格式

1,通讯机发送给记录仪的每帧数据格式
	a.起始字头(2字节,#AAH,#75H)
	b.命令字(1字节)
	c.数据块长度(2字节);
	d.保留(备用)字(1字节)
	e.数据块(若干字节)
	f.校验字节(1字节)


2,记录仪回送给通讯机的数据格式
	a.起始字头(2字节,#55H,#7AH);
	b.命令字(1字节);
	c.数据块长度(2字节);
	d.保留(备用)字(1字节);
	e.数据块(若干字节);
	f.校验字节(1字节)。

二,为了能使得GPS车载终端与记录仪更好形式的通讯,则需要修改GPS车载终端与记录仪之间的通讯协议为
1-1,通讯机发送给记录仪的每帧数据格式
	y.特征标志(1字节)
	a.起始字头(2字节,#AAH,#75H)
	b.命令字(1字节)
	c.数据块长度(2字节);
	d.保留(备用)字(1字节)
	e.数据块(若干字节)
	f.校验字节(1字节)
	g,包尾    (2字节,#0D,#0A)



2-1,记录仪回送给通讯机的数据格式
	y.特征标志(1字节)
	a.起始字头(2字节,#55H,#7AH)
	b.命令字(1字节)
	c.数据块长度(2字节)
	d.保留(备用)字(1字节)
	e.数据块(若干字节)
	f.校验字节(1字节)
	g,包尾    (2字节,#0D,#0A)

补充说明:
	增加了:y.特征标志(1字节),这里的特征标志有三种值,0,1,2.
				0:则表示是车载GPS主动发送给记录仪的命令。比如说(查询时间,并矫正,或者每一秒种的GPS数据点)
				1:则表示是中心下行通过车载GPS终端向记录仪发送的命令(需要记录仪返回,并通过GPS返回中心的命令)
				2:则表示是通过显示屏下行通过车载GPS终端向记录仪发送的命令(需要记录仪返回,并通过GPS返回显示屏的命令)

上载数据基本命令字列表见表A.15。
表A.15  上载命令字列表
命令字	功      能										记录仪回送信息

01H		采集驾驶员代码及对应的机动车驾驶证号码			设定的驾驶员代码及其对应的机动车驾驶证号码
02H		采集记录仪的实时时钟							记录仪的的实时时钟
03H		采集最近360h内的累计行驶里程数据				360h内的累计行驶里程数据
04H		采集记录仪中的车辆特征系数						设定的车辆特征系数
05H		采集最近360h内的行驶速度数据					360h内的行驶速度数据
06H		采集车辆VIN号、车牌号码、车牌分类				存储的车辆VIN号、车牌号码、分类
07H		采集记录仪中事故疑点数据						停车前20秒的速度数据,共10次。
08H		采集最近2个日历天内的累计行驶里程				最近2个日历天的累计行驶里程数据
09H		采集最近2个日历天内的行驶速度数据				最近2个日历天内的行驶速度数据
11H		采集最近2个日历天内的同一驾驶员连续驾驶
		时间超过3小时的所有记录数据						最近2个日历天内驾驶超时数据

表A.16  下传命令字列表

命令字	功      能										计算机或数据采集仪发送的信息

81H		设置驾驶员代码、驾驶证号码						驾驶员代码、驾驶证号码
82H		设置记录仪中的车辆VIN号、车牌号码、分类			车辆VIN号、车牌号、分类
C2H		设置记录仪时钟									北京时间时钟
C3H		设置车辆特征系数								车辆特征系数


扩展命令字

命令字	功      能										记录仪回送信息

20H		设置跟踪的间隔距离								跟踪的间隔距离
30H		采集跟踪的间隔距离								跟踪的间隔距离

22H		设置疲劳驾驶休息时间范围						疲劳驾驶休息时间范围
32H		采集疲劳驾驶休息时间范围						疲劳驾驶休息时间范围
23H		设置限制使能									限制使能
33H		采集限制使能									限制使能
34H		采集指定时间段内车辆疲劳驾驶记录数据			指定时间段内车辆疲劳驾驶记录数据
35H		采集事故疑点数据								事故疑点数据
36H		采集当前驾驶员信息								当前驾驶员信息
37H		采集指定时刻GJL记录数据							指定时刻GJL记录数据
38H		采集指定时间段内的行驶里程和车辆总累计行驶里程	指定时间段内的行驶里程和车辆总累计行驶里程


暂时归纳这几点:
	1,记录仪每一段时间会想显示终端发送当前的速度值,故超速报警部分的处理由车载GPS完成
	2,如果属于中心下行通过车载GPS与记录仪之间的数据通讯实行报错机制,而只是单纯的显示终端和记录仪,
	   车载GPS与记录仪之间的数据通讯不产生报错机制
	3,车载GPS一次可以接收0---32K的数据,可以依照记录仪合适的情形发送一包数据(如果数据需要多次传送才能发送完以后)
	4,如果记录仪在接受判断属于中心下行的数据后,在发送返回数据前,不在发送主动发送的数据包,如果属于多次分包发送的数据
	   则在最后一个数据包未发送完前,也不进行其他数据的发送。
	5,如果车载GPS在转发中心的查询数据后,如果没有接收到记录仪的返回数据,也不在主动发送其他数据包。
	   如果属于需要多次发送的数据,则记录仪发送一次数据后,则等待车载GPS通过TCP转发,然后,中心收到数据后,则发送一个
	   此数据包接收正确的包,然后转发给记录仪,记录仪则继续发送后面的数据,直至所有数据发送完成。
	6,在多个数据包传递的过程中,车载GPS一旦收到中心向记录仪发送的数据,则车载GPS停止其他数据向记录仪的发送。
	   多次数据传递完成后,车载GPS一旦有收到记录仪不是向中心发送的数据,则车载GPS开始恢复主动向记录仪发送数据的方式。

除了不需要车载GPS判断数据包命令字的,只需要判断是来自那里的数据,且是需要向记录仪发送的数据

1,来自显示屏的需要转发给记录仪的数据命令格式

 '@','%',L, data,'$','&'
说明 包头(2字节  '@','%' )
     整个数据的长度(1字节 L)
     数据区 (N字节,data)
     包尾(2字节 '$','&')
数据区的分析,如果属于传递给记录仪的命令字,则将此数据包的命令字去掉后的,在重新按记录仪与GPS之间的数据格式通讯

2,来自下行中心需要转发给记录仪的数据命令格式
说明:
	 解析数据包后,如果属于需要转发记
	 录仪的数据,则从新组包发送给记录仪后,则等待记录仪的返回数据,期间不发送其他类型的
	 数据给记录仪
\********************************************************/

/********************************************************\
关于记录仪国家标准的命令集的定义
\********************************************************/
//下行
#define		G_GET_CODEVID				0x01		//采集驾驶员代码及对应的机动车驾驶证号码
#define		G_GET_TIME					0x02		//采集记录仪的实时时钟
#define		G_GET_ALLDISTANCE			0x03		//采集最近360h内的累计行驶里程数据
#define		G_GET_EIGENVALUE			0x04		//采集记录仪中的车辆特征系数
#define		G_GET_ALLSPEED				0x05		//采集最近360h内的行驶速度数据
#define		G_GET_VIN					0x06		//采集车辆VIN号、车牌号码、车牌分类
#define		G_GET_ACCIDENTDATA			0x07		//采集记录仪中事故疑点数据
#define		G_GET_TWODISTANCE			0x08		//采集最近2个日历天内的累计行驶里程
#define		G_GET_TWOSPEED				0x09		//采集最近2个日历天内的行驶速度数据
#define		G_GET_TWODATA				0x11		//采集最近2个日历天内的同一驾驶员连续驾驶时间超过3小时的所有记录数据

#define		G_SET_CODEVID				0x81		//设置驾驶员代码、驾驶证号码
#define		G_SET_VIN					0x82		//设置记录仪中的车辆VIN号、车牌号码、分类
#define		G_SET_TIME					0xC2		//设置记录仪时钟
#define		G_SET_EIGENVALUE			0xC3		//设置车辆特征系数
//================================================
//上行
#define		G_GET_CODEVID_ECHO				0x01		//设定的驾驶员代码及其对应的机动车驾驶证号码
#define		G_GET_TIME_ECHO					0x02		//记录仪的的实时时钟
#define		G_GET_ALLDISTANCE_ECHO			0x03		//360h内的累计行驶里程数据
#define		G_GET_EIGENVALUE_ECHO			0x04		//设定的车辆特征系数
#define		G_GET_ALLSPEED_ECHO				0x05		//360h内的行驶速度数据
#define		G_GET_VIN_ECHO					0x06		//存储的车辆VIN号、车牌号码、分类
#define		G_GET_ACCIDENTDATA_ECHO			0x07		//停车前20秒的速度数据,共10次。
#define		G_GET_TWODISTANCE_ECHO			0x08		//最近2个日历天的累计行驶里程数据
#define		G_GET_TWOSPEED_ECHO				0x09		//最近2个日历天内的行驶速度数据
#define		G_GET_TWODATA_EHCO				0x11		//最近2个日历天内驾驶超时数据

#define		G_SET_CODEVID_ECHO				0x81		//驾驶员代码、驾驶证号码
#define		G_SET_VIN_EHCO					0x82		//车辆VIN号、车牌号、分类
#define		G_SET_TIME_EHCO					0xC2		//北京时间时钟
#define		G_SET_EIGENVALUE_EHCO			0xC3		//车辆特征系数

/********************************************************\
关于记录仪与GPS通讯的扩展命令集的定义
\********************************************************/
//下行
#define		K_SET_INTERDISTANCE				0x20		//设置跟踪的间隔距离
#define		K_GET_INTERDISTANCE				0x30		//采集跟踪的间隔距离
#define		K_SET_TIRE_RESTTIME				0x22		//设置疲劳驾驶休息时间范围
#define		K_GET_TIRE_RESTTIME				0x32		//采集疲劳驾驶休息时间范围
#define		K_SET_LIMIT_SWITCH				0x23		//设置限制使能
#define		K_GET_LIMIT_SWITCH				0x33		//采集限制使能
#define		K_GET_TIREDATA					0x34		//采集指定时间段内车辆疲劳驾驶记录数据
#define		K_GET_ACCIDENTDATA				0x35		//采集事故疑点数据
#define		K_GET_DRIVEDATA					0x36		//采集当前驾驶员信息
#define		K_GET_GJLDATA					0x37		//采集指定时刻GJL记录数据
#define		K_GET_ALLDISTANCE				0x38		//采集指定时间段内的行驶里程和车辆总累计行驶里程
#define		K_SEND_GPSDATA					0x40		//每一秒种发送给记录仪的GPS相关数据
//上行
#define		K_SET_INTERDISTANCE_ECHO				0x20		//设置跟踪的间隔距离响应
#define		K_GET_INTERDISTANCE_ECHO				0x30		//采集跟踪的间隔距离
#define		K_SET_TIRE_RESTTIME_ECHO				0x22		//疲劳驾驶休息时间范围
#define		K_GET_TIRE_RESTTIME_ECHO				0x32		//疲劳驾驶休息时间范围
#define		K_SET_LIMIT_SWITCH_ECHO					0x23		//设置限制使能
#define		K_GET_LIMIT_SWITCH_ECHO					0x33		//采集限制使能
#define		K_GET_TIREDATA_EHCO						0x34		//采集指定时间段内车辆疲劳驾驶记录数据
#define		K_GET_ACCIDENTDATA_ECHO					0x35		//采集事故疑点数据
#define		K_GET_DRIVEDATA_E_ECHO					0x4E		//采集当前驾驶员信息
#define		K_GET_GJLDATA_ECHO						0x37		//采集指定时刻GJL记录数据
#define		K_GET_ALLDISTANCE_ECHO					0x38		//采集指定时间段内的行驶里程和车辆总累计行驶里程
#define		K_RECEIVE_RECORDDATA					0x40		//记录仪定时的发送相关记录仪的数据


/********************************************************\
补充说明:
	根据GPS与记录仪通讯的有三种类型0,1,2三种。
	在这里归纳如下:
	可以通过类型0通讯的命令有:

\********************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -