Example #1
0
 /// <summary>
 /// Send SMS message.
 /// </summary>
 /// <param name="eventSender"></param>
 /// <param name="eventArgs"></param>
 private void SendBtn_Click(System.Object eventSender, System.EventArgs eventArgs)
 {
     try
     {
         Gurux.SMS.GXSMSMessage msg = new Gurux.SMS.GXSMSMessage();
         msg.Data = SendText.Text;
         gxsms1.Send(msg);
         MessageBox.Show(this, "SMS sent.");
     }
     catch (Exception Ex)
     {
         MessageBox.Show(this, Ex.Message);
     }
 }
Example #2
0
 public static void Encode(string data, GXSMSMessage msg)
 {
     if (data.Length < 1)
     {
         throw new ArgumentOutOfRangeException("Invalid data.");
     }            
     int index = 0;
     // Service Center Number length
     int ServCenterlen = GetInteger(data, index);
     index += 2;
     //Type-of-address of the SMSC.
     int SMSCType = GetInteger(data, index);
     index += 2;
     //Get Service Center number            
     if (ServCenterlen > 0)
     {
         int sz = 2 * ServCenterlen - 1;
         if (data.Length < index + sz)
         {
             throw new ArgumentOutOfRangeException("Invalid data.");
         }                
         string serviceCenterNumber = data.Substring(index, sz);            
         if (SMSCType == 0x91) //If international format.
         {
             serviceCenterNumber = "+" + serviceCenterNumber;
         }
         msg.ServiceCenterNumber = serviceCenterNumber;
         index += sz;
     }
     //First octet of the SMS-DELIVER PDU
     int SMSDeliver = GetInteger(data, index);
     index += 2;
     //Length of the sender number
     int SenderLen = GetInteger(data, index);
     index += 2;
     SenderLen += SenderLen % 2;
     //Type-of-address of the sender number.
     int SenderType = GetInteger(data, index);
     index += 2;
     //Get Sender number            
     string phoneNumber = GetString(data, index, SenderLen, true); 
     if (SenderType == 0x91) //If international format.
     {
         phoneNumber = "+" + phoneNumber;
     }
     msg.PhoneNumber = phoneNumber;
     index += SenderLen;
     //TP-PID. Protocol identifier.
     int ProtocolID = GetInteger(data, index);
     index += 2;
     //TP-DCS Data coding scheme		
     msg.CodeType = (MessageCodeType)GetInteger(data, index);
     index += 2;
     int year = GetInteger(data, index);
     index += 2;
     if (year != 0xAA)
     {
         year += 2000;                
         int month = GetInteger(data, index);
         index += 2;
         int day = GetInteger(data, index);
         index += 2;
         int hour = GetInteger(data, index);
         index += 2;
         int minute = GetInteger(data, index);
         index += 2;
         int second = GetInteger(data, index);
         index += 2;
         int timezone = GetInteger(data, index);
         index += 2;
         //TODO: lisää time zone.
         //DateTime dt = new DateTime(year, month, day, hour, minute, second);
     }
     //TP-UDL. User data length, length of message. 
     // The TP-DCS field indicated 7-bit data, so the length here is the number of septets (10). 
     // If the TP-DCS field were set to indicate 8-bit data or Unicode, the length would be the number of octets (9). 
     int DataLen = GetInteger(data, index);
     index += 2;
     string buff = GetString(data, index, 2 * DataLen, false); //data.Substring(index, DataLen);
     index += DataLen;
     //TP-UD. Message 8-bit octets representing 7-bit data.
     //When DataCodingScheme = 0, PDU code is coded from 7bit charactor (see GSM 03.38).
     if (msg.CodeType == MessageCodeType.Bits7)
     {
         msg.Data = Decode7Bit(buff);
     }
     // When DataCodingScheme = 4, PDU code is coded using 8 bits codec...
     else if (msg.CodeType == MessageCodeType.Bits8)
     {
         msg.Data = Decode8Bit(buff);
     }
     // When DataCodingScheme = 8, PDU code is coded from Unicode charactor (see GSM 03.38).
     else if (msg.CodeType == MessageCodeType.Unicode)
     {
         msg.Data = DecodeUnicode(buff);
     }
     else
     {
         throw new ArgumentOutOfRangeException("Invalid data coding scheme");
     }            
 }
Example #3
0
        public static void Encode(string data, GXSMSMessage msg)
        {
            if (data.Length < 1)
            {
                throw new ArgumentOutOfRangeException("Invalid data.");
            }
            int index = 0;
            // Service Center Number length
            int ServCenterlen = GetInteger(data, index);

            index += 2;
            //Type-of-address of the SMSC.
            int SMSCType = GetInteger(data, index);

            index += 2;
            //Get Service Center number
            if (ServCenterlen > 0)
            {
                int sz = 2 * ServCenterlen - 1;
                if (data.Length < index + sz)
                {
                    throw new ArgumentOutOfRangeException("Invalid data.");
                }
                string serviceCenterNumber = data.Substring(index, sz);
                if (SMSCType == 0x91) //If international format.
                {
                    serviceCenterNumber = "+" + serviceCenterNumber;
                }
                msg.ServiceCenterNumber = serviceCenterNumber;
                index += sz;
            }
            //First octet of the SMS-DELIVER PDU
            int SMSDeliver = GetInteger(data, index);

            index += 2;
            //Length of the sender number
            int SenderLen = GetInteger(data, index);

            index     += 2;
            SenderLen += SenderLen % 2;
            //Type-of-address of the sender number.
            int SenderType = GetInteger(data, index);

            index += 2;
            //Get Sender number
            string phoneNumber = GetString(data, index, SenderLen, true);

            if (SenderType == 0x91) //If international format.
            {
                phoneNumber = "+" + phoneNumber;
            }
            msg.PhoneNumber = phoneNumber;
            index          += SenderLen;
            //TP-PID. Protocol identifier.
            int ProtocolID = GetInteger(data, index);

            index += 2;
            //TP-DCS Data coding scheme
            msg.CodeType = (MessageCodeType)GetInteger(data, index);
            index       += 2;
            int year = GetInteger(data, index);

            index += 2;
            if (year != 0xAA)
            {
                year += 2000;
                int month = GetInteger(data, index);
                index += 2;
                int day = GetInteger(data, index);
                index += 2;
                int hour = GetInteger(data, index);
                index += 2;
                int minute = GetInteger(data, index);
                index += 2;
                int second = GetInteger(data, index);
                index += 2;
                int timezone = GetInteger(data, index);
                index += 2;
                //TODO: lisää time zone.
                //DateTime dt = new DateTime(year, month, day, hour, minute, second);
            }
            //TP-UDL. User data length, length of message.
            // The TP-DCS field indicated 7-bit data, so the length here is the number of septets (10).
            // If the TP-DCS field were set to indicate 8-bit data or Unicode, the length would be the number of octets (9).
            int DataLen = GetInteger(data, index);

            index += 2;
            string buff = GetString(data, index, 2 * DataLen, false); //data.Substring(index, DataLen);

            index += DataLen;
            //TP-UD. Message 8-bit octets representing 7-bit data.
            //When DataCodingScheme = 0, PDU code is coded from 7bit charactor (see GSM 03.38).
            if (msg.CodeType == MessageCodeType.Bits7)
            {
                msg.Data = Decode7Bit(buff);
            }
            // When DataCodingScheme = 4, PDU code is coded using 8 bits codec...
            else if (msg.CodeType == MessageCodeType.Bits8)
            {
                msg.Data = Decode8Bit(buff);
            }
            // When DataCodingScheme = 8, PDU code is coded from Unicode charactor (see GSM 03.38).
            else if (msg.CodeType == MessageCodeType.Unicode)
            {
                msg.Data = DecodeUnicode(buff);
            }
            else
            {
                throw new ArgumentOutOfRangeException("Invalid data coding scheme");
            }
        }