我有一个具有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套接字时,是否可以设置此配置(奇偶校验,停止,数据位)?
感谢您的回复。
最佳答案
有一种方法可以通过TCP为这些类型的设备设置RS232/485串行COM参数。它的标准是
RFC 2217 Telnet Com Port Control Option
但并非所有“通过TCP/IP的串行COM”或类似设备的制造商都支持它。
您需要检查GSM设备是否支持不同的操作模式。例如。 “原始模式”(可能现在正在使用)和“托管模式”(例如RFC 2217)或允许对串行线路参数进行控制的专有技术。
例如,MOXA和Lantronix品牌都支持基于RFC 2217的操作模式。
关于java - 通过TCP/IP进行RS485通讯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34385943/