秋杀小书

导航

 

1.1 GVCP是一个基于UDP IPv4传输层协议的应用层协议,它用于配置设备以及实例化设备的传输通道(GVSP),也会用于告知计算机应用设备上发生的特定事件。GVCP通道只对一个应用开放控制权限,其他应用只能被赋予监测的权限。在GVCP通道,计算机应用占主地位,设备是从地位。命令的请求总是由计算机应用发起的。应用只有在接受到设备的Ack信息后才能进行下一条命令请求。GVCP网络包的构成如下表所示。

注意:1 IP Header不能包含options部分;2 UDP端口号必须是3956;3 命令请求包或命令应答包必须在一个网络包内完成;4 GVCP payload必须是4Bytes的倍数

1.2 由于UDP传输协议是一种没有流程控制和错误恢复功能的不可靠的传输协议。下面介绍在GVCP层实现的机制,保证可靠性,进行错误恢复。

  App向设备发出一个命令请求后,App开始等待设备对命令的应答,同时开始计时。如果超时后,App没能收到设备的应答,App要再发一次命令请求,同时req_id保持不变。

注意:1 命令重传时,req_id不变;2 如果设备已执行过命令后收到相同的重传命令,可以选择不执行,直接回复Ack;3 利用GVCP Header中的0x42判断是否是GVCP包; 4如果App收到的ack_id不匹配,应答应该被忽略;

1.3 流程控制

  设备内部一般都有保存接收到的命令信息的buffer,为了不使buffer溢出,App应该在收到上一个命令的Ack后,再发出下一个命令。那些不需要Ack的命令执行时,需要App保证命令发出的速度不会导致设备buffer溢出。

  (流程控制也可以根据IEEE 802.3 PAUSE机制实现,此处暂不做详细说明)

1.4 端到端连接

  UDP是一种无连接传输协议,它不能保证远处的设备目前是否还处于连接状态。因此,GVCP需要设备支持心跳机制,任何有效的命令或GVCP包从主App传输过来后会复位心跳计数器。App必须给设备提供一个用户可编程的心跳超时参数,如果App暂无信息通过GVCP传递给设备,可编程心跳超时必须传递个信息给设备,复位设备的心跳计数器。

1.5 GVCP Header

  GVCP Header包括Command Header与Acknowledge Header两种,其格式如下图所示:

 

posted on 2017-02-28 09:49  秋杀小书  阅读(289)  评论(0)    收藏  举报