我有一个具有rs485输出的设备,另一个与该输出连接的gsm设备。

我可以使用特殊的IP和端口访问gsm设备。 GSM设备透明地工作。将所有从tcp套接字收到的数据发送到rs485,并在rs485上检索数据,然后将其写入打开的tcp套接字。

gsm设备与rs485现有设备之间的连接已布线,并将波特率固定为300。

当我尝试用笔记本电脑读取rs485现有设备时,请将rs485连接到我的USB,并设置以下串行参数:

  • 奇偶校验:甚至
  • 数据位:7
  • stopbit:1
  • 波特率:300

  • (此配置是通用的,并在标准文档中进行了描述)

    使用此配置,一切正常,我可以传输数据。

    当我尝试使用gsm设备时,必须操纵生成的字节数组以适合rs485现有设备。

    例如;
    我想将/?![CR][LF]发送为UTF-8。

    当使用有线连接到设备时基本上发送"/?!\r\n".getBytes("UTF-8")和设备应答。

    使用gsm时,我监视Wireshark,设备仅使用字节数组进行应答:AF-3F-21-8D-A0AF"/" - 2F的带符号格式

    另外8D[CR] - 0D的带符号格式

    我认为,字节之间的差异是由我在串行连接上使用的配置引起的。

    使用tcp/ip套接字时,是否可以设置此配置(奇偶校验,停止,数据位)?

    感谢您的回复。

    最佳答案

    有一种方法可以通过TCP为这些类型的设备设置RS232/485串行COM参数。它的标准是

    RFC 2217 Telnet Com Port Control Option

    但并非所有“通过TCP/IP的串行COM”或类似设备的制造商都支持它。

    您需要检查GSM设备是否支持不同的操作模式。例如。 “原始模式”(可能现在正在使用)和“托管模式”(例如RFC 2217)或允许对串行线路参数进行控制的专有技术。

    例如,MOXALantronix品牌都支持基于RFC 2217的操作模式。

    关于java - 通过TCP/IP进行RS485通讯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34385943/

    10-11 04:48