我正在使用 GsmComm 连接到 USB 调制解调器。当我最初将调制解调器连接到计算机时,我正在使用的调制解调器的 com 端口没有出现在设备管理器中。计算机将其显示为可移动驱动器。但是,当我运行调制解调器随附的应用程序时,com 端口会显示在设备管理器中。
所以每次我想将设备与我的应用程序一起使用时,我必须先将它连接到 pc,运行他们的软件来初始化 com 端口,然后再运行我的应用程序。
但是有什么方法可以使用 C#
从我的应用程序初始化 com 端口吗?
我读过一些关于创建虚拟 com 端口以连接到 USB 设备的内容,但我不知道该怎么做。任何帮助或指示将不胜感激。
2016 年 2 月 14 日更新
我按照antiduh的回答,发现设备在第一次连接时被识别为cdrom。
运行他们的应用程序后,链接变为 harddiskvolume
-
并创建了三个新的 com 链接。
最佳答案
虚拟串行端口由设备附带的设备驱动程序模拟。如果在您运行他们的软件之前他们没有出现在设备管理器中,那么它要么动态安装设备驱动程序,要么向驱动程序发送 secret 握手以告诉它开始模拟端口。
前者需要 UAC 提升和 .sys 文件,如果您在运行他们的软件时没有看到提示,也没有看到可能执行此操作的已安装服务或 .sys 文件,那么您可以排除这种可能性.后者通常是通过 DeviceIoControl() 调用完成的,您可以使用过滤器驱动程序进行监视。喜欢IoSpy ,一个包含在 WDK 中的实用程序。在该实用程序上使用 Dumpbin.exe/imports 可以提供有用的实现细节,SysInternals 的进程监视器也是如此。
很难保证成功,最好向制造商询问详细信息。然而,他们并不经常回电话,也没有在手册中包含此类详细信息。他们当然更喜欢任何人使用他们的铲具。请记住,您在戳戳时看到了 pig 的 curl 尾部,最好通过退回设备并从其他制造商购买另一台设备来减少损失。
关于c# - 初始化 USB 调制解调器的 COM 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183233/