我正在使用 visual studio 2008 并使用 .net 3.5 在 C# 中开发一个 Windows 窗体应用程序
我正在进行串行通信,点击一个按钮即可获取所有可用通信端口列表的应用程序。然后,我通过依次打开每个端口、发送我的自定义握手请求命令并等待回复几秒钟来扫描我正在寻找的设备。
它在我的 PC 上一切正常(在我测试过的其他 8 台 PC 上)但是当我在笔记本电脑上运行该程序时,我的程序似乎看到所有的通信端口并发送请求,但我的设备从未收到它。我试过使用硬件通信端口和 USB 转串口转换器。我还在不同制造商的几台笔记本电脑上对其进行了测试。它们的行为完全相同。
有没有人遇到过类似的问题?
更新 1
笔记本电脑似乎可以从设备接收数据,但仍然无法传输。当然,台式机也没有任何问题。
更新 2
笔记本电脑可以接收和传输数据。 因此,这将问题缩小到我的 C# 软件,该软件可以在台式机上进行串行通信,但不能在笔记本电脑上进行同样的操作。
更新 3
解决了。问题是由我的测试笔记本电脑的内置调制解调器引起的。调制解调器保留的com端口(一般为COM3)不会出现在设备管理器中,但可以在windows注册表中看到。因此,每当我的串行端口对象请求 com 端口列表时,它就会获得调制解调器端口,并且这些调制解调器在端口扫描期间因我的握手请求而阻塞。 和往常一样,一切都是愚蠢而简单的。
最佳答案
听起来您的设备对电压水平很挑剔。 RS-232 不能很好地确定这一点,允许在 +/- 5V 到 +/- 28V 之间的任何地方。大多数设备最喜欢 +/- 12V,这是台式机可用的标准电压。然而,笔记本电脑始终处于低端,+/- 5V 典型值。您对此无能为力。
要检验此理论,请排除由您的代码引起的可能性,并确保它适用于零调制解调器。将 TxD 连接到 RxD,以便您接收发送的内容。然后使用 Hyperterminal 或 Putty。如果后者也无法看到设备,则说明是硬件问题。
关于c# - 笔记本电脑上 C# 应用程序中的 comm 端口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3479397/