如何与USB 3G调制解调器通信?

我有一个D-Link DWM-156 3G USB调制解调器,我想从我的应用程序(运行在Windows XP SP3上的C#.NET 4.0)发送AT命令。

调制解调器的驱动程序插入和安装后显示如下:

设备pipe理器中 ,添加两个串行端口:

  • D-Link HSPADataCard诊断接口(COM4)
  • D-Link HSPADataCard NMEA设备(COM5)

控制面板,电话和调制解调器选项 ,添加一个新的调制解调器:

  • D-Link HSPADataCard专有USB调制解调器 (连接到COM19)

问题:我应该使用哪个com端口来发送AT命令,并且以何种速度?


我已经尝试了所有三个不同速度的端口,但没有任何运气。

为了学习,我随后安装了“Free Serial Port Monitor”嗅探器应用程序,希望能够通过打开和closures互联网连接(可以正常工作)来监视与D-Link可用性的通信。

开始时,嗅探器应用程序询问我要监视哪个端口,并提供以下端口名称供您select:

  • “杰尔系统HDA调制解调器”,
  • “D-Link HSPADataCard专用USB调制解调器”,
  • “COM3”
  • “COM4”
  • “COM5”
  • …还有几个,包括“COM19”。

select“D-Link …”的名字是可以的,现在我可以看到所有AT命令正在使用,但是我无法确定端口使用的波特率。 此外,COM4,COM5或COM19都不能用于这种嗅探(似乎没有发生在这些端口上)。

现在我想使用.NET中的SerialPort类来打开“D-Link …”端口并与USB调制解调器通信,但是SerialPort类需要以“COM”开头的端口名,否则有一个例外抛出。 但是没有一个普通的COM端口工作。 而且我还不知道使用哪个波特率。 我非常困惑,并locking在这里 – 我能做些什么来达到这个目的?

好的人,谢谢你所有的想法和你的意见。 我已经做了更多的研究,最后我意识到,为了做我想做的事情,我根本不用麻烦串口和AT命令。 所需要的只是做几个Windows RAS调用。

如果我在我的AT命令中想要做的更具体一些,那么很久以前你肯定会告诉我关于RAS的信息。

我发现了一个很好的.Net DLL( DotRas ),可以从托管代码中使用原生Windows RAS,它似乎只是做我需要的东西(从代码拨打3G调制解调器连接,附加任何类型的3G调制解调器)。

再次感谢您的时间。

在通过CreateFile()获取具有目标COM端口的句柄后,可以使用GetCommState()

http://msdn.microsoft.com/en-us/library/aa915369.aspx