我有一个GSM ModeM连接到串口,我使用它,所以在某些事件发送短信。
由于它不是即插即用的,我对如何检测其连接状态感到困惑。像GetCommState
这样的Win API显然不起作用。
我可以定期发送数据包并检查数据是否被消耗,但我对轮询性能和堵塞可能正在使用的缓冲区的风险持谨慎态度。
那么,有没有其他方法,或者某些基于中断的东西,我可以用它来检查是否仍然通过串口连接到我的系统?
如果有任何帮助,我将不胜感激。
感谢。
答案 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命令从调制解调器获取标识。有关详细信息,请查看调制解调器的编程手册。