首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备波形调制解调器不支持SmsSubmitPdu GSMComm命令

设备波形调制解调器不支持SmsSubmitPdu GSMComm命令
EN

Stack Overflow用户
提问于 2015-03-07 01:07:25
回答 2查看 2.4K关注 0票数 2

我正在使用GSMComm库和Wavecom创建简单的程序SMS发件人,当我按下按钮发送我的winform一个在我的VS2010中得到一个消息调试。

电话报告一个未指定的错误。这种情况通常发生在设备不支持命令、命令对当前状态无效或参数不正确时。

这是我的代码

代码语言:javascript
复制
private void btnSend_Click(object sender, EventArgs e)
        {
            var port = "COM3"; // default port to connect modem wavecom
            var baudRate = 115200;
            var timeout = 300;
            var comm = new GsmCommMain(port, baudRate, timeout);

        try
        {
            var msg = txtIsiPesan.Text;
            var phoneNumber = txtNoTujuan.Text;
            comm.Open();
            SmsSubmitPdu pdu = new SmsSubmitPdu(msg, phoneNumber, "");
            comm.SendMessage(pdu); //debug found error here
            comm.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "error");
        }

    }

这是否表明我的波形调制解调器不支持SmsSubmitPdu?请建议我谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-06 04:00:02

我终于找到了解决办法。

代码语言:javascript
复制
SmsSubmitPdu pdu = new SmsSubmitPdu(msg, phoneNumber, "");

第三个参数应该是服务中心号,因为我使用的是+8801700000600

所以我试着

代码语言:javascript
复制
SmsSubmitPdu pdu = new SmsSubmitPdu(msg, phoneNumber, "+8801700000600");

并成功发送短信。顺便说一句,确保您的com端口是正确的,正如我的是COM5。

代码语言:javascript
复制
var port = "COM5"; // default port to connect modem wavecom
            var baudRate = 115200;
            var timeout = 300;
            var comm = new GsmCommMain(port, baudRate, timeout);

            try
            {
                var msg = "TESTING";
                var phoneNumber = "+8801719461643";
                comm.Open();
                SmsSubmitPdu pdu = new SmsSubmitPdu(msg, phoneNumber, "+8801700000600");
                comm.SendMessage(pdu); //debug found error here
                comm.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "error");
            }
票数 2
EN

Stack Overflow用户

发布于 2016-03-07 04:02:43

当comm打开时,您可以通过while循环进行长时间轮询,读取短消息并删除sms msg.Add的索引-- comm.Open();之后的代码

代码语言:javascript
复制
while(true){
 DecodedShortMessage[] messages =
     gsmCommMain.ReadMessages(PhoneMessageStatus.All, PhoneStorageType.Sim);
    foreach (var decodedShortMessage in messages)
    {
           var msgData = decodedShortMessage.Data.UserDataText;
          int indexP = decodedShortMessage.Index;
          gsmCommMain.DeleteMessage(indexP, PhoneStorageType.Sim);
          //  gsmCommMain.DeleteMessages(DeleteScope.Read, PhoneStorageType.Sim); delete all msg


       } 
}

希望这能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28910230

复制
相关文章

相似问题

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