2.
串口转网口关键技术一:
TCP/IP
的工作模式问题
串口转以太网,并不是简单物理层和数据链路层的转化。由于串口协议本身不具有网络层和传输层,串口转以太网,实际是将串口的数据作为
TCP/IP
的应用层数据,用
TCP/IP
封装传输的方式。
TCP/IP
的应用层数据是
TCP/IP
所要传送的真正有效的数据。例如用户通过
socket
的
recv()
和
send()
函数接收和发送的实际是应用层数据。这样通过串口转
TCP IP
用户就可以用
recv()
和
send()
函数收发串口数据了。
但是
TCP/IP
并不只是
recv()
和
send()
这么简单,根据工作模式的不同,它关系到连接、关闭、监听等,这是串口转网口后需要增加处理的部分。
TCP IP
的工作模式可以分为:
TCP
服务端模式(
TCP Server
)、
TCP
客户端模式(
TCP Client
)、
UDP
模式。
UDP
模式:
UDP
模式是基于非连接的模式,只要有数据发送即可发送,不需要事先连接。所以这种模式更加地接近于串口的通信方式。但是
UDP
协议无法保证数据不丢失,容易产生误码。
TCP
模式:
TCP
模式采用数据可靠传输机制,所以可以保证数据基本不误码、不丢失。在
TCP
通信中,必然是由通信的两端构成,其中一方是
TCP
客户端,一方是
TCP
服务端。
TCP
客户端和
TCP
服务端的概念可以用电话来类比。
TCP
客户端是打电话的人,而
TCP
服务端是接电话的人。
如何选择
TCP/IP
的工作模式?
1.
TCP
与
UDP
的选择:尽量选择
TCP
模式,特别是经过
internet
的大数据量传输,
udp
容易误码和丢失。
2.
选择
TCP
客户端还是
TCP
服务器端:请遵循以下原则:
3.
原则一:发起数据发送的一方应该选择为客户端。例如一个数据采集系统,采集终端应该为客户端。这是因为当
TCP
连接断开的情况下,客户端能够在需要发送数据的时候主动建立连接。而
TCP
服务端,只能够被动地接受连接,使得数据无法发送出去。
4.
原则二:
IP
或者域名固定的一方为服务器端。例如在有多个数据采集终端,而只有一个中心服务器的情况下,中心服务器应该为服务端。这是因为,中心服务器的
IP
或域名一般是固定的,而采集终端的
IP
是不断增加和变化的。中心服务器难以记住所有的采集终端的
IP
,所以也难以发起连接;而采集终端寻找中央服务器就比较容易。
3.
串口转网口关键技术二:串口分帧技术
串口数据是可以连续不断发送的,而以太网数据则是以数据包为单位发送的。这样就关系到将多长的串口数据打包后作为一个以太网数据包发送的问题。
数据包长度:以太网数据包最长
1500
多字节,所以在串口转网口转发器收到
1500
字节后必须将其打包发送。用户可以设定这个数据包长度上限。
数据包间隔:除了数据包长度作为串口分帧的规则外,一个更为符合逻辑的方法是通过数据包间隔。当串口转
TCP IP
转发器发现的串口数据流中出现了
T
毫秒的空闲时间时,则认为之前收到的串口数据可以作为一个以太网数据包发送了。这里的
T
就是用户设定的数据包间隔。
4.
串口转网口关键技术三:
9
位技术
以太网数据是以字节
Byte
计算的每个字节都是
8
位,但是串口数据则有可能出现
9
位,第
9
位常常用于区分是地址帧还是数据帧,
1
表示地址帧
0
表示数据帧。那么在当串口转化为以太网之后,如何将第
9
位也传送出去就成了一个关键技术。
在众多的串口转网口方案中都是将第
9
位直接舍弃的,目前据了解上海卓岚信息科技的方案具有快速地适应
9
位的功能,其实现方法中采用了称之为
RealCom
的协议。由于增加了第
9
位,所以串口数据不能够直接透明地转化为
TCP IP
应用层数据,
realcom
协议将串口数据打包之后整个作为
TCP IP
的应用数据传输。这样可以在
realcom
协议的协议头部加入该数据包的
9
位是
1
还是
0
的信息,从而实现了
9
位传输技术。