0

任何人都可以给我一个正确的代码来检查我的 PC 上可用的 com 端口。我是 TCL 的新手。我想检查我的 PC 的哪些 com 端口可以访问并且可以用于串行通信。请尽快帮助我。我会很感激的。

4

1 回答 1

0

请记住,串行通信非常古老,它假设了几件事:

  • 连接的设备和主机控制器都同意链路参数(波特率(速度)、数据位数和奇偶校验位)。请注意,任何一方都无法以某种方式自动知道对方配置使用哪些参数。
  • 除了尝试与之通信之外,没有真正的方法可以知道该设备是否存在。Windows 在连接到 COM 端口的设备列表中向您显示的内容实际上是为这些端口配置的内容。还有其他类型的设备显示为串行设备(例如蓝牙加密狗和 USB 调制解调器),但它们并不是真正的串行设备,它们的 COM 端口访问由系统模拟。

正如您所看到的,如果您谈论的是真正的 COM 附加设备,那么您的问题似乎没有多大意义,因为这些设备不支持枚举(与 USB 相反)。

无论如何,我可以想象以下方式来尝试做你想做的事:

  1. 想出一些你想扫描的端口。AFAIK,除了使用 WMI 之类的东西来查询系统以获取连接到 COM 端口的已配置设备列表之外,没有办法知道哪些 COM 端口真正可用。
  2. set f [open {\\.\comN} r+]尝试使用通常的习语将它们一一打开。确保catch此处出现任何可能的错误,因为其他设备似乎能够独占打开 COM 端口
  3. 查询设备线路状态:

    % chan config $f -ttystatus
    CTS 0 DSR 0 RING 0 DCD 0
    

    并寻找 DSR 信号,该信号指示连接到端口的任何东西(如果有)已准备好进行通信。

  4. 与设备通信或关闭通道并继续下一个端口。

看到这个这个(维基有更多关于串行通信的信息——搜索它)。

PS您的问题听起来像是一种常见的“给我代码”综合症;请阅读内容并尝试更正此问题。

于 2012-08-30T12:10:01.257 回答