Record_Protocol.H
上传用户:zanguozi01
上传日期:2014-02-19
资源大小:155k
文件大小:9k
源码类别:

GPS编程

开发平台:

Others

  1. /********************************************************
  2. * 文件名:  Record_Protocol.H
  3. * 创建时间:2005年6月22日
  4. * 创建人:  
  5. * 版本号:  1.00
  6. * 功能:   定义车载终端与系统中心之间的无线协议
  7. * 文件属性:公共文件
  8. * 修改历史:(每条详述)
  9. 协议说明:
  10. 1,来自中心下行的针对行使记录仪的参数设置的数据
  11. 2,来自记录仪针对的参数设置的响应的数据
  12. 3,来自记录仪主动发送的数据,但却不是需要主控直接转发,而是需要重新组包向中心发送的数据
  13. 4,主控主动向记录仪发送的数据
  14. 故规定主控与记录仪之间的通讯协议的格式如下:
  15. 一,原来国标的通讯格式
  16. 通讯机发送给记录仪的数据格式
  17. 1,通讯机发送给记录仪的每帧数据格式
  18. a.起始字头(2字节,#AAH,#75H)
  19. b.命令字(1字节)
  20. c.数据块长度(2字节);
  21. d.保留(备用)字(1字节)
  22. e.数据块(若干字节)
  23. f.校验字节(1字节)
  24. 2,记录仪回送给通讯机的数据格式
  25. a.起始字头(2字节,#55H,#7AH);
  26. b.命令字(1字节);
  27. c.数据块长度(2字节);
  28. d.保留(备用)字(1字节);
  29. e.数据块(若干字节);
  30. f.校验字节(1字节)。
  31. 二,为了能使得GPS车载终端与记录仪更好形式的通讯,则需要修改GPS车载终端与记录仪之间的通讯协议为
  32. 1-1,通讯机发送给记录仪的每帧数据格式
  33. y.特征标志(1字节)
  34. a.起始字头(2字节,#AAH,#75H)
  35. b.命令字(1字节)
  36. c.数据块长度(2字节);
  37. d.保留(备用)字(1字节)
  38. e.数据块(若干字节)
  39. f.校验字节(1字节)
  40. g,包尾    (2字节,#0D,#0A)
  41. 2-1,记录仪回送给通讯机的数据格式
  42. y.特征标志(1字节)
  43. a.起始字头(2字节,#55H,#7AH)
  44. b.命令字(1字节)
  45. c.数据块长度(2字节)
  46. d.保留(备用)字(1字节)
  47. e.数据块(若干字节)
  48. f.校验字节(1字节)
  49. g,包尾    (2字节,#0D,#0A)
  50. 补充说明:
  51. 增加了:y.特征标志(1字节),这里的特征标志有三种值,0,1,2.
  52. 0:则表示是车载GPS主动发送给记录仪的命令。比如说(查询时间,并矫正,或者每一秒种的GPS数据点)
  53. 1:则表示是中心下行通过车载GPS终端向记录仪发送的命令(需要记录仪返回,并通过GPS返回中心的命令)
  54. 2:则表示是通过显示屏下行通过车载GPS终端向记录仪发送的命令(需要记录仪返回,并通过GPS返回显示屏的命令)
  55. 上载数据基本命令字列表见表A.15。
  56. 表A.15  上载命令字列表
  57. 命令字 功      能 记录仪回送信息
  58. 01H 采集驾驶员代码及对应的机动车驾驶证号码 设定的驾驶员代码及其对应的机动车驾驶证号码
  59. 02H 采集记录仪的实时时钟 记录仪的的实时时钟
  60. 03H 采集最近360h内的累计行驶里程数据 360h内的累计行驶里程数据
  61. 04H 采集记录仪中的车辆特征系数 设定的车辆特征系数
  62. 05H 采集最近360h内的行驶速度数据 360h内的行驶速度数据
  63. 06H 采集车辆VIN号、车牌号码、车牌分类 存储的车辆VIN号、车牌号码、分类
  64. 07H 采集记录仪中事故疑点数据 停车前20秒的速度数据,共10次。
  65. 08H 采集最近2个日历天内的累计行驶里程 最近2个日历天的累计行驶里程数据
  66. 09H 采集最近2个日历天内的行驶速度数据 最近2个日历天内的行驶速度数据
  67. 11H 采集最近2个日历天内的同一驾驶员连续驾驶
  68. 时间超过3小时的所有记录数据 最近2个日历天内驾驶超时数据
  69. 表A.16  下传命令字列表
  70. 命令字 功      能 计算机或数据采集仪发送的信息
  71. 81H 设置驾驶员代码、驾驶证号码 驾驶员代码、驾驶证号码
  72. 82H 设置记录仪中的车辆VIN号、车牌号码、分类 车辆VIN号、车牌号、分类
  73. C2H 设置记录仪时钟 北京时间时钟
  74. C3H 设置车辆特征系数 车辆特征系数
  75. 扩展命令字
  76. 命令字 功      能 记录仪回送信息
  77. 20H 设置跟踪的间隔距离 跟踪的间隔距离
  78. 30H 采集跟踪的间隔距离 跟踪的间隔距离
  79. 22H 设置疲劳驾驶休息时间范围 疲劳驾驶休息时间范围
  80. 32H 采集疲劳驾驶休息时间范围 疲劳驾驶休息时间范围
  81. 23H 设置限制使能 限制使能
  82. 33H 采集限制使能 限制使能
  83. 34H 采集指定时间段内车辆疲劳驾驶记录数据 指定时间段内车辆疲劳驾驶记录数据
  84. 35H 采集事故疑点数据 事故疑点数据
  85. 36H 采集当前驾驶员信息 当前驾驶员信息
  86. 37H 采集指定时刻GJL记录数据 指定时刻GJL记录数据
  87. 38H 采集指定时间段内的行驶里程和车辆总累计行驶里程 指定时间段内的行驶里程和车辆总累计行驶里程
  88. 暂时归纳这几点:
  89. 1,记录仪每一段时间会想显示终端发送当前的速度值,故超速报警部分的处理由车载GPS完成
  90. 2,如果属于中心下行通过车载GPS与记录仪之间的数据通讯实行报错机制,而只是单纯的显示终端和记录仪,
  91.    车载GPS与记录仪之间的数据通讯不产生报错机制
  92. 3,车载GPS一次可以接收0---32K的数据,可以依照记录仪合适的情形发送一包数据(如果数据需要多次传送才能发送完以后)
  93. 4,如果记录仪在接受判断属于中心下行的数据后,在发送返回数据前,不在发送主动发送的数据包,如果属于多次分包发送的数据
  94.    则在最后一个数据包未发送完前,也不进行其他数据的发送。
  95. 5,如果车载GPS在转发中心的查询数据后,如果没有接收到记录仪的返回数据,也不在主动发送其他数据包。
  96.    如果属于需要多次发送的数据,则记录仪发送一次数据后,则等待车载GPS通过TCP转发,然后,中心收到数据后,则发送一个
  97.    此数据包接收正确的包,然后转发给记录仪,记录仪则继续发送后面的数据,直至所有数据发送完成。
  98. 6,在多个数据包传递的过程中,车载GPS一旦收到中心向记录仪发送的数据,则车载GPS停止其他数据向记录仪的发送。
  99.    多次数据传递完成后,车载GPS一旦有收到记录仪不是向中心发送的数据,则车载GPS开始恢复主动向记录仪发送数据的方式。
  100. 除了不需要车载GPS判断数据包命令字的,只需要判断是来自那里的数据,且是需要向记录仪发送的数据
  101. 1,来自显示屏的需要转发给记录仪的数据命令格式
  102.  '@','%',L, data,'$','&'
  103. 说明 包头(2字节  '@','%' )
  104.      整个数据的长度(1字节 L)
  105.      数据区 (N字节,data)
  106.      包尾(2字节 '$','&')
  107. 数据区的分析,如果属于传递给记录仪的命令字,则将此数据包的命令字去掉后的,在重新按记录仪与GPS之间的数据格式通讯
  108. 2,来自下行中心需要转发给记录仪的数据命令格式
  109. 说明:
  110.  解析数据包后,如果属于需要转发记
  111.  录仪的数据,则从新组包发送给记录仪后,则等待记录仪的返回数据,期间不发送其他类型的
  112.  数据给记录仪
  113. ********************************************************/
  114. /********************************************************
  115. 关于记录仪国家标准的命令集的定义
  116. ********************************************************/
  117. //下行
  118. #define G_GET_CODEVID 0x01 //采集驾驶员代码及对应的机动车驾驶证号码
  119. #define G_GET_TIME 0x02 //采集记录仪的实时时钟
  120. #define G_GET_ALLDISTANCE 0x03 //采集最近360h内的累计行驶里程数据
  121. #define G_GET_EIGENVALUE 0x04 //采集记录仪中的车辆特征系数
  122. #define G_GET_ALLSPEED 0x05 //采集最近360h内的行驶速度数据
  123. #define G_GET_VIN 0x06 //采集车辆VIN号、车牌号码、车牌分类
  124. #define G_GET_ACCIDENTDATA 0x07 //采集记录仪中事故疑点数据
  125. #define G_GET_TWODISTANCE 0x08 //采集最近2个日历天内的累计行驶里程
  126. #define G_GET_TWOSPEED 0x09 //采集最近2个日历天内的行驶速度数据
  127. #define G_GET_TWODATA 0x11 //采集最近2个日历天内的同一驾驶员连续驾驶时间超过3小时的所有记录数据
  128. #define G_SET_CODEVID 0x81 //设置驾驶员代码、驾驶证号码
  129. #define G_SET_VIN 0x82 //设置记录仪中的车辆VIN号、车牌号码、分类
  130. #define G_SET_TIME 0xC2 //设置记录仪时钟
  131. #define G_SET_EIGENVALUE 0xC3 //设置车辆特征系数
  132. //================================================
  133. //上行
  134. #define G_GET_CODEVID_ECHO 0x01 //设定的驾驶员代码及其对应的机动车驾驶证号码
  135. #define G_GET_TIME_ECHO 0x02 //记录仪的的实时时钟
  136. #define G_GET_ALLDISTANCE_ECHO 0x03 //360h内的累计行驶里程数据
  137. #define G_GET_EIGENVALUE_ECHO 0x04 //设定的车辆特征系数
  138. #define G_GET_ALLSPEED_ECHO 0x05 //360h内的行驶速度数据
  139. #define G_GET_VIN_ECHO 0x06 //存储的车辆VIN号、车牌号码、分类
  140. #define G_GET_ACCIDENTDATA_ECHO 0x07 //停车前20秒的速度数据,共10次。
  141. #define G_GET_TWODISTANCE_ECHO 0x08 //最近2个日历天的累计行驶里程数据
  142. #define G_GET_TWOSPEED_ECHO 0x09 //最近2个日历天内的行驶速度数据
  143. #define G_GET_TWODATA_EHCO 0x11 //最近2个日历天内驾驶超时数据
  144. #define G_SET_CODEVID_ECHO 0x81 //驾驶员代码、驾驶证号码
  145. #define G_SET_VIN_EHCO 0x82 //车辆VIN号、车牌号、分类
  146. #define G_SET_TIME_EHCO 0xC2 //北京时间时钟
  147. #define G_SET_EIGENVALUE_EHCO 0xC3 //车辆特征系数
  148. /********************************************************
  149. 关于记录仪与GPS通讯的扩展命令集的定义
  150. ********************************************************/
  151. //下行
  152. #define K_SET_INTERDISTANCE 0x20 //设置跟踪的间隔距离
  153. #define K_GET_INTERDISTANCE 0x30 //采集跟踪的间隔距离
  154. #define K_SET_TIRE_RESTTIME 0x22 //设置疲劳驾驶休息时间范围
  155. #define K_GET_TIRE_RESTTIME 0x32 //采集疲劳驾驶休息时间范围
  156. #define K_SET_LIMIT_SWITCH 0x23 //设置限制使能
  157. #define K_GET_LIMIT_SWITCH 0x33 //采集限制使能
  158. #define K_GET_TIREDATA 0x34 //采集指定时间段内车辆疲劳驾驶记录数据
  159. #define K_GET_ACCIDENTDATA 0x35 //采集事故疑点数据
  160. #define K_GET_DRIVEDATA 0x36 //采集当前驾驶员信息
  161. #define K_GET_GJLDATA 0x37 //采集指定时刻GJL记录数据
  162. #define K_GET_ALLDISTANCE 0x38 //采集指定时间段内的行驶里程和车辆总累计行驶里程
  163. #define K_SEND_GPSDATA 0x40 //每一秒种发送给记录仪的GPS相关数据
  164. //上行
  165. #define K_SET_INTERDISTANCE_ECHO 0x20 //设置跟踪的间隔距离响应
  166. #define K_GET_INTERDISTANCE_ECHO 0x30 //采集跟踪的间隔距离
  167. #define K_SET_TIRE_RESTTIME_ECHO 0x22 //疲劳驾驶休息时间范围
  168. #define K_GET_TIRE_RESTTIME_ECHO 0x32 //疲劳驾驶休息时间范围
  169. #define K_SET_LIMIT_SWITCH_ECHO 0x23 //设置限制使能
  170. #define K_GET_LIMIT_SWITCH_ECHO 0x33 //采集限制使能
  171. #define K_GET_TIREDATA_EHCO 0x34 //采集指定时间段内车辆疲劳驾驶记录数据
  172. #define K_GET_ACCIDENTDATA_ECHO 0x35 //采集事故疑点数据
  173. #define K_GET_DRIVEDATA_E_ECHO 0x4E //采集当前驾驶员信息
  174. #define K_GET_GJLDATA_ECHO 0x37 //采集指定时刻GJL记录数据
  175. #define K_GET_ALLDISTANCE_ECHO 0x38 //采集指定时间段内的行驶里程和车辆总累计行驶里程
  176. #define K_RECEIVE_RECORDDATA 0x40 //记录仪定时的发送相关记录仪的数据
  177. /********************************************************
  178. 补充说明:
  179. 根据GPS与记录仪通讯的有三种类型0,1,2三种。
  180. 在这里归纳如下:
  181. 可以通过类型0通讯的命令有:
  182. ********************************************************/