gpt4 book ai didi

java - 与 JSSC 的同步/异步串口通信

转载 作者:行者123 更新时间:2023-12-01 11:55:54 29 4
gpt4 key购买 nike

我正在尝试使用串行端口在两台计算机之间进行通信,并且我是该领域的新手。我需要将请求从一台计算机(例如 A)发送到另一台计算机(例如 B)并接收所发送请求的响应。我正在使用响应更新 Java Swing 用户界面。

我正在使用jSSC库来做到这一点。我看过SerialPortReader examples以下是我的理解。

我必须在两台计算机上实现 SerialPortEventListener。A 将使用 writeBytes 方法发送请求。 B 将监听使用 SerialPortEventListener 发送的命令,并使用 writeBytes 方法发送响应。 A 将使用它的 SerialPortEventListener 实现来监听数据,并在收到数据时更新 UI。以下是我的问题。

a) 我的上述观察是否正确?有没有不同的方法来做到这一点(例如,协议(protocol)中是否存在返回响应的 writeBytes 方法?)

b)我在几个步骤中读到串行端口通信可以是同步的或异步的。但从示例中,我无法理解该代码是否实现了异步或同步通信。如何使用 jSSC 实现同步/异步通信?我并不是要求实现。只是一些指南以及可以使用的方法。

c) 消息可能会部分传送。例如,如果我将命令作为字符串“getvariableThreeValue”发送,则可能只会收到“get”或类似“getvaria”的内容。(这可能会导致诸如“getget”等消息。 )我该如何处理这种情况?再次强调,我并不是要求实现。只是一些指南以及可以使用的方法。

最佳答案

经典的“串行端口”是非常“低级”的东西。必须设置波特率、起始位和停止位以及流量控制等参数,然后读取和写入字节序列。 Java 库使用监听器来接收直接源自串行驱动程序感知的事件(您可以在 javadoc 中找到诸如“line”之类的术语)。如何 react ,取决于“对方”。

流量控制用于避免接收器溢出或溢出。 RS-232 的线路包含 C(lear)T(o)S(end) 和 R(equest)TS,因此“硬件握手”是一种选择。或者,US-ASCII 定义了控制字符 XON 和 XOFF,如果数据流不是二进制数据,则可以将其嵌入到数据流中。如果发送端没有全力发送或者计算机的速度差异很大,流量控制不应该成为问题。

据我了解,您将一些 radio 设备连接到端口,其文档应指定所有参数,以及更高级别的协议(protocol),即如何传输和接收数据。设备可能有特殊要求,例如,您必须在传输实际数据之前传递一些设置数据。 (如果您仅用一根电缆连接两台计算机,那么一切都取决于您。)

一旦你基本上可以发送和接收,你就必须考虑安全传输。您需要设计一个协议(protocol):

  • 消息格式,例如包含长度、序列号、数据字节、CRC。
  • 消息排序,即谁可以在何时发送什么内容,例如,消息 A 到 B,从 B 到 A 的确认,重复。或者 B 发出 NAK,A 必须重新发送。
  • 也许您需要一个“ session 协议(protocol)”,即登录(如 ftp)和注销
  • 超时:如果任何一方在 T 内都没有收到另一条消息怎么办?
  • 是否需要心跳,即 channel 空闲时发送的消息,以了解对方仍然“活着”。

WLAN 连接应该可以使大部分操作变得不必要。真正的“ radio ”(某种短波?)我从未听说过,但我不是 radio 专家。

关于java - 与 JSSC 的同步/异步串口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446900/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com