我编写了一个代码来将数据发送到串口/ 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。
有谁知道如何去做?
感谢任何帮助 谢谢
答案 0 :(得分:1)
嗯,这是我的错。我概括了发送到串行端口的数据的大小。我认为由于定义的发送大小较大,因此ctrl-z十六进制值0x1A之后的值是垃圾值。所以我的命令无法将短信保存在内存中,因为它不知道0x1A后面的值。为了解决这个问题,我使用strlen发送发送到串口的char *的实际大小。