【问题标题】:Getting the Signal Strength of a cellular dongle (GSM) on a desktop application written in C#在用 C# 编写的桌面应用程序上获取蜂窝加密狗 (GSM) 的信号强度
【发布时间】:2014-07-08 23:28:03
【问题描述】:

我正在尝试检索 SignalStrength(即,就像手机背后的信息),但在 C# .NET 4.0 开发的桌面应用程序上,它连接了一个 GSM 适配器。我已经设法使用 RasDialer 连接和断开与服务提供商的连接,但无论如何我都找不到获取 SignalStrength 的方法。 我已经尝试过 MbnApi,但它运行良好,直到我收到连接的接口,并且在我将其中一个用于任何事情之后,它崩溃并出现 COM 异常,提示“完成此操作所需的数据尚不可用”。这是一段代码在最后一行出现此异常时崩溃:

 MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
 IMbnInterfaceManager infMgr = (IMbnInterfaceManager)mbnInfMgr;

 MbnConnectionManager mbnConnectionMgr = new MbnConnectionManager();
 IMbnConnectionManager ImbnConnectionMgr = (IMbnConnectionManager)mbnConnectionMgr;

 var mobileInterface = infMgr.GetInterfaces() as IMbnInterface[];

 IMbnSignal sig = (IMbnSignal)mobileInterface[0];

 uint signalStrength = sig.GetSignalStrength();

任何人都可以通过解释我在 MbnApi 上做错了什么或将我引导到另一个替代方案来提供帮助吗?

提前非常感谢您, 亚龙。

【问题讨论】:

    标签: c# windows .net-4.0 gsm cellular-network


    【解决方案1】:

    我看不到任何明显的错误,所以我将您的确切代码粘贴到 .NET 4.0 测试项目中,引用了在 Windows 8 系统上构建的 MbnApi 并运行它,它运行良好。我得到了集成调制解调器的信号强度。

    我假设在您的代码中,您通常会有 try/catch 块、null 测试等。

    您是否调查过存在多少个接口,以及您真的想要 interface[0] 还是另一个?还有明显的事情,比如重新启动 Windows 等。

    您询问了获取此信息的其他可能性。 当使用 MBN API 来测量信号强度时,您应该知道this factor. AT 命令 AT+CESQ 给出了更准确的值。 this document 的第 8.69 节对其进行了描述。在 SO 和互联网上有大量关于如何在 C# 中使用 AT 命令的信息 - 尝试使用 at-command 标签,或在 SO 上搜索 [c#][at-command]。

    【讨论】:

    • @aldridmc AT+CESQ 如果支持,则为 GSM、UMTS 和 LTE 提供准确的值。
    • 除 ETSI 标准文档外,从未见过此命令。你知道实际上支持这个命令的任何调制解调器吗?
    • 我还没有看到,但我也没有在不同的 LTE 调制解调器上做过很多 AT 命令测试。但我认为无论如何研究这个命令是有帮助的,因为有所有选项,它实际上是获得正确信息的最佳设计方法。如果你研究对这个 AT 命令的响应,至少你知道你应该得到什么。作为参考,Android 界面还尝试为不同的网络提供正确的值。
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多