基于ARM-Linux的无线气象数据通信系统的设计与实现
3 软件设计
下位机软件的核心是串口通信以及Socket通信。系统采用Qt4.5.0、Qt Creator 1.3.0作为数据通信器软件的开发工具,主要包括数据接收显示、存储以及发送给远程服务器等功能。
系统为了保证气象数据有效、高效、可靠地通信,该系统建立了如表1所示的数据帧格式。

协调器每次给数据通信器发送10字节数据,其中以“#”为起始符,紧跟4字节浮点数,第6字节表示气象要素类型,第8和第9字节分别为CRC检测的高位和低位,最后以“*”结束。CRC域是两个字节,它由协调器节点计算后加入到数据中,数据通信器对校验信息进行检查,若无错则接收该数据,否则放弃该数据并请求重发。
3.1 串口通信程序设计
协调器通过串口与数据通信器进行数据交互,所以在程序设计时需要对串口的波特率、数据位、奇偶校验、停止位以及数据流控制进行设置,实现数据传输。通过任务接口定时读写串口数据,查看协调器是否有数据,并将数据存入队列供界面显示、存储以及发送。串口设置界面如图4所示。

下面是串口设置的部分代码:

其中,getPortSettings()函数返回一个PortSettings型变量,包含了对波特率、数据位、停止位等的设置,getPortName()函数返回字符串型变量,用于串口号的设置。
3.2 网络通信程序设计
网络传输是本设计的主要任务之一,将数据通信器接收的数据经过Socket发送给远程服务器。而Qt提供了QTcpSocket类,用于编写TCP客户端的应用程序。QTcpSocket类提供了一个有缓冲的TCP连接,可以用来实现其他标准协议也可以用来实现自定义的协议。OTcpSocket采用异步工作方式,它依靠Qt事件循环发现外来数据和向外发送数据,并以信号的方式报告状态的改变或产生的错误,一旦网络的某一种状态发生改变(如网络断开),就会发出信号(如connectionClosed()),再通过信号与槽函数相关联进行处理。服务器设置界面如图5所示。

下面是网络传输相应槽函数:


4 结论
首次使用时,在系统设置界面对服务器地址、服务器端口、经度、纬度、台站号进行设置,在串口设置界面对串口的波特率、数据位、停止位等信息进行设置。设置完成后连接服务器并打开串口,在数据显示界面将会实时动态显示各传感器节点发来的气象数据。与服务器的连接状态等信息在程序状态栏会有相关提示,一旦与服务器断开,系统将会自动连接服务器并将这段时间内收到的数据保存起来等待连接成功后重新发送。
系统已经完成制作调试,效果良好,可以成功地实现数据通信、处理、存储、网络连接以及网络异常处理等功能。本系统低成本、无布线、可扩展性强等特点,在自动气象站应用中具有广泛的潜在市场和应用空间。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论