【问题标题】:Check for Serial Port GSM Modem Connection status检查串行端口 GSM 调制解调器连接状态
【发布时间】:2013-04-04 05:39:19
【问题描述】:

我有一个连接到串行端口的 GSM 调制解调器,我使用它在某些事件时发送 SMS。

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

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

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

如果能提供任何帮助,我将不胜感激。

谢谢。

【问题讨论】:

    标签: serial-port gsm


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    不过,即使在 60 年代,计算机也需要确定是否连接了电传打字机。这是通过硬件握手信号完成的。 DSR 信号,即数据集就绪,在上电时由设备打开。如果您使用 .NET SerialPort 类,则可以使用 SerialPort.DsrHolding 属性检查该信号。如果您使用 winapi,则使用 GetCommModemStatus(),MS_DSR_ON 标志。

    这仍然只告诉您 一些 设备已连接。如果您想查明它是您编写程序的调制解调器,那么您可以使用调制解调器专用协议AT commands 询问它。没有供应商完全以相同的方式实现此功能,但您通常可以依靠调制解调器使用 ATI 命令的标识。有关详细信息,请查看调制解调器的编程手册。

    【讨论】:

    • 我尝试使用GetCommModemSatus(),但似乎无法让它工作..你能给我一个如何使用它的例子吗?和检查条件。在我的情况下,它总是返回奇数变量。
    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多