当前位置: 首页 >> 常见问题
主题:天禾协议车机中心发送命令集之GPRS的S29命令
问题类型: 新用户必读
发帖人:super
时间: 2011-11-06 14:19:23
增加S29命令:设置UDP发送指针。
TCP方式知道中心是否收到数据,可以保证不会丢失缓存记录,UDP方式由于车载机并不知道中心是否收到数据,当发生网络阻塞时会丢失记录,此时可以将发送指针重新定位重传。
车载机设置有UDP记录缓冲区,上传记录的最后一个(或两个,待扩展)字节表示记录在缓冲区中的绝对位置即车载机发送指针,中心可根据此信息知道UDP记录是否丢失,若发现丢失可重新设置发送指针,重传丢失记录。
*XX,YYYYYYYYYY,S29,HHMMSS,P#
P:UDP上传记录绝对指针,取值范围0~65535。
例如,车载机收到的记录号为0xFC、0xFD、0xFF、0x00、0x01丢了第0xFE即第254条记录,发送:
*HQ,000,S29,130305,253#
此命令要求车载机将UDP发送指针置为253即0xFD。
车载机收到此命令后回传确认信息(TCP协议):
*HQ,2020916012,V4,S29,130305,050316,A,2212.8745,N,11346.6574,E,14.28,028,220902,FFFFFBFF#
并从第0xFD开始重传(UDP协议)第0xFD、0xFE、0xFF、0x00、0x01条记录。
注意:
a、不同的硬件版本UDP缓冲区大小不一样,若指针超过了缓冲记录数则实际指针是命令指针值按记录数取模。例如缓冲区为8KB即256条记录,若命令的指针为257,则实际指针为1。
b、缓冲区是循环覆盖的,若指针超过了写入指针,则会回传发送指针和写入指针之间的记录,例如缓冲区大小为256条记录,收到的记录指针为5,车载机写到第8条记录,此时将指针置为16,那么会回传第16、17、…256、1、2…8共248条记录。
c、设置指针时应考虑到有的UDP包已经在路途中以及命令的TCP传输时间。例如经过一段时间阻塞后收到第1、2、3、4条记录,中心不知道丢失多少记录所以希望重传所有缓存记录于是设置了指针5,但收到命令时第5、6、7、8可能已经发送,车载机写入指针已经指到9,那么将只能得到第5-9共5条记录而不是希望的256条,此时可以再次设置指针为11,将回传11、12、 …256、1、…9共254条记录。
d、重置指针后发送记录数若小于batch则要等到记录数达到batch才会开始发送。


联系方式: