c# - 如何自动检测连接到COM端口的设备

标签 c#

我想自动检测连接到我的计算机 COM 端口的设备。能够使用 SerialPort 类使我能够轻松获取可用 COM 端口的列表。

我想遍历它们并向每个端口轮询(发送命令)并等待响应。然而,似乎大多数教程都建议使用 DataReceived 事件。我不知道如何进行串行发送,然后等待 xx 秒,直到收到设备的响应。

最佳答案

当您需要与可以在非常不可预测的时间发送内容的设备通信时,DataReceived 事件非常有用。您不必消耗一个仅阻塞并等待设备发送内容的线程。

但这与您想要实现的目标完全相反,您确实期望收到一些东西。因此,不要使用 DataReceived,而是使用 Read() 并将 ReadTimeout 属性设置为适当的低值。现在很简单了。还可以考虑使用 DsrHolding 属性。当有一个设备连接到端口并且该设备已通电时,就会出现这种情况。

我应该指出,这样做是相当危险的。你不知道机器上连接了什么样的设备,向它们发送不适合处理的东西是相当棘手的。如果有什么“你在吗?”你发送的命令恰好意味着机器人 Controller “以 1G 加速度回家”,那么有人会很容易受伤。您无法在任何类型的工业环境中执行此操作。

到目前为止,最好的方法是让其他人有责任做好这件事。添加一个选项菜单,让用户设置端口名称。还有设置,它们也很重要,而且无法自动检测它们。选项对话框可能有一个“帮助我找到设备”按钮,现在它是安全的并且有用。

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

相关文章:

c# - “加载 .CSV 文件之前删除四引号的 C# 脚本任务”

c# - TreeView 不显示更新

c# - 用于序列化 C++ 和反序列化为 C# 类的 Protocol Buffer

c# - 抽象类中的泛型方法

c# - Visual Studio 不断用旧版本覆盖 NewtonSoft.Json.DLL

c# - 反序列化 json 对象数组,其中包含 json 对象

C# 和 PHP : Simple example of PHP Web Service used by C#

C# 使用 sql 参数现在不起作用

c# - Hql 的计数哪里出了问题

c# - 如何使用 C# 创建 gRPC 流拦截器?