i have registered event MessageReceivedEventHandler to recieve incoming sms in modem. i am using gsmcomm library to do it. I cannot read incoming short message sms, but when incoming message didn't short message i have no problem and it worked correctly.
this is my code :
private void comm_MessageReceived(object sender, MessageReceivedEventArgs e)
{
try
{
var obj = e.IndicationObject;
if (obj is MemoryLocation)
{
var loc = (MemoryLocation)obj;
var msgs = string.Format("Pesan Baru Diterima dalam SIM \"{0}\", index {1}.", loc.Storage, loc.Index);
MessageBox.Show(msgs, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim);
foreach (DecodedShortMessage message in messages)
{
StoreSMSToDatabase(message.Data); //save sms recieve to database
}
return;
}
if (obj is ShortMessage) // when short message recieve couldn't store to database
{
var msgs = (ShortMessage)obj;
var pdu = CommSetting.comm.DecodeReceivedMessage(msgs);
MessageBox.Show("Message Recieve");
DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim);
foreach (DecodedShortMessage message in messages)
{
StoreSMSToDatabase(message.Data); //save sms recieve to database
}
return;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
here is a code to store to database:
private void StoreSMSToDatabase(SmsPdu pdu)
{
if (pdu is SmsDeliverPdu)
{
SmsDeliverPdu data = (SmsDeliverPdu)pdu;
var phoneNumber = data.OriginatingAddress;
var msg = data.UserDataText;
var tanggal = string.Format("{0:dd/MM/yyyy}", data.SCTimestamp.ToDateTime());
var jam = string.Format("{0:HH:mm:ss}", data.SCTimestamp.ToDateTime());
/*---------------------- insert into database ------------------*/
if (koneksi_manual.con.State == ConnectionState.Open)
{
koneksi_manual.con.Close();
}
koneksi_manual.con.Open();
OracleCommand cmd = new OracleCommand();
cmd.CommandText = @"INSERT INTO PESANMASUK (IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN, USRPPP) VALUES
(SQ_PESANMASUK.NEXTVAL, '" + tanggal + "', '" + jam + "', '" + phoneNumber + "', '" + msg.Replace("'", "''") + "', '"+ Program.NilaiIDUser +"')";
cmd.Connection = koneksi_manual.con;
cmd.ExecuteReader();
/*-------------------------------------------------------------------------*/
//delete all messages in storage defined by you: sim or mem
CommSetting.comm.DeleteMessages(DeleteScope.All, PhoneStorageType.Sim);
}
}
anyone can suggest me how to read short message and store it into database?