智慧农业控制系统的服务软件设计

2017-02-09 03:12杨代利汪怡梅
单片机与嵌入式系统应用 2017年1期
关键词:手动上位串口

杨代利,汪怡梅

(1.四川文理学院 计算机学院,达州 635000;2.成都金网安泰信息技术有限公司)



智慧农业控制系统的服务软件设计

杨代利1,汪怡梅2

(1.四川文理学院 计算机学院,达州 635000;2.成都金网安泰信息技术有限公司)

基于Android技术、计算机网络技术设计了智慧农业控制系统手机APP客户端、上位机软件,搭建了服务器。上位机作为服务器和硬件控制系统中介,实时接收硬件系统的农作物环境信息,并通过服务器保存。APP客户端实时获取服务器信息,直观形象呈现给用户,且可以设置参数报警阀值,及时提醒用户,用户可选择智能模式或者手动模式远程调节农作物生长环境因素。

智慧农业;Android;APP;计算机网络;智能模式

引 言

随着物联网技术的发展,智慧农业将成为现代农业未来发展的一个趋势[3]。将物联网、Android、计算机网络技术、ZigBee等技术应用于农业中,能够促进农业信息化发展,改进生产管理模式,提高生产效率,为农业发展提供了方便[5]。

智慧农业控制系统可以让用户选择自动控制或者手动控制,能够实现实时观察农作物的状态,不需要浪费大量的人力和物力来专门进行检查和记录。该项目也可以手动设置不同农作物的不同温度、湿度、光照及土壤湿度的范围,一旦超过或者低于作物生长所需要的条件范围,系统将进行报警处理。

1 智慧农业软件主要技术与分析

1.1 移动终端

该项目移动终端是一个智能手机,可以通过其运行APP,并与服务器相连,从而实现控制和查看农作物生长情况功能。APP功能如下:

① 用户可以通过手机APP,申请一个属于自己的账号和密码。

② 用户登录后,可以随时随地查看农作物的环境信息及动态变化折线图。

③ 用户可以根据需要自主设置某些农作物的环境信息范围。

④ 用户可以根据需要选择控制方式,自动控制或者手动控制。

⑤ 若用户选择自动控制方式,当农作物的环境信息超出所设置的范围时,硬件将根据服务器的数据自动进行操作,如打开抽水机、灯光等。

⑥ 若选择手动控制方式,用户可以根据不同环境,开关灯光、继电器等,并设置灯光的亮度。

⑦ 手动控制时,当农作物的环境因素超出所设置的范围时,手机将进行报警,提示用户,当用户收到报警信息后,可以进行相应的报警处理。

1.2 服务器

服务器是硬件和应用程序的一个中介,手机应用程序APP通过TCP/IP协议与服务器相连后,用户通过APP向服务器上传农作物生长环境信息并保存数据;硬件也是通过一个上位机程序与服务器进行Socket连接,向服务器传送硬件所采集到的各种环境信息,服务器也通过Socket连接向硬件发送控制命令等。服务器作为一个中介来运行,一方通过端口8080和TCP/IP协议与移动终端APP进行通信,另一方通过端口2077和Socket连接与上位机程序进行通信。

服务器功能如下:

① 根据发送过来的Tag标志,来判断用户想要的操作并返回需要的数据给用户。

② 实时接收上位机程序发送过来的数据,并根据自定义的通信协议来进行分析和处理。

③ 服务器得到数据后,将其保存在服务器特定的数据库中。

④ 服务器返回数据给上位机,从数据库中查询后处理成一定格式的数据。

1.3 上位机

上位机是硬件与服务器之间的中介,硬件并不是直接通过WiFi模块将数据发送给服务器,而是通过上位机程序作一个中间接口发送的;当然,硬件也是可以通过WiFi模块向服务器发送数据,但是通过上位机能更加体现本项目的实现过程。上位机是一个Java Project,它的功能就是读取开发板通过串口发送的数据,然后通过Socket连接将收到的数据发送给服务器,接着将服务器返回的控制命令发送给硬件,让硬件根据信息作出反应。上位机的任务就是收取/发送串口数据和发送/收取服务器数据。

上位机通过串口和协调器相连,通过Socket与服务器相连,通过串口接收数据后进行一定的转化,然后通过Socket再转发给服务器。

上位机主要功能如下:

① 通过串口接收硬件发送过来的环境信息。

② 将接收的环境信息通过Socket连接发送给服务器。

③ 将服务器返回的控制数据转发给串口。

2 智慧农业软件设计与实现

2.1 设计流程

该系统运用手机APP方式进行控制。APP设计的核心功能包含设置阈值、查看数据、模式控制和报警处理。APP开发流程图如图1所示。

图1 APP开发流程图

2.2 APP开发

2.2.1 界面布局设计

图2是该APP的登录注册页面,该页面采用了本地记住密码功能,当用户选择记住密码后,在该移动设备上再次登录,便可以不用再继续输入用户名和密码,具有较强的实用性。在该页面上,采用了同数据库交互技术,当用户名和密码均存在并正确的情况下,用户才能进行下一步,否则不能。

图3是一个注册页面,如果用户之前在数据库中没有数据(即没有账号),在登录页面选择注册按钮便可以进入该页面,该页面是对数据库的一个插入数据过程。当用户在该页面填写信息并点击注册按钮后,用户填写的信息将实时插入到数据库,进行更新保存,以后用户便可以在登录页面使用此信息。

图4是用户进入该系统的主要功能列表,该页面采用list技术,将所有的主要功能排列起来,让用户更加方便直观地运用该APP。该页面上的每条记录都对应着另一个不同的页面。

图2 注册登录页面

图3 注册页面

图5是用户在控制列表中选择报警管理后跳转的页面。在该页面中,用户可以直观地看见空气的温度、湿度、光照和土壤湿度等是否合格,且这些参数过高或者过低,都会进行报警,提醒用户关注当前数据。该功能和数据库交互比较频繁,页面上的数据都是从数据库中采集并进行分析计算得到的。

图4 系统主要功能列表

图5 报警管理跳转页面

图6是用户在控制列表中选择阈值设置后跳转的页面。在该页面中,用户可以根据需要设置生产环境中的各种参数,让系统使用起来更加具有延伸性。用户在该页面中所填写的数据,都会通过HttpServlet提供的接口传递到数据库所对应的表中,进行保存和更新。

图7是用户在控制列表中选择数据查看后跳转的页面。在该页面中,用户可以实时对当前环境数据进行动态查看,在该页面中的动态图会显示每一秒的数据,并用动态折线图进行显示。该页面采用Android的canvas动态图技术,实时采集数据库的数据进行显示。

图6 阈值设置后跳转页面

图7 数据查看后跳转页面

图8是用户在控制列表中选择模式切换后跳转的页面。在该页面中,用户可以选择该系统的控制方式:自动控制或手动控制。如果用户选择自动控制,则系统数据不在合格区域内,APP不会产生报警声,而是通过控制执行机构调节当前状态。该页采用了服务技术,只要APP在使用中,便会和服务器保持实时交互。

图9是用户选择手动控制后跳转的页面。在该页面中用户可以对硬件进行控制,即灯光和继电器的开关等。当灯光打开或者关闭后,传递到数据库,并且数据库及时通过Socket与硬件通信,让硬件进行操作。

图8 选择模式切换后跳转页面

图9 选择手动控制后跳转页面

2.2.2 服务器设计流程

(1) 服务器搭建、数据库的建立

数据得以保存和使用都是靠数据库来进行的,设计数据库使用MySQL技术,建立了一个user用户,里面建立了4张表,其中一张表为用户名和密码表,一张表为用户设置的环境数据,一张表为灯光控制,一张表为硬件实时传递的当前数据。

服务器是运用JAVA EE软件建立的Dynamic Web Project编写代码。服务器模块,一方面要通过Tag标识来和用户APP端进行信息交互,另一方面要通过Socket与硬件进行信息交互。

手机APP通信时,服务器是通过Tag标识识别用户需求,当服务器识别到某一个Tag标识时,将根据需要来操作数据库,为此,服务器必须要考虑到用户的要求,根据需要来执行一定的操作。所以,服务器一定要和数据库相连接,否则,就算用户发送了Tag标识给服务器,服务器也收到了请求,仍然不能够操作数据库,用户的请求不能实现。

与硬件通信时,服务器首先要建立Socket连接,并设定端口号,让硬件能够通过端口号识别服务器,服务器和硬件建立起连接后,开始工作。服务器读取开发板发送过来的信息数据后,便开始进行分析和处理工作,根据事先定义好的数据通信协议分析数据,并进行拆分,然后将拆分后的数据保存在之前的数据库中;用户查看数据时,就能得到最新的记录。服务器完成这些工作后,将返回一些数据给硬件执行机构。同理,服务器也将要发送的数据进行处理,处理成硬件能够识别的信息,返回给硬件执行机构。

(2) 服务器和MySQL连接,并建立相应的数据

部分代码如下:

try {

//得到数据库连接

conn = DBUtils.getConnection();

//给具体的参数赋值

ptst.setString(1, mer.getMer_userName());

ptst.setString(2, mer.getMer_Password());

ptst.setString(3, mer.getMer_Tell());

//执行查询操作,返回查询结果(结果集对象)

ResultSet rs = ptst.executeQuery();

//判断结果集是否有数据,有则返回true

return rs.next();

catch (SQLException e) {

e.printStackTrace();

} finally {//关闭连接

DBUtils.free(conn, null, null);}

(3) 与APP交互

服务器与APP通信,通过Servlet实现。主要是APP对服务器发送读取数据请求,而不是服务器主动发送数据给APP。如此,可以减轻服务器的压力,让系统更实用。

(4) 与上位机交互

硬件系统发送的数据流是字节,并且不方便识别,要想将其变为易读取数据,需要通过字符串截取技术进行解析,并通过数组分别保存。

硬件系统发送的数据流是开发者自定义的。该数据有多少位,每一位代表什么,在需求阶段就要确定。因此,在服务器和上位机通信时,对数据的解析就要方便很多。

public void run() {

byte[] buf = new byte[128];

while (true) {

try {

if(client.isClosed()){

return;

}

else{

if (!client.isInputShutdown()) {

//读取开发板发过来的字节流

int len = dis.read(buf);

String dataFromHard = new String(buf);

System.out.println("===___"+dataFromHard);

//打印

if(len > 0) {

String receiveData=new String(buf, 0, len).trim();

String[] splitData=SplitDataFromReceive.splitReceive(receiveData,8);

Boolean result=hardDaoImpl.addData2DB(splitData);

boolean flag=client.isOutputShutdown();

if (!flag){

hardDaoImpl.findAllcaiData(dos);

try {

Thread.sleep(100);

}catch (InterruptedException e) {

e.printStackTrace();

}}}}}catch (IOException e){

e.printStackTrace();

}

finally {

try {

if (dis !=null)

dis.close();

if (dos !=null)

dos.close();

}

catch (IOException e) {

e.printStackTrace();

}}}}

2.2.3 上位机设计

(1) 基本框架建立

服务器与硬件连接是通过上位机来实现的。所谓上位机,本质是一段JAVA程序代码,主要功能是读取硬件传递过来的数据并发送给服务器,同时将服务器发送给硬件的控制命令传递给硬件系统,让其作出相应操作。

(2) 自定义数据格式

public String Bytes2HexString(byte[] b){

//将byte数组转换为16进制数组

String ret = "";

for(int i=0;i

String hex=Integer.toHexString(b[i]&0xff);

if (hex.length() == 1){

hex = '0' + hex;

}

ret += hex.toUpperCase();

}

return ret;

}

(3) 通过串口和硬件系统交互

硬件与上位机连接通过串口实现,下面代码为用户判断串口COM4是否可用,如果可用,则时刻阅读硬件系统是否有传递过来的数据。

while (portList.hasMoreElements()) {

portId=(CommPortIdentifier) portList.nextElement();

if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){

if(portId.getName().equals("COM4")){

try{

serialPort=(SerialPort) portId.open("Main", 2000);

}

catch (PortInUseException e){}

try{

inputStream=serialPort.getInputStream();

Service Software of Intelligent Agriculture Control System

Yang Daili1,Wang Yimei2

(1.Shool of Computer,Sichuan University of Arts and Science Department of computer,Dazhou 635000,China;2.Chengdu Network Aetna Information Technology Co.,Ltd.)

Based on Android technology and computer network technology,the mobile phone APP client and the upper computer of intelligent agricultural control system are designed.The upper computer is the intermediary between the server and the hardware control system,it receives the real-time crop environment information of the hardware system,and saves the real-time crop environment information through the server.The APP customer real-timely gets the server information,intuitivly and vividly presents the information to the user.The user can set alarm threshold of the parameters to remind.The intelligent mode or manual mode can be chosen to remotely regulate the environment factors of crop growth.

intelligent agriculture;Android;APP;computer network;intelligent mode

TP315

A

猜你喜欢
手动上位串口
浅谈AB PLC串口跟RFID传感器的通讯应用
特斯拉 风云之老阿姨上位
小巧手动起来
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
风行S5001.6L手动尊享型
宝骏5601.8L手动豪华型
C4世嘉 1.6L手动豪华型
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索