任何人都可以给我一个正确的代码来检查我的 PC 上可用的 com 端口。我是 TCL 的新手。我想检查我的 PC 的哪些 com 端口可以访问并且可以用于串行通信。请尽快帮助我。我会很感激的。
问问题
2072 次
1 回答
0
请记住,串行通信非常古老,它假设了几件事:
- 连接的设备和主机控制器都同意链路参数(波特率(速度)、数据位数和奇偶校验位)。请注意,任何一方都无法以某种方式自动知道对方配置使用哪些参数。
- 除了尝试与之通信之外,没有真正的方法可以知道该设备是否存在。Windows 在连接到 COM 端口的设备列表中向您显示的内容实际上是您为这些端口配置的内容。还有其他类型的设备显示为串行设备(例如蓝牙加密狗和 USB 调制解调器),但它们并不是真正的串行设备,它们的 COM 端口访问由系统模拟。
正如您所看到的,如果您谈论的是真正的 COM 附加设备,那么您的问题似乎没有多大意义,因为这些设备不支持枚举(与 USB 相反)。
无论如何,我可以想象以下方式来尝试做你想做的事:
- 想出一些你想扫描的端口。AFAIK,除了使用 WMI 之类的东西来查询系统以获取连接到 COM 端口的已配置设备列表之外,没有办法知道哪些 COM 端口真正可用。
set f [open {\\.\comN} r+]
尝试使用通常的习语将它们一一打开。确保catch
此处出现任何可能的错误,因为其他设备似乎能够独占打开 COM 端口。查询设备线路状态:
% chan config $f -ttystatus CTS 0 DSR 0 RING 0 DCD 0
并寻找 DSR 信号,该信号指示连接到端口的任何东西(如果有)已准备好进行通信。
- 与设备通信或关闭通道并继续下一个端口。
PS您的问题听起来像是一种常见的“给我代码”综合症;请阅读此内容并尝试更正此问题。
于 2012-08-30T12:10:01.257 回答