C#如何判断短信猫来电。(就是接到电话)
大神来啊 。
[解决办法]
短信猫有提供这个方法么...
看接口资料吧
[解决办法]
[解决办法]
[解决办法]
关于C#判断短信猫的来电,我没有做过短信猫的项目,但是我在Windows Mobile手机上做过自动拨打电话、自动拦截电话、自动记录电话的通话质量、自动记录拨打电话的过程中系统内部各种相关的事件和log的自动化压力测试工具。
下面是节选的其中的一个类,或许对你能有启发:
在Windows Mobile上监听Radio Interface Layer Notification
http://blog.csdn.net/xinyaping/article/details/5904307
RIL(Radio Interface Layer)工作在手机的底层,负责数据传输、AT指令的发送、接收及解析、提供网络支持,支持上层通讯应用程序的SMS、Voice Call等。可以说,RIL是手机通信系统的软件层面的最底层。
如果我们想监听手机上的通讯活动,比如说想记录用户什么时候给那个号码拨打了电话,什么时候开始呼叫,什么时候开始建立会话进行通话,什么时候挂的电话(谁挂的),以及更详细一点的信息,例如手机都通过了哪些基站……这些信息都可以拦截RIL层的消息来得到。
本程序就是一个例子。当然,只是个示范程序,实现了最基本的监听,想要得到进一步详细的信息,只需对监听来的消息进行进一步解析即可。
- C# code
//--------------------------------------- // <copyright file="RILHelper.cs" company="Yaping Xin"> // Copyright (c) Yaping Xin. All rights reserved. // </copyright> // <Description>Helper class for Radio Interface Layer.</Description> //--------------------------------------- namespace MobileAutomation.Projects.VDFStressTesting { using System; using System.Runtime.InteropServices; using System.Threading; /// <summary> /// Helper class for Radio Interface Layer. /// </summary> public class RILHelper { /// <summary> /// Delegation definition of Log event handler /// </summary> /// <param name="message">Message to transfer</param> public delegate void LogHandler(string message); /// <summary>Event handler to record log</summary> public static event LogHandler Log; /// <summary>AutoResetEvent object</summary> private static AutoResetEvent waithandle = new AutoResetEvent(false); /// <summary>HRESULT to RIL object</summary> private static IntPtr hRil = IntPtr.Zero; /// <summary>HRESULT to result</summary> private static IntPtr hRes = IntPtr.Zero; /// <summary> /// RILRESULTCALLBACK delegation /// http://msdn.microsoft.com/en-us/library/aa920069.aspx /// </summary> /// <param name="dwCode">Specifies the result code.</param> /// <param name="hrCmdID">ID returned by the command that originated this response.</param> /// <param name="lpData">Data associated with the notification.</param> /// <param name="cbData">Size of the structure pointed to by lpData.</param> /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param> public delegate void RILRESULTCALLBACK( uint dwCode, IntPtr hrCmdID, IntPtr lpData, uint cbData, uint dwParam); /// <summary> /// RILNOTIFYCALLBACK delegation /// http://msdn.microsoft.com/en-us/library/aa922465.aspx /// </summary> /// <param name="dwCode">Specifies the notification code. </param> /// <param name="lpData">Data associated with the notification.</param> /// <param name="cbData">Size of the structure pointed to by lpData.</param> /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param> public delegate void RILNOTIFYCALLBACK( uint dwCode, IntPtr lpData, uint cbData, uint dwParam); /// <summary> /// RIL Initialize /// </summary> /// <returns>RIL HRESULT</returns> public static IntPtr Initialize() { return RIL_Initialize(1, new RILRESULTCALLBACK(RilResultCallback), new RILNOTIFYCALLBACK(RilNotifyCallback), 0xffffffff, 0, out hRil); } /// <summary> /// RIL Deinitialize /// </summary> /// <returns>RIL HRESULT</returns> public static IntPtr Deinitialize() { return RIL_Deinitialize(hRil); } /// <summary> /// Retrieves the system time from the network. /// </summary> /// <returns>Positive HRESULT values</returns> public static IntPtr GetSystemTime() { return RIL_GetSystemTime(hRil); } /// <summary> /// RIL Reslt Callback Proc /// </summary> /// <param name="dwCode">Specifies the result code.</param> /// <param name="hrCmdID">ID returned by the command that originated this response.</param> /// <param name="lpData">Data associated with the notification.</param> /// <param name="cbData">Size of the structure pointed to by lpData.</param> /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param> public static void RilResultCallback( uint dwCode, IntPtr hrCmdID, IntPtr lpData, uint cbData, uint dwParam) { RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL; string message = string.Format("ResultCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass); RILHelper.OnLog(message); waithandle.Set(); } /// <summary> /// RIL Notify Callback Proc /// </summary> /// <param name="dwCode">Specifies the notification code. </param> /// <param name="lpData">Data associated with the notification.</param> /// <param name="cbData">Size of the structure pointed to by lpData.</param> /// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param> public static void RilNotifyCallback( uint dwCode, IntPtr lpData, uint cbData, uint dwParam) { RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL; string message = string.Format("NotifyCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass); RILHelper.OnLog(message); waithandle.Set(); } /// <summary> /// Record the message /// </summary> /// <param name="message">Message to transfer</param> protected static void OnLog(string message) { if (RILHelper.Log != null) { RILHelper.Log(message); } } [DllImport("ril.dll")] private static extern IntPtr RIL_Initialize( uint dwIndex, RILRESULTCALLBACK pfnResult, RILNOTIFYCALLBACK pfnNotify, uint dwNotificationClasses, uint dwParam, out IntPtr lphRil); [DllImport("ril.dll")] private static extern IntPtr RIL_Deinitialize(IntPtr hRil); [DllImport("ril.dll")] private static extern IntPtr RIL_GetSystemTime(IntPtr hRil); } }
[解决办法]
一般的短信猫来电后会在串口输出RING
连续的输出
楼主只要在串口读取到RING字符串就可以判断是来电了
OK
[解决办法]
我用的Wavecom短信猫在来电时设备会向串口发送"RING"。
[解决办法]
RING正解