图2下位机硬件结构图微处理器采用美国ATMEL公司生产的AT89C52,AT89C52是一个低电压高性能CMOS 8位单片机,片内含8 Kbytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器RAM。 温度传感器采用美国DALLAS公司生产的DS18B20一线式数字温度传感器。DS18B20数字温度计提供9~12位(二进制)温度读数指示器件的温度信息,经过单线接口送入主机CPU,被测温度值为-55~+125 ℃,固有测温分辨率0.5℃[67]。 3系统软件的设计与实现 3.1单片机程序设计与实现 单片机C语言是一门结构化的编程语言,它最初来源于UNIX操作系统编程的初始化,它能够提供简洁的代码,而且不基于硬件系统,只需要简单的编辑就可以快速地在各种单片机上进行移植[1]。基于这种特性,本系统使用单片机C语言实现软件的设计与实现,使用KEIL平台进行开发。图3为单片机上程序的整个流程。 图3单片机程序流程图3.2服务器端程序设计与实现 3.2.1基于Web的网络通信方式 Android智能手机网络通信使用Apache http客户端,中间Web服务器采用servlet响应客户端请求,后台数据库采用JDBC访问数据库。Android与服务器端通信时本系统采取JSON数据格式,它是一种轻量级的数据交换格式,通过此格式可以更加有效地进行数据交互。由于基于Web的网络通信方式,Android智能手机与远程的PC也可以通过浏览器轻松地查询监测点的温度。图4是基于Web通信方式的程序设计。 图4基于Web通信方式的程序设计3.2.2基于C/S的网络通信方式 基于C/S模式的服务器应用程序采用Visual C++6.0进行开发,Visual C++6.0提供了庞大而齐全的MFC类库,编程人员只需做少量工作,即可以实现功能齐全的Windows应用程序。图5为服务器程序实现效果图。如图5所示,应用程序是基于对话框的,主界面提供了实时温度的显示、指数信息、阈值设置和温度报警等信息。通过设定温度阈值,可以提供报警功能。其他功能通过菜单或主界面的控件进入相应的对话框,可以设置端口号、选择记录的时间间隔(15 s,30 s和1 min等)、浏览温度的波形图以及历史温度值等。数据库采用MYSQL,通过ODBC接口使用SQL语言来连接数据源与数据库。网络通信采用稳定可靠的TCP套接字(socket)传输协议来实现服务器端和客户端之间的通信。由于在编写程序时采用了多线程机制,一方面可以对接收到的单片机传输的温度数据进行处理、存储与显示;另一方面可以实时地与远程PC进行通信,大大提升了系统的性能。 图5服务器端程序实现效果图3.3Android客户端程序设计与实现 智能手机客户端的设计采用Eclipse工具下的Android插件进行开发,程序的设计主要基于Java语言对其进行实现,并调用Android的部分API函数库。Android客户端整体设计流程如图6所示。 图6Android客户端程序设计流程图Android客户端为了实现远程查询功能,需要通过网络访问后台的数据库。Android访问网络的方式很多,本系统采用http访问网络。http是请求(request)/响应(response)的一种机制,通过一个类http Util来获得http request对象和http response对象,以及发送get和post请求获得返回response信息的方法。 3.4测试结果
该系统由单片机、服务器端和Android智能手机客户端组成,在网络状态良好的情况下,对设计的整个系统进行了现场测试。测试结果表明:整个系统运行稳定,能够准确地测得监测点的温度数据,单片机上LCD1602显示的数据与PC服务器端和Android智能手机客户端显示的温度数据一致。服务器端的数据库能够准确地记录温度数据,对于设定的报警阈值能准确响应。Android智能手机查询历史温度速度较快,达到了预期的效果。图7为Android智能手机客户端查询温度的结果。从图7中可以看出,基于Android智能手机平台的远程温度查询系统,克服了传统的基于GSM的远程温度查询系统的弊端,具有友好的人机交互界面,容易操作且可读性强,适合大规模的推广。 |
核心期刊网(www.hexinqk.com)秉承“诚以为基,信以为本”的宗旨,为广大学者老师提供投稿辅导、写作指导、核心期刊推荐等服务。 核心期刊网专业期刊发表机构,为学术研究工作者解决北大核心、CSSCI核心、统计源核心、EI核心等投稿辅导咨询与写作指导的问题。 投稿辅导咨询电话:18915033935 投稿辅导客服QQ: 投稿辅导投稿邮箱:1003158336@qq.com |