检查串行端口GSM调制解调器连接状态

时间:2013-04-04 05:39:20

标签: serial-port gsm

我有一个GSM ModeM连接到串口,我使用它,所以在某些事件发送短信。

由于它不是即插即用的,我对如何检测其连接状态感到困惑。像GetCommState这样的Win API显然不起作用。

我可以定期发送数据包并检查数据是否被消耗,但我对轮询性能和堵塞可能正在使用的缓冲区的风险持谨慎态度。

那么,有没有其他方法,或者某些基于中断的东西,我可以用它来检查是否仍然通过串口连接到我的系统?

如果有任何帮助,我将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

从Windows 7开始,使用Windows Mobile Broadband API获取有关GSM调制解调器的信息。

答案 1 :(得分:0)

串口是非常原始的通信设备,它们可以追溯到计算的早期阶段。这是您插入ASR-33电传打字机以开始敲击Fortran程序的原因。它们仍然存在的唯一原因是因为它们很简单,硬件供应商喜欢它们,因为它们不需要花钱开发和支持自定义api来使用他们的设备。

尽管如此,即使在六十年代,计算机还是需要找出是否附有电传打字机。这是通过硬件握手信号完成的。 DSR信号(数据设置就绪)在设备通电时打开。如果您使用.NET SerialPort类,则可以使用SerialPort.DsrHolding属性检查该信号。如果你使用winapi,那么使用GetCommModemStatus(),MS_DSR_ON标志。

这仍然只会告诉您某些设备已附加。如果你想知道它是你编写程序的调制解调器,那么你可以使用AT commands来查询它,这是一个特定于调制解调器的协议。没有供应商以相同的方式实现完全,但您通常可以使用ATI命令从调制解调器获取标识。有关详细信息,请查看调制解调器的编程手册。