有关AT命令的结束符?

xpchishi 2008-11-10 03:18:57
send_GSM_cmd(fd,"AT\r");
send_GSM_cmd(fd,"AT+CNMI=2,2,0,1,1\r");
send_GSM_cmd(fd,"AT+CMGF=1\r");
send_GSM_cmd(fd,"AT+CMGS=138XXXXXXXX\r");
send_GSM_cmd(fd,"hello1A“);
以上是我发送AT的过程,但是对于结束到底该怎么表示才能发送成功一直不明白,有人说是1a,有人说是26,但是我无论以什么作为结束符,都感觉我的结束符被当做发的信息内容的一部分了,导致每次发送都不成功。希望大家帮我解决下这个问题,小弟刚接触AT命令,不是很明白。
...全文
897 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baichangle 2011-03-30
  • 打赏
  • 举报
回复
踏 个 脚 印
jdz196 2010-05-24
  • 打赏
  • 举报
回复
我也想知道啊,,\r后还要加\a吗
wxh404 2008-11-19
  • 打赏
  • 举报
回复


收到 ">" 后在发送短信内容,之后以 0x1A(十六进制) 结束
  • 打赏
  • 举报
回复
多贴点代码出来研究呀,最近,我也在搞这个,大家可以多交流下!
QQ279272833
biaozai06 2008-11-12
  • 打赏
  • 举报
回复
send_GSM_cmd(fd,"AT\r");
//添加自己的收串口数据接口,这里只是个例子
while(1)
{
if(read(fd,buf,sizeof(buf)))
break;
}
if(strstr(buf,"OK"))
{
...
}


LZ不妨具体说下所出现的提示段错误
xpchishi 2008-11-11
  • 打赏
  • 举报
回复
send_GSM_cmd(fd,"AT\r");
if(strstr(buf,"OK"))
在这两句程序之间应该还有一个读串口数据的函数吧,能告诉我吗?我自己写了一个,但是老是提示段错误,不知道怎么解决
jeffery223 2008-11-10
  • 打赏
  • 举报
回复
send_GSM_cmd(fd,"AT\r");
send_GSM_cmd(fd,"AT+CNMI=2,2,0,1,1\r");
send_GSM_cmd(fd,"AT+CMGF=1\r");
send_GSM_cmd(fd,"AT+CMGS=138XXXXXXXX\r");
楼主这样的发送方式是不对的!
应该这样:
send_GSM_cmd(fd,"AT\r");
if(strstr(buf,"OK"))
send_GSM_cmd(fd,"AT+CNMI=2,2,0,1,1\r");
.......
.......
send_GSM_cmd(fd,"AT+CMGS=138XXXXXXXX\r");
if(strstr(buf,">"))

send_GSM_cmd(fd,"hello\x1a");
大概是这样一个过程,即每发送一次AT命令后,收到OK后,才发送下一个AT命令!
至于发过号码后,需等待收到>后在发送内容,最后以0x1a结束
biaozai06 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 xpchishi 的帖子:]
send_GSM_cmd(fd,"AT\r");
send_GSM_cmd(fd,"AT+CNMI=2,2,0,1,1\r");
send_GSM_cmd(fd,"AT+CMGF=1\r");
send_GSM_cmd(fd,"AT+CMGS=138XXXXXXXX\r");
[/Quote]

LZ上面发送的AT命令应该没问题,\r就是结束符了
发送短信内容:send_GSM_cmd(fd,"hello1A");这里有问题,注意后面带的结束符结束符格式
可以改为send_GSM_cmd(fd,"hello\x1a");试试
xpchishi 2008-11-10
  • 打赏
  • 举报
回复
还是不行啊,我试了好多次,都不行啊,在终端上很好实现,但是再程序里就怎么也实现不了,到底再程序该怎么表示这个结束符啊,
linwancai 2008-11-10
  • 打赏
  • 举报
回复
按照GSM协议,Text模式下,回车不代表结束。ASCII 0x1A才是结束;
biaozai06 2008-11-10
  • 打赏
  • 举报
回复
一般的AT命令结束符都是‘\r’,即ASC码0x0d

LZ所说的0x1a是发送"AT+CMGS=138XXXXXXXX\r"后得到输入短信内容提示‘>’后文本内容的结束,即CTRL+Z

0x26在发送短信的AT命令里应该用不到,LZ可以试试

比如你要发送AT命令AT+CMGF=1,在后面加上结束符0x0d就行:AT+CMGF=1\r

后面的‘\r’就相当于回车了

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧