我编写了一个代码将数据发送到串口/dev/ttyACM0。基本上,这是用来与GSM调制解调器发送短信。在内存中设置sms并发送它的AT命令是
首先,我需要用串行端口"AT+CMGW=16\r“写以下内容
然后编写以下pdu转换的消息069110090000F111000A9210299232900000AA03C8F40F,然后发送ctrl-z
我对发送ctrl-z有异议
假设message = "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。
有人知道怎么做吗?
任何帮助都是非常感谢的
发布于 2014-03-18 09:11:42
那是我的错。我概括了发送到串口的数据的大小。我认为,由于定义的发送大小更大,所以ctrl十六进制值0x1A后面的值是垃圾值。因此,我的命令无法将sms保存在内存中,因为它不知道0x1A下面的值。为了解决这个问题,我使用strlen将char *发送到串口的实际大小。
https://stackoverflow.com/questions/22381008
复制相似问题