我有一个有rs485输出的设备和另一个连接到这个输出的gsm设备。
我可以用特殊的IP和端口访问gsm设备。Gsm设备正在透明地工作。将从tcp套接字接收到的所有数据发送到rs485,并在rs485上检索数据,然后写入打开的tcp套接字。
gsm设备和rs485现有设备之间的连接是有线的,并将波德率固定在300。
当我试图用我的笔记本电脑读取rs485现有设备时,将rs485连接到我的usb,设置如下的串行参数;
(此配置是通用的,并由标准文档描述)
有了这种配置,一切都是正确的,我可以传输数据。
当我尝试使用gsm设备时,我必须操作生成的字节数组以适应rs485存在设备。
例如;
我想把/?![CR][LF]
作为UTF-8发送。
当使用有线连接到设备时,基本发送"/?!\r\n".getBytes("UTF-8")
和设备应答。
当使用gsm时,我在wireshark上进行监视,设备只回答字节数组:AF-3F-21-8D-A0
。
AF
是"/" - 2F
的签名格式
另外,8D
是[CR] - 0D
的签名格式。
我认为,与字节的差异是由于我在串行连接上使用的配置造成的。
是否有方法在使用tcp/ip套接字时设置此配置(奇偶、停止、数据位)?
感谢您的回复。
发布于 2016-01-08 18:29:40
有一种通过TCP来设置这类设备的is 232/485串行COM参数的方法。标准是
但并非所有“通过TCP/IP的串行COM”或类似设备的制造商都支持它。
您需要检查您的GSM设备,如果它支持不同的操作模式。例如,“原始模式”(可能是现在使用的模式),以及“托管模式”,比如RFC 2217或某种允许控制串行行参数的专有模式。
例如,艾克萨和兰特罗尼品牌都支持基于RFC 2217的操作模式。
https://stackoverflow.com/questions/34385943
复制相似问题