如何使用tcl代码检查PC上的活动COM端口

时间:2012-08-30 05:44:31

标签: tcl

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  1. 想出一些你想要扫描的端口。 AFAIK,除了使用WMI之类的东西查询系统以查找连接到COM端口的已配置设备列表外,没有办法确定哪些COM端口真正可用。
  2. 尝试使用通常的set f [open {\\.\comN} r+]惯用法逐个打开它们。请务必在此处catch % chan config $f -ttystatus CTS 0 DSR 0 RING 0 DCD 0 {{1}}发现任何可能的错误。
  3. 查询设备的线路状态:

    {{1}}

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

  4. 与设备通信或关闭频道,然后继续使用下一个端口。
  5. 请参阅other devices seem to be able to open a COM port exclusivelythis(维基有更多关于串行通信的信息 - 搜索它)。

    P.S。 你的问题听起来像是一个常见的“给我代码”综合症;请阅读this并尝试纠正此问题。