gpt4 book ai didi

c# - 如何自动检测串行COM端口c#的连接

转载 作者:行者123 更新时间:2023-11-30 19:41:33 25 4
gpt4 key购买 nike

我有与设备通信的应用程序。设备通过串行 COM 端口连接。我的应用可以与设备通信。

我需要一些方法/事件,可以通过运行的应用程序扫描 COM 端口。当我将设备连接到 PC 时 - 方法/事件将打印带有“已连接”消息或类似消息的 MessageBox。

我发现了这样的东西:

comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

但它不起作用。

最佳答案

我不确定您是要尝试自动检测设备连接到哪个端口,还是自动检测设备是否连接到特定端口。

虽然在这两种情况下,原理是相同的:

  1. 您使用以下方式枚举串行端口:SerialPort.GetPortNames如果您需要确定端口,如果您已经知道端口,则跳至步骤 2
  2. 通过为集合中的每个端口创建一个新的 SerialPort 对象并调用 Open 打开一个连接。
  3. 对于每个打开的连接,您尝试从端口写入/读取确定您的设备是否已连接的数据序列
  4. 对于每个打开的连接,如果数据读取超时则没有设备连接到该端口;否则,如果您得到预期的结果,您就知道您的设备已连接
  5. 对于每个端口,使用 Close 关闭连接在 SerialPort 对象上。

在任何给定点执行上述操作将告诉您您的设备在该点是否已连接,以及它连接到哪个端口。

如果您需要连续进行存在检测,那么您可能需要创建一个计时器并定期执行此测试(每 30 秒或每 2 分钟 - 取决于您愿意接受的延迟)。

注意

正如其他人在答案中指出的那样,您需要异步运行串行端口检测代码,以免在扫描端口时阻塞您的主应用程序。由于没有连接设备的端口超时,扫描肯定需要一段时间。

关于c# - 如何自动检测串行COM端口c#的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567324/

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