/// <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); } }
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"); } }