3 系统的软件设计
本设计分为主机和从机两个部分,主机部分主要是实现对数据发送时间以及数据采集器参数的控制,从机部分主要是实现数据的接收和发送。
3.1 通信协议的设置
主机与从机之间要实现相互通信,首先必须规定用以传输数据的协议。一般来说,主机发送命令和配置信息给从机,而从机则向主机发送反馈信息。
本系统主要实现的是主机对从机数据发送时间的控制,当主机响应时钟芯片DSl2887的中断请求进入INTO中断服务程序时,主机向从机发送一个字符‘s’,从机接收到该指令后就开始发送数据。同时数据收发模块与接收终端之间同样需要通信协议以保证传输的可靠性。当接收终端在一定的时间内(比如5 min)没有收到数据时,向数据收发模块发送一条内容为‘N’的短信息,示意重发数据。数据收发模块收到短信息后,提取短信息内容并判断是否为‘N’,是则重发数据。从机与数据采集器之间的通信也规定了相应的协议,每一组数据前都有相应的起始位和长度位,从机通过判断每一组数据的起始位和长度位以保证数据接收的正确性。
3.2 主机部分的软件设计
在主机部分,关键点在于如何对时钟芯片进行初始化。初始化过程中,关闭周期性中断和时钟更新结束中断,而将时间性中断设为每整点一次,每次产生中断后,读取小时值,判断是否能被8整除,如能整除,说明该时刻为O:00,8:00或16:00,则向从机发送控制信息‘S’,通知数据收发模块发送数据。主机的INTO中断服务程序流程图如图3所示。
3.3 从机部分的软件设计
在从机部分,通过串口0接收数据采集器的数据并不断刷新,当从机接收到主机发送的指令‘S’时,通过串口1发送相应的AT指令给GPRS模块,将当前数据以短信息的形式发送到远程终端。由于GPRS只能发送字符数据,如果发送的数据大于127将发送失败,所以将每个数据都转换为相应的字符发送,比如十六进制数9F,就转换为字符9和F再发送,终端接收到以后如需要可再转换为十六进制数9F。
从机要实现的另一项功能是数据重发,该功能是在串口1中断服务程序中实现的。因此从机程序中有串口0、串口1、SPIO三个中断服务程序,其中串口O中断的优先级别最高,其次是SPIO中断,串口1中断优先级别最低。而串口0中断几乎是在不停地发生着,因此必须将串口1中断和SPIO中断的中断优先级设置位置1(默认为0),使CPU优先响应串口1中断和SPIO中断,否则串口1中断和SPIO中断的中断请求几乎得不到响应。
串口0中断服务程序流程图如图4所示。
4 结 语
本系统采用工业级芯片C8051F02X系列单片机结合GSM网络实现数据的无线传输,系统稳定、可靠性高,在很多应用领域,比如水文监测、地质勘探等,都可以使用本系统通过无线传输手段完成远程数据采集和对采集数据的实时传输。