将ctrl-z发送到C中的串口(GSM SMS)

时间:2014-03-13 14:02:30

标签: c linux serial-port sms

我编写了一个代码来将数据发送到串口/ dev / ttyACM0。基本上,它与GSM调制解调器一起用于发送SMS。用于在内存中设置短信并发送短信的AT命令是

首先,我需要在串口中编写以下内容 " AT + CMGW = 16 \ R"

然后编写以下pdu转换的消息 069110090000F111000A9210299232900000AA03C8F40F 然后发送ctrl-z

发送ctrl-z

时遇到问题

说消息=" 069110090000F111000A9210299232900000AA03C8F40F" 我试过了

strcat(message,"\x1A"); //Does not work
strcat(message,"\032"); //Does not work

我甚至尝试过将一个char添加到char *

的函数
void append(char *s,char c)
{
   int len = strlen(s);
   s[len] = c;
   s[len+1] = '\0';
}

append(message, '\032'); //Does not work
append(message, '\x1A'); //Does not work

我需要读取端口的接收缓冲区以检查计数 示例+ CMGW:4

然后写 AT + CMSS = 3 \ r 发送消息。

在minicom上键入上述AT命令会发送短信。但在C代码中我只能输入ctrl-z。

有谁知道如何去做?

感谢任何帮助 谢谢

1 个答案:

答案 0 :(得分:1)

嗯,这是我的错。我概括了发送到串行端口的数据的大小。我认为由于定义的发送大小较大,因此ctrl-z十六进制值0x1A之后的值是垃圾值。所以我的命令无法将短信保存在内存中,因为它不知道0x1A后面的值。为了解决这个问题,我使用strlen发送发送到串口的char *的实际大小。