协议 232转网口中的RealCom协议
首先来说本人对硬件或者说是设备不是很了解,对于底层协议通信也只是皮毛
今天就是表达一下因为遇到的问题学到的一点东西吧
我们本地通过TCP协议传输SNMP包到设备取数据,因为设备使用的都是串口,我们之间通信使用了一个协议转换器
把串口和网口连接起来,但是发现一个问题就是我能给设备发数据,但是自己收不到数据
经过抓包发现,每次返回的内容多出6个字节,问谁都不知道为什么会有这么个东西。我尝试自己开一个端口让设备主动发送,发现自己一直收到6个字节一组的数据
最后一个细心的同事发现了该转换器配置页面有一个RealCom的配置开关,把这个关闭以后就不会出现这6个字节了
上网查查才知道有RealCom协议这么个东西
以下来自网络,仅供参考学习:
1.232转网口与RealCom的名字由来
232转网口中用到一个称为RealCom的协议,初次使用232转网口的用户对此比较陌生,这里做一个介绍。232是RS232的简称,是串口的一种,这里realcom的COM也是指串口。我们在计算机上看到的COM1、COM2对应的就是这种9针的串口,因为在早期计算机之间的通信以串口为主,所以串口就代表了通信,COM来自于英文名“communication”。目前台式机后面的COM口就是RS232标准的串口。
串口转网口和RealCom中既然COM对应232那么Real是否对应网口。不完全对,网口就是RJ45或以太网口,Real实际是英文“真实”的意思。当232串口被转为网口之后,在网口一端来看,如何能够将网口模拟为一个232串口,由于网口和串口在本身协议上的不同,需要有一种网口(即TCP/IP之上的协议)协议将网口映射为串口。从而能够在将网口几乎真实地“转化”为232串口。于是RealCom协议就孕育而生。
2.232转网口中的RealCom协议细则
RealCom协议是真实反映串口特性的网络协议。232转为网口后,RealCom协议必须实现串口特性的保留,232串口的特性包括:波特率、数据位、停止位、校验位、第9位串口数据。RealCom协议中会有相应的命令和数据位将串口的这些参数信息传递到网口的另一端,从而能够让网络端的程序能够识别当前串口使用的波特率等参数。
232转网口中的RealCom协议不同于“以太网透明传输协议”,RealCom协议的TCP应用层数据包的数据并不完全对应于232串口的数据,而是具有一定的帧格式的。默认情况下卓岚232转网口转换器是使用“以太网透明传输协议”,如果需要选择为RealCom协议,需要将转换器的参数中的高级参数:“转化协议”设置为“RealCom”;选择“以太网透明传输协议”,设置为“无”。
232转网口中的RealCom一般和虚拟串口配合使用,卓岚ZLVircom程序的底层驱动技术可以为windows增加虚拟的COM口(例如COM5),当232转网口设备工作于RealCom模式时,虚拟串口驱动可以通过RealCom协议动态自适应串口参数,该技术称之为On-the-fly技术,即假设ZLVirCom程序虚拟了一个COM5,当用户232串口程序打开COM5,并工作于一定波特率、数据位、校验位时,卓岚虚拟串口驱动可以自动探测到该串口参数,并且将该参数以RealCom数据包的方式发送给232转网口设备,232转网口设备收到指令后按既定的串口参数运行,实现了串口参数的自适应。
那么何时使用RealCom协议何时使用“以太网透明传输协议”。对此有如下的建议:
(1)如果不用虚拟串口而是Socket通信则建议使用“以太网透明传输协议”,因为此时用户并不需要串口参数的自适应,而“以太网透明传输协议”具有简单的格式,便于实现。
(2)卓岚ZLVircom具有双通道的串口参数On-the-fly技术,即使232转网口设备并没有采用RealCom协议,ZLVircom也能够实现串口参数的自适应。但是,当用户需要使用跨Internet来使用ZLVircom的虚拟串口时,第二个通道将受到影响,此时建议使用RealCom协议。
上面说道的卓岚ZLVircom也是一种转换设备,遇我们使用的不是一个品牌而已
所以说,多出的字节其实是一种信息,包含了改组通信的特性。如果不需要特性描述,那么使用以太网透明传输协议即可,如果有特殊应用,应该选择RealCom协议
同样,如果你使用RealCom协议,那么应该自己也做一个转换,把附加的特性描述内容截取掉,否则SNMP通信中就不会认,因为不属于标准SNMP包
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
上一篇: SNMP4J 服务端连接的超时时间