2015-11-21 2 views
0

Есть ли способ извлечь содержимое только что полученного сообщения и поместить его в строковую переменную при срабатывании события MessageReceived?C# GSMcomm извлекает SMS при срабатывании MessageReceived

+0

, что вам нужно извлечь эти входящие сообщения? хранить его в базе данных или другой? дайте мне объяснение – aminvincent

ответ

0

это так просто просто добавить метод, как это:

private void comm_MessageReceived(object sender, MessageReceivedEventArgs e) 
{ 
    var obj = e.IndicationObject; 
    if (obj is MemoryLocation) 
    { 
     var loc = (MemoryLocation)obj; 
     var msg = string.Format("New message received in storage \"{0}\", index {1}.", 
           loc.Storage, loc.Index); 
     MessageBox.Show(msg); 

     DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim); 
     foreach (DecodedShortMessage message in messages) 
     { 
      DisplayMessage(message.Data); 
     } 
     return; 
    } 
} 

private void DisplayMessage(SmsPdu pdu) 
{ 
    if (pdu is SmsDeliverPdu) 
    { 
     SmsDeliverPdu data = (SmsDeliverPdu)pdu; 
     var phoneNumber = data.OriginatingAddress; 
     var msg = data.UserDataText; 
     var date = string.Format("{0:dd/MM/yyyy}", data.SCTimestamp.ToDateTime()); 
     var time = string.Format("{0:HH:mm:ss}", data.SCTimestamp.ToDateTime()); 

     //read message in listBox1 
     listBox1.Items.Add(string.Format("{0}, {1}, {2}, {3}", date, time, phoneNumber, msg)); 
    } 
} 

, но не забудьте зарегистрировать это событие, когда соединение открыто:

comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived); 

я надеюсь, что это поможет: D

Смежные вопросы