【问题标题】:Checking external hardware through serial port通过串口检查外部硬件
【发布时间】:2013-03-14 14:52:08
【问题描述】:

在我的代码中,我设置了以下值:

public SerialPort comPort = new SerialPort();
comPort.PortName = portName; 

例如,PortName 可以是 COM17。

现在,如果我通过我的 GUI 添加了两个设备,都在 COM17 上,其中一个最终会引发异常(拒绝访问 COM17)。现在我想检查哪个设备挂接到该 COM 端口,因此如果我的应用程序识别它,它可以通过该端口发送命令,或者如果它未被识别,它将禁用我的 GUI 中的选项。

那么,有没有办法从 COM 端口获取唯一信息,我可以在安装时将其保存在我的数据库中?

编辑:澄清一下,如果错误的设备连接到该 COM 端口(除了我安装时),我会收到错误消息。我发现了那个错误,所以我知道它不是正确的。但我更想知道可能是哪种设备。假设我包含 2 个驱动程序 DLL,2 个不同的设备,并且有人将它们切换了。然后我的应用程序可以检查并查看正确的名称,因此得出结论,这只是更改已安装对象的 COM 端口的问题,而不仅仅是抛出错误并说用户必须重新安装。

【问题讨论】:

    标签: c# serial-port communication


    【解决方案1】:

    这将取决于您的硬件。如果连接的设备会对特定的信号消息给出可预测且一致的响应,那么您可以使用它来识别它们。我做同样的事情来确定一个专有硬件连接到哪个 COM 端口。我遍历所有 COM 端口并发送一条消息,我知道该消息会从硬件给出特定响应。哪个端口给了我预期的结果是带有硬件的端口。

    【讨论】:

    • 我也想到了这个。不过,如果我连接了 10 多个硬件部件,其中 7 个是相同类型,它会变得更难。是否有可能获得硬件 ID 或其他唯一的东西?
    • @Joetjah:只有硬件本身支持它。如果硬件可以发送带有序列号或类似信息的消息,那么可以。如果没有,不。我也有同样的问题。我们的硬件没有可以给我序列号的功能,但幸运的是,没有人一次连接多个。
    • 好吧,这似乎很合理。太糟糕了,这会让我现在的生活轻松很多。谢谢你的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多