使用AT命令集控制TC35i时对URC的处理

来源:互联网 发布:淘宝cpu套装可信吗 编辑:程序博客网 时间:2024/06/03 16:36
URC是Unsolicited Result Code,即"非请求结果码"。一般的AT命令流程都是控制端发出命令,被控端响应结果码。但当被控端有事件需要通知控制端时,就会主动发出URC,例如有呼叫打入、收到新短信息、自动关机等。另一方面,TC35i对AT命令的响应结果可能有多行,各个命令都不同,没有一个统一的机制可以确切得知命令响应完成,加上URC,使得处理比较困难。 MC55的建议是启用回响(ATE1),当控制端发出"AT",并收到"A"的回响开始,到命令响应结束,这段期间不会发出URC。而且控制端应该在各个AT命令后等待至少100ms,以让TC35i有发出URC的机会。 处理的思路是,用一对函数将命令处理的"安全期"保护起来,以防止漏掉URC或被URC干扰程序。在开始AT命令时,先调用BeginATCommand()函数。BeginATCommand()函数先发出"AT"字符到TC35i,然后读取输入缓冲的每一行,如果有URC则放入URC队列,直到输入缓冲为空而超时,最后读入的字符应该就是"AT"的回响,这时候就进入了"安全期",可以继续发送后续的命令。命令完成后,再调用EndATCommand()函数,EndATCommand()函数负责把输入缓冲剩余的字符清空。同样读取输入缓冲的每一行,如果有URC则放入URC队列,直到输入缓冲为空而超时,清理完毕。
 
原创粉丝点击