linux - 串行端口 - 无法设置服务中心 SMSC 地址 - AT+CSCA?返回错误,smsd返回初始化错误

标签 linux serial-port sms gsm at-command

我几乎花了一个星期的时间来配置一个串口,以便能够用它来发送短信。让我解释一下我的情况:我使用的是一台装有 Ubuntu 16.04 LTS 的笔记本,机器有一个集成的 GSM 调制解调器,串口是 /dev/ttyACM0,这里是一些 wvdialconf输出:

$ sudo wvdialconf
...
ttyACM0<*1>: Modem Identifier: ATI -- Manufacturer: SAMSUNG ELECTRONICS CORPORATION
...
ttyACM0<*1>: Max speed is 460800; that should be safe.

Found an USB modem on /dev/ttyACM0.
Modem configuration written to /etc/wvdial.conf.
ttyACM0<Info>: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2"

为了能够发送 SMS,我尝试了许多不同的工具:

  • 试过这个 PHP 脚本 https://gonzalo123.com/2011/03/21/howto-sendread-smss-using-a-gsm-modem-at-commands-and-php/ (没有用,脚本挂起,我没有返回任何输出);
  • smstoolssmsd,使用 apt-get install smstools 安装:我尝试将 SMS 文件放入 /var/spool/sms/outgoing:

    To: xxxxxxxxxxxx
    
    This is a test message.
    

    SMS 文件是由 smsd 守护程序从 /var/spool/sms/outgoing 收集的,但随后守护程序将其放入 /var/spool/sms/failed 如果我查看文件,我会看到:

    收件人:xxxxxxxxxxxx 调制解调器:GSM1 IMSI: Fail_reason:调制解调器初始化失败 失败:16-07-03 17:10:03

    这是一条测试消息。

    这是 GSM1 设备的 /etc/smsd.conf 中的部分:

    [GSM1] init = "ATQ0 V1 E1 S0=0 &C1 &D2" 设备 =/dev/ttyACM0 传入 = 是 引脚 = xxxx 波特率 = 460800 smsc = yyyyyyyyyyyy

    我也尝试指定没有 " 引号的 init 命令,仍然得到同样的错误。我认为 init 命令应该是 wvdialconf 输出给我的命令(见上面),那么为什么它不起作用?

  • 此外,我尝试使用 cu -l/dev/ttyACM0 并键入原始 AT 命令,但我无法设置 SMSC 地址,因为当我键入 AT+CSCA 时? 它输出我 ERROR:

    $ cu -l/dev/ttyACM0 ... AT+CSCA? 错误

    AT+CSCA="yyyyyyyyyyyy" 错误

有人可以帮我解决我面临的这个问题吗?您遇到过和我一样的错误吗?

感谢关注。

最佳答案

通过运行

,您可以获得比ERROR更具体的错误响应
AT+CMEE=2

参见第 9 章,移动终端错误 27.007有关命令和错误代码的更多详细信息。

关于linux - 串行端口 - 无法设置服务中心 SMSC 地址 - AT+CSCA?返回错误,smsd返回初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171604/

相关文章:

linux - 使用创建的用户登录时 CLI 受限

Linux:如何按顺序连接 CSV 文件并且只保留要连接的第一个文件的标题?

linux - 使用 clock_gettime 时出现链接器错误

android - 捕捉短信发送和传递事件

android - 在 Android 中显示撰写短信 View

android - 无法以编程方式删除短信(默认短信应用程序集)

linux - 在unix中通过单列合并两个文件

java - 如何在rs232连接上写入

C#串口问题——太简单了,不过不行

c++ - 串行端口连接 - ReadFile 始终返回 4 个字节读取