0

我想制作一个简单的设备,使用 Delphi 7 通过 RS232 与我的计算机通信。该电路很简单,一个带有 220 欧姆电阻、0.1uF 电容器、+5VDC 电源、RS232 连接器和 USB 到 RS232 适配器的按钮。简单电路的输出将连接到计算机端的引脚 2(Rx 引脚)。每当我按下按钮时,计数器就会增加 1。相比之下,在 Arduino 中只需要几行代码即可完成任务。

可能需要的另一个信息:我在我的 Delphi 7 上安装了 CPortLib 和 CiaComPort。我都测试过,它们都在努力接收数据。使用 ComPort(CPortLib 的一个模块),我可以通过环回它来向我自己的计算机发送和接收数据,RS232 的 Pin2 (Rx) 和 Pin3 (Tx) 是循环的。要接收我使用命令ComPort1.ReadStr(Str, Count); (发送数据我使用命令:ComPort1.WriteStr(Str);)意味着,AddOn ComPort 模块工作正常。

4

1 回答 1

1

您无法使用 RS232 接收线接收开关输入,因为开关无法发送串行数据。

您可以做的是使用通常专用于调制解调器控制的电线。RS232 库具有感知这些信号的功能。我从来没有像那样使用过 RS232。

既然您谈论具有数字输入和模拟输入的 Arduino,我将编写一个小型 Arduino 程序,通过 RS232 通过 USB 连接与 PC 通信。当 Arduino 感应到他的数字或模拟输入发生变化时,它会通过 RS232 发送消息。Arduino程序应该处理开关的防弹跳。

有非常小且便宜的 Arduino 板可以完成这项工作。

Delphi 中的代码使用组件(可能还有其他)非常简单CiaComPort:将组件放在表单上,​​设置波特率、奇偶校验、停止位与 Arduino 相同的值(我建议 9600 波特)。设置LineMode为 TRUE 和LineEndCRLF。然后分配一个OnDataAvailable事件,调用 Receive 方法来获取 Arduino 发送的数据。Arduino 应该发送一条带有输入线(或多条线)状态和 CRLF 对的消息,以便按预期工作,并且您会收到每个 Arduino 消息LineMode的单个消息。DataAvailable

解析 Arduino 消息并根据需要执行操作。

于 2021-02-19T07:37:45.053 回答