首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gsmcomm库中检查成功并发送消息失败

如何在gsmcomm库中检查成功并发送消息失败
EN

Stack Overflow用户
提问于 2015-06-09 06:07:13
回答 2查看 1.2K关注 0票数 0

我构建了一个使用gsmcomm库和C#发送消息的简单应用程序。当我通过调制解调器发送消息时,我将其存储到oracle数据库SENTMESSAGE表中。当发送消息失败时,我提供了一个表,即FAILEDMESSAGE表(ID、日期、时间、PHONENUMBER、MESSAGE),但我仍然不明白如何实现它。

有人可以建议我如何区分在gsmcomm库中成功发送消息和失败消息?

这是我发送信息的代码:

代码语言:javascript
复制
private void btnSentSMS_Click(object sender, EventArgs e)
{
    var msg = txtMessage.Text;
    var phoneNumber = txtNumber.Text;
    var pdu = new SmsSubmitPdu(msg, phoneNumber, string.Empty);
    comm.SendMessage(pdu);
    MessageBox.Show("sms sent");

    //STORE SEND SMS TO DATABASE
    OracleCommand cmd = new OracleCommand();
    cmd.CommandText = @"INSERT INTO SENTMESSAGE (ID, DATE, TIME, PHONENUMBER, MESSAGE) VALUES 
                       (SQ_SENTMESSAGE.NEXTVAL, '" + DateTime.Now + "', TO_DATE('" + DateTime.Now + "', 'dd/MM/yyyy hh24:mi:ss'), '"
                        + phoneNumber + "', '" + msg + "')";
    cmd.Connection = koneksi_manual.con;
    koneksi_manual.con.Open();// <= Open connection before executing the command.
    cmd.ExecuteNonQuery();
    koneksi_manual.con.Close(); //closing connection
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-13 09:49:52

SemdMessage方法如下:

代码语言:javascript
复制
public bool SendMessage(SerialPort port, string phoneNo, string message)
    {
        bool isSend = false;
        try
        {                
            string recievedData = SendATCommand(port,"AT", 300, "No phone connected");
            string command = "AT+CMGF=1" + char.ConvertFromUtf32(13);
            recievedData = SendATCommand(port,command, 300, "Failed to set message format.");

            // AT Command Syntax - http://www.smssolutions.net/tutorials/gsm/sendsmsat/
            command = "AT+CMGS=\"" + phoneNo + "\"" + char.ConvertFromUtf32(13);
            recievedData = SendATCommand(port, command, 300,
                "Failed to accept phoneNo");

            command = message + char.ConvertFromUtf32(26);
            recievedData = SendATCommand(port, command, 3000,
                "Failed to send message"); //3 seconds

            if (recievedData.EndsWith("\r\nOK\r\n"))
                isSend = true;
            else if (recievedData.Contains("ERROR"))
                isSend = false;

            return isSend;
        }
        catch (Exception ex)
        {
            throw ex; 
        }          
    }
票数 -1
EN

Stack Overflow用户

发布于 2015-06-12 14:12:56

请尝试使用以下代码:

代码语言:javascript
复制
private void btnSentSMS_Click(object sender, EventArgs e)
{
    var msg = txtMessage.Text;
    var phoneNumber = txtNumber.Text;
    var pdu = new SmsSubmitPdu(msg, phoneNumber, string.Empty);
    if(comm.SendMessage(pdu))
    {
        MessageBox.Show("sms sent");

        //STORE SEND SMS TO DATABASE
        OracleCommand cmd = new OracleCommand();
        cmd.CommandText = @"INSERT INTO SENTMESSAGE (ID, DATE, TIME, PHONENUMBER, MESSAGE) VALUES 
                   (SQ_SENTMESSAGE.NEXTVAL, '" + DateTime.Now + "', TO_DATE('" + DateTime.Now + "', 'dd/MM/yyyy hh24:mi:ss'), '"
                    + phoneNumber + "', '" + msg + "')";
cmd.Connection = koneksi_manual.con;
koneksi_manual.con.Open();// <= Open connection before executing the command.
cmd.ExecuteNonQuery();
koneksi_manual.con.Close(); //closing connection
}
else
{
MessageBox.Show("sms not sent");
OracleCommand cmd = new OracleCommand();
cmd.CommandText = @"INSERT INTO FAILEDMESSAGE (ID, DATE, TIME, PHONENUMBER, MESSAGE) VALUES 
                   (SQ_SENTMESSAGE.NEXTVAL, '" + DateTime.Now + "', TO_DATE('" + DateTime.Now + "', 'dd/MM/yyyy hh24:mi:ss'), '"
                    + phoneNumber + "', '" + msg + "')";
            cmd.Connection = koneksi_manual.con;
        koneksi_manual.con.Open();// <= Open connection before executing the command.
cmd.ExecuteNonQuery();
koneksi_manual.con.Close(); //closing connection
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30724155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档