通用可靠的串口/以太网网关设计
1.2 串口数据传送
串口数据传送的帧格式如下:本文引用地址:https://www.eepw.com.cn/article/148750.htm
其中各个字段的意义如下:
◆SFD:帧首定界符;
◆EFD:帧尾定界符,SFD和EFD为确定的特定值;
◆Seq:帧序号;
◆Type:帧类型,其值见表1;
◆LEN:Data字段的字节数;
◆Data:实际要传送的数据;
◆FCS:帧校验,是一个简单校验,为Seq.至Data字段中所有字节按位异或运算的结果。
1.2.1 串口发送
串口发送队列示意图如图3所示。网关使用FIFO(先入先出)队列缓冲发送帧,包括待发送队列和待确认队列两个队列,每个队列为一个双向循环链表,节点从尾部插入,头部读出。
当有数据需要从串口发送时,首先将要发送的数据按帧格式加上一些附加的字段组成一个完整的帧,然后插入待发送队列尾。插入待发送队列的帧并不一定会被立即发送,但只要待发送队列中缓冲有需要发送的帧,串口就会从队列头逐个的读取待发送帧以中断的方式发送,直到待发送队列为空。
每一帧发送完毕后,如果是确认帧,便会被立即从待发送队列中删除并释放掉内存,该帧的发送过程结束;如果是非确认帧,即数据帧或命令帧,那么该帧不会被立即释放,而是从待发送队列删除而插入待确认队列尾,等待串口另一端的设备发送对应的确认帧。
若在超时时间内收到对应的确认帧,则将该帧从待确认队列删除释放,该帧的发送过程结束;若等待超时,则将该帧从待确认删除并重新插入待发送队列尾,以重发此帧。当然有重发次数限制,若达到了最大重发次数仍然未收到对应的确认帧,则丢弃该帧,该帧的发送过程结束。
tcp/ip相关文章:tcp/ip是什么
评论