Пример #1
0
        /// <summary>
        /// Отображает сообщение
        /// </summary>
        /// <param name="pdu">Сообщение</param>
        /// <param name="mode">Режим отображения</param>
        private void DisplayMessage(object pdu)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new ShowMessageDelegate(DisplayMessage), new object[] { pdu });
                return;
            }
            //задаем переменные
            int    index       = 0;
            string phoneNumber = string.Empty;
            string msg         = string.Empty;
            string timestamp   = string.Empty;

            //парсим обьект
            if (pdu is SmsDeliverPdu)
            {
                SmsDeliverPdu data = (SmsDeliverPdu)pdu;
                phoneNumber = data.OriginatingAddress;
                msg         = data.UserDataText;
                timestamp   = data.SCTimestamp.ToString();
                index       = i;
            }
            else if (pdu is RecievedSMS)
            {
                RecievedSMS LongSMS = (RecievedSMS)pdu;
                phoneNumber = LongSMS.Sender;
                msg         = LongSMS.Message;
                timestamp   = LongSMS.Date.ToString();
                index       = LongSMS.Index;
            }
            else
            {
                return;
            }

            // отображаем смс
            switch (DisplayMode)
            {
            case MessageDisplayMode.Popup:
                MessageBox.Show(string.Format("Получено новое сообщение от {0}: \r\n {1} \r\n {2}", phoneNumber, timestamp, msg));
                break;

            case MessageDisplayMode.Datagrid:
                //read message in datagrid
                SMSList.Rows.Add(index, phoneNumber, timestamp, msg);
                break;

            case MessageDisplayMode.Array:
                break;

            default:
                break;
            }
        }
Пример #2
0
 /// <summary>
 /// Обрабатывает длинные сообщения
 /// </summary>
 /// <param name="SMSPDU">Само сообщение</param>
 /// <param name="longMsg">Коллекция объектов <see cref="SmsPdu"/>, являющихся частями длинного сообщения</param>
 /// <param name="prevMsg">Предыдущее сообщение</param>
 public RecievedSMS DecodeLongMessage(SmsDeliverPdu SMSPDU)
 {
     if (longMsg.Count == 0 || SmartMessageDecoder.ArePartOfSameMessage(longMsg.Last(), SMSPDU))
     {
         longMsg.Add(SMSPDU);
     }
     else if (prevMsg != null && SmartMessageDecoder.ArePartOfSameMessage(SMSPDU, prevMsg))
     {
         longMsg.Clear();
         longMsg.Add(SMSPDU);
     }
     prevMsg = SMSPDU;
     if (SmartMessageDecoder.AreAllConcatPartsPresent(longMsg)) // is Complete
     {
         var txt = SmartMessageDecoder.CombineConcatMessageText(longMsg);
         // создаем сообщение
         RecievedSMS longMessage = new RecievedSMS(i, "REC_READ", SMSPDU.OriginatingAddress, SMSPDU.SCTimestamp, txt);
         // очищаем за собой
         longMsg.Clear();
         return(longMessage);
     }
     return(null);
 }