每当短信到达Winform应用程序c#

时间:2019-06-19 14:20:01

标签: c# winforms sms sender gsmcomm

我正在尝试制作一个桌面应用程序,该应用程序只要在调制解调器中到达就接收短信,然后将消息发送到Web服务器,与此同时,另一个任务正在后台运行。我为此使用GSMLibrary。我的调制解调器是gsm调制解调器。我使用GSMLibrary消息接收处理程序,但无法读取消息。

我正在使用backgroundworker来保持进程运行。

我在backgroundworker中初始化了事件处理程序,像这样

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){
    BackgroundWorker worker = sender as BackgroundWorker;

    GsmCommMain comm = new GsmCommMain("COM9", 115200, 3000);
    comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived1);

    while(!worker.CancellationPending){
         Task(params);
    }
}

现在是我的事件处理程序,

private void comm_MessageReceived1(object sender, MessageReceivedEventArgs e){
        var obj = e.IndicationObject;
        if (obj is MemoryLocation)
        {
            var loc = (MemoryLocation)obj;

            GsmCommMain comm = (sender as GsmCommMain);
            DecodedShortMessage messages = comm.ReadMessage(loc.Index, loc.Storage);
            comm.DeleteMessage(loc.Index, loc.Storage);
            return;
        }
}

因此,当我调试时,我发现在消息处理程序中执行了DecodeShortMessage行,然后转到下面的comm.Delete,它去做后台工作程序。消息值也保持为空。

我在这里做错了什么?我该如何运作。提前谢谢。

0 个答案:

没有答案