热度 30
2012-12-21 15:05
1959 次阅读|
13 个评论
单片机控制SIM模块实现GPRS联网是实现远程监控的基本方 式。 一 般的做法都是通过串口发送AT指令来实现对SIM模块的控制。 原理 虽 然简单,但是要编写一套稳定、可靠的程序就要采用合适的设计思 路,比如:发送AT指令后我们需要对AT指令的返回值进行断,如 果采用固定延时的做法也未尝不可,但是有些情况下比如联网时CONNECT OK的返回时间就跟环境有很大关系,所以采用固定延时的做法编写的程序适应性很差。 还存在另一种情况,比如发送完AT指令后模块返回错误代码,这时候我们最好的做法就是重发,而不是略过。 基于上面这两点的考虑我采用了 超时 和 重发 的机制来保证程序的可靠性、适应性从而避免程序在执行错误之后出现崩溃。 下面讲一下我的具体思路:我采用的是STM8L系列的低功耗单片机控制SIM模块的,要实现超时和重发的机制,我们需要一个基础定时器和串口。从发送AT指令后开始开启定时器计时,设置一个最大定时值,在设定时间到来之前如果收到正确的返回值就跳出定时等待,否则在最大等待时间到来后跳出循环,执行有限次的重发,在这种实现策略中必须要设定定时器中断的优先级比串口接收中断优先级要低,以便实现中断嵌套。通过这种手段我们可以将超时值和重发次数作为函数入口参数,只要更改这两个值便可以增强程序的适应性和可靠性。