我正在尝试制作一个桌面应用程序,该应用程序只要在调制解调器中到达就接收短信,然后将消息发送到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,它去做后台工作程序。消息值也保持为空。
我在这里做错了什么?我该如何运作。提前谢谢。