怎样用单片机C语言控制GPRS模块发AT指令
AT指令我知道,手机模块与单片机分别与电脑连接时均通信正常,但是单片机连手机模块后,AT指令怎么发送呢?直接发好像手机模块又识别不了,而且貌似首次发AT时必须先回车再发送...
AT指令我知道,手机模块与单片机分别与电脑连接时均通信正常,但是单片机连手机模块后,AT指令怎么发送呢?直接发好像手机模块又识别不了,而且貌似首次发AT时必须先回车再发送才能返回OK,这个回车符要怎么样写在单片机里才能被手机模块识别呢?最好能有源程序......
就是单片机发送“AT”后手机模块返回"OK",单片机接收到这个后再发出一个使手机模块发送短信的指令(知道是AT+CMGS但是具体怎么写在C程序里边)希望程序全!谢谢大家! 展开
就是单片机发送“AT”后手机模块返回"OK",单片机接收到这个后再发出一个使手机模块发送短信的指令(知道是AT+CMGS但是具体怎么写在C程序里边)希望程序全!谢谢大家! 展开
4个回答
展开全部
1、方法:
把命令字符对应的ASC||值依次向串口发送
如at+cmgf=1<CR>这个命令,就应向串口依次发送“at+cmgf=1”这个字符串中每个字符对应的ASC||值的16进制数,<CR>是回车键,对应ASC||值是13,十六进制是0D。每发一条指令后要有一定的延时。
2、需要注意的是:
AT命令都是有固定格式的字符串;
通过模块连接服务器时,你需要一张注册过GPRS功能的SIM卡;
不论是移动还是联通,GPRS方式都是动态IP,且在一定时间没有数据传送的情况下连接会断开,所以要维持发送心跳包;
注意模块的工作电压;
把命令字符对应的ASC||值依次向串口发送
如at+cmgf=1<CR>这个命令,就应向串口依次发送“at+cmgf=1”这个字符串中每个字符对应的ASC||值的16进制数,<CR>是回车键,对应ASC||值是13,十六进制是0D。每发一条指令后要有一定的延时。
2、需要注意的是:
AT命令都是有固定格式的字符串;
通过模块连接服务器时,你需要一张注册过GPRS功能的SIM卡;
不论是移动还是联通,GPRS方式都是动态IP,且在一定时间没有数据传送的情况下连接会断开,所以要维持发送心跳包;
注意模块的工作电压;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AT指令不就是一组格式化了的字符串吗?这个很简单,就是根据时序图来,开中断总允许,关中断之类的,你手上应该有一个手册吧?根据手册的提示来,然后写一个ASCII码对应的映射关系数组诸如字母表char table Aphernumeric [128]={'@','A'.....'del'}以及对应的十六进制表char AskIIHex[128]={'00','01'....'127'},使得两张表建立映射关系(用C++则直接用HashMap了),然后可以得到每个指令码对应的数组下标,根据下标找到十六进制码,将这串十六字符串用strcat连接起来,并通过atohex将字符串转换成十六进制,然后写入Buffer就Ok了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
网上搜一下AT指令集。发送的时候跟串口发数是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |