我一直在尝试在 C# 应用程序中使用 GSMComm 库,以便使用手机(通过 USB 电缆连接)作为 GSM 调制解调器发送 SMS 消息。我已经阅读了 SO 中所有类似的线程,但没有帮助。
一切都很好,除了交付报告。我将RequestStatusReport设置为 true 并启用了通知(EnableMessageNotifications ())。
问题是我无法阅读收到的交货报告,尽管我知道它的存储(它总是“SR”)和索引号。我不断收到 321 错误代码(无效索引),因为当我尝试从中读取时,SR 存储看起来是空的。
MessageReceived 事件代码和相应的报告如下,任何帮助将不胜感激!
private static void Comm_MessageReceived(object sender, MessageReceivedEventArgs e)
{
IMessageIndicationObject obj = e.IndicationObject;
if (obj is MemoryLocation)
{
MemoryLocation loc = (MemoryLocation)obj;
Util.AddLog(string.Format("New message received in storage \"{0}\", index {1}.", loc.Storage, loc.Index));
DecodedShortMessage msg = Comm.ReadMessage(loc.Index, loc.Storage);
if (((SmsPdu)msg.Data) is SmsStatusReportPdu)
{
SmsStatusReportPdu data = (SmsStatusReportPdu)msg.Data;
Util.AddLog("rec msg ref #: " + data.MessageReference.ToString());
}
}
else
{
Util.AddLog("Error: Unknown notification object!");
}
}
报告:
New message received in storage "SR", index 0.
[GSM_LOG] 17:08:49.528 Reading message...
[Catch in MessageReceived] ##### ERROR: Message service error 321 occurred.
[GSM_LOG] 17:08:49.501 [gsmphone] >>
[GSM_LOG] 17:08:49.501 [gsmphone] +CDSI: "SR",0
[GSM_LOG] 17:08:49.501 [gsmphone]
[GSM_LOG] 17:08:49.501 [gsmphone] Unsolicited message: New SMS-STATUS-REPORT received (indicated by memory location)
[GSM_LOG] 17:08:49.501 [gsmphone] Firing async MessageReceived event.
[GSM_LOG] 17:08:49.528 [gsmphone] Selecting "SR" as read storage...
[GSM_LOG] 17:08:49.528 [gsmphone] << AT+CPMS="SR"
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] >> AT+CPMS="SR"
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] +CPMS: 0,0,0,23,1,40
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] OK
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] Memory status: 0/0 (0% used)
[GSM_LOG] 17:08:49.528 [gsmphone] Activating PDU mode...
[GSM_LOG] 17:08:49.528 [gsmphone] << AT+CMGF=0
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] >> AT+CMGF=0
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] OK
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] Reading message from index 0...
[GSM_LOG] 17:08:49.528 [gsmphone] << AT+CMGR=0
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] >> AT+CMGR=0
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.528 [gsmphone] +CMS ERROR: 321
[GSM_LOG] 17:08:49.528 [gsmphone]
[GSM_LOG] 17:08:49.545 [gsmphone] Failed. Phone reports message service (MS) error 321.
[GSM_LOG] 17:08:49.545 [gsmphone] AT+CMGR=0
[GSM_LOG] 17:08:49.545 [gsmphone]
[GSM_LOG] 17:08:49.545 [gsmphone] +CMS ERROR: 321
[GSM_LOG] 17:08:49.545 [gsmphone]
[GSM_LOG] 17:08:49.548 [gsmphone] Ending async MessageReceivedEventHandler call