基于智能移动终端的数据监控系统的解决方案


  摘 要:工业监控设备(仪器仪表)主要由数据采集,显示以及数据输出等部分构成。现有工业用数据监控设备多为专用设备,通用性和便携性差,现场数据传送需有专用PC,有一定的制约性,价格昂贵。本文针对以上问题设计了运行在Android智能移动终端上的数据监控系统,旨在利用移动终端在数据存储、远程传输、监控等方面的优势,实现专业数据采集器的部分功能,由此,无需专用PC,由个人所持智能移动终端便可实现现场数据查询和远程数据传送。降低产品自身的价格的同时,也能减少固定投资成本。
  关键词:Android;监控系统;移动终端;
  中图分类号:TP399文献标识码:aDoI: 10.3969/j.issn.1003-6970.2012.02.021
  Surveillance System Solution Based on Smart Mobile Terminal SUN Hongyi, LaNG Chenglian(Department of Electrical Engineering, Tongji University, Shanghai 201804, China)
  【Abstract】 Monitoring Devices in Industry mainly consist of Data Collectors, Monitor and Data output. Most of the Monitoring Devices are special-designed, which means limited-utility, and not convenient to bring with. Besides, the PC should be used to monitor and transfer the data, therefore adding the cost. this paper aims to use the Smart Mobile terminal, implementing the functions of the Monitoring Devices. Accordingly, the personal-owned Smart Mobile Terminal can be used to query and transfer the data instead of PC, which cuts the cost and enhances the flexibility.
  【Key words】android; Surveillance System; Mobile terminal
   0 引 言
  工业监控设备(仪器仪表)主要由数据采集,显示以及数据输出(有线向PC传送)等部分构成。现有工业用数据监控设备多为专用设备,如安捷伦DSO9000, 日本Bits的HM-2G等,其便携性差,成本高。部分数据监控设备通过USB线或Wifi等方式,将监控所得数据传输至专用PC,有一定的制约性,价格昂贵。如图1所示数据采集器,作为与PC机配合使用的专用硬件,通过USB线或Wifi将串口数据传输至PC机,进行数据采集和监视。
  
  图1 传统监控设备系统总框图Fig.1 System Chart of the triditiona Surveillance Device
  随着智能移动终端应用的推广,采用智能移动终端替代专用设备的显示以及数据传送的部分功能,成为研究的热点和趋势。Android系统是基于Linux的开源操作系统平台,凭借其开放性技术,大大降低产品的开发成本,有助于在激烈的市场竞争中获得用户青睐。
  本文针对以上问题设计了运行在Android智能移动终端上的数据监控系统。系统旨在利用移动终端在数据存储、远程传输、监控等方面的优势,实现专业数据采集器的部分功能,由此,无需专用PC, 由个人所持智能移动终端便可实现现场数据查询和远程数据传送。降低产品自身的价格的同时, 也能减少PC机的固定投资成本。
   1 系统分析与设计
  整套系统需实现工业数据监控设备的功能,故主要包括两大部分:数据采集器实现对工业设备中相关数据的采集,并传送至移动终端;智能移动终端实现数据的显示、存储、回放、远程发送等功能。
  在移动智能终端方面,Android智能操作系统成为近年来最受关注的操作系统,由于它的免费性,以及系统的开放性,使开发人员可以随时取得程序的源代码,这对于程序开发人员和运营商定制非常重要。在移动智能终端支持方面,三星、摩托罗拉、多普达等国际一线厂商几乎倾倒性的发展Android,在2011年第一季度Android操作系统己经跃居智能终端操
  作系统的榜首。随着Android技术的迅猛发展和日趋成熟,Android操作系统在手持终端中所占比例正逐步上升,其开放性、便携性、良好的兼容性、无缝结合网络通信等特点将使Android操作系统在各个领域中都有着广泛的应用。
  RS232C在工业设备之间的数据交换及设备控制上占有举足轻重的位置,原因在于RS232C的成熟性和简单性。串行通信网络物理层是建立在RS232C(RS485)基础之上,至今RS232C仍被用于各种设备之间数据交换。几乎所有的MPU都标准配备UART,在电路设计,设备编程,设备连接,以及设备数据交换的事实监视,都必不可少的需要查看记录数据交换内容,由此产生了RS232C数据分析仪。现有RS232C监视器多为专用硬件来采集串行通信中的数据线和控制线信息,通过USB把信息送到PC上,由专用软件显示出来。也有做成专用设备自带显示器和数据输出口。RS232C数据分析仪由于是面对研发人员,使用数量相对较少,目前也只有少数厂家生产。
  
  图2 系统总框图
  Fig.2 System Chart of the whole system
  采集数据的硬件设备将实现RS232C数据分析仪的功能,由于智能移动终端已具有显示、存储数据等功能,故将传统数据监视器的相应功能进行部分裁剪,并增加数据通过移动终端远程发送。
  就采集数据的硬件与移动终端通信的方式而言,选择有USB、蓝牙、及Wifi传输等方式。其中,利用USB数据线进行传输的速率最高,但是由于手机厂商出于各方面因素的考虑,Android手机不具备USB Host功能,并且若将数据采集硬件作为USB Host的话,势必会增加数据采集端硬件的制作成本,利用USB进行两者间的数据传输不可行。就Wifi而言,进行硬件端与手机端的Wifi匹配不利于普通用户操作,并且若建立Wifi网络环境,也会增加相应成本。故,最终选择以蓝牙方式进行数据采集硬件与移动终端的通行。蓝牙2.0的传输速率为1M/S,传输距离为10米,完全满足两段通信的使用要求。
   2 移动终端软件设计
   2.1 数据采集模块
  数据采集模块主要包括Android端与硬件端蓝牙通信的建立。
  Android平台提供了android.bluetooth包用于蓝牙应用。本系统Android智能终端作为客户端主动连接采集数据的硬件,连接流程如下:
  1.注册BroadcastReceiver来获取蓝牙状态、搜索设备等消息;2.使用BlueAdatper的搜索;3.在BroadcastReceiver的onReceive()里取得搜索所得的蓝牙设备信息(如名称,MAC,RSSI);4.通过设备的MAC地址来建立一个BluetoothDevice对象;5.由BluetoothDevice衍生出BluetoothSocket,准备SOCKET来读写设备;6.通过BluetoothSocket的createRf commSocketToServiceRecord()方法来选择连接的协议/服务;7.Connect之后(如果还没配对则系统自动提示),使用BluetoothSocket的getInputStream()和getOutputStream()来读写蓝牙设备。
  通过以上步骤,Android智能终端与硬件设备建立蓝牙通信,可进行数据传输。
   2.2 波形显示模块
  大部分仪器仪表中,对测试的数据采用数据和波形的形式在屏幕上显示出来,故该模块以数据示波器为例,显示波形用于辅助频谱观察,数据走势,提供视觉直观感受。
  2.2.1 坐标转换算法
  在Android端需将实际数据转换为软件界面的相应坐标进行绘制。首先按显示量程及纵坐标最大采样点进行相应的比例变化,然后在按照Android系统得窗口坐标系进行相应转化,主要代码如下:
  实际电压值转化为屏幕视口纵坐标:private float Voltage2Waveform(float voltage)
  {return (voltage/GeneralData.getgData().
  getgRange()+1)*(height/2);
  }
  其中,参数voltage为实际电压值;GeneralData. getgData().getgRange()为用户选择的显示量程;height为绘图区域的高度。
  视口纵坐标转化为窗口纵坐标:
  public float testData(float real_Data)
  {return height-real_Data+1;
  }
  其中,参数real_Data为视口纵坐标;height为绘图区域的高度。
  经过以上两步方法,便可将实际数据值转化为Android端屏幕的绘制值。
  2.2.2 软件绘图方式浅析
  Android SDK 提供了两个可操作Canvas(画布)的类:View和SurfaceView。利用View的onDraw()方法绘制画布。在本软件中程序启动时,即开启绘图线程,当接受到相应数据时,折算后的绘制值将被传入绘图线程,进行实时绘制。
  以下为绘制波形所涉及到的部分代码:
  public WaveformPlotThread(SurfaceHolder surfaceHolder, WaveformView view)
  { holder = surfaceHolder;
  plot_area = view;
  }
  public void run(){
  Canvas c;
  while(_run){ c = null; try{
  c = holder.lockCanvas(null); synchronized (holder) { plot_area.PlotPoints(c);}
  }finally{
  if(c!=null){
  holder.unlockCanvasAndPost(c);
  }
  }}
  }
  public void surfaceCreated(SurfaceHolder holder)
  { plot_thread = new WaveformPlotThread(getHolder(),this);
  plot_thread.setRunning(true); plot_thread.start();
  }
  其中,plot_thread为WaveformPlotThread的对象。在绘制区域被创建时便启动该线程,实现实时绘制。本函数使用SurfaceView实现绘图,其绘制支持双缓冲区技术,绘制图形的效率更高。使用时,需继承SurfaceView的类,并实现SurfaceHolder.Callback接口。
  
  图3 数据实时显示
  Fig.3 Real time display of the data
   2.3 数据存储模块
  Android采用专门为嵌入式产品而设计的轻量级数据库SQLite。本软件端将接收到的数据存储至移动终端的SD卡上。通过SQLiteDatabase.openOrCreateDatabase方法可以打开已存在的数据库,或创建新的数据库。开启软件时,自动建立Data_Monitor.db数据库文件,每次接受数据会以接收时间作为表名建表,例如:2012年01月04日23点28分55秒建表,存储周期为30秒,则表名为:_2012_01_04_23_28_55_30。
   2.4 查看历史模块
  在软件界面,点击“历史”按钮,系统将停止接受硬件传来的数据,并跳转至“回放”界面,在此界面中点击“查看历史”,进入查看历史界面,浏览数据库存储的历史数据文件。点击相应表名,可选择查看或删除该表。查看时可进行数据回放,显示频谱。
  
  图4 查看历史
  Fig.4 Check the record
  
  图5 记录回放
  Fig.5 Record display
   3 结论
  本文给出了使用移动终端的显示及远程传输功能,与外部硬件配合,能够简单的实现现场数据采集和远程数据监控等功能。移动终端在工业上的应用还处于萌芽期,而利用人手必备的移动终端,配合简单的数据采集硬件设备,达到监控仪表的部分功能,便是移动终端在工业应用上的良好实现方式之一。若建立后台服务器的数据存储,并进行进一步改善和维护,那么将推进工业数据采集步入云端处理的过程。,
  参考文献
  [1] 刘正,陈强. 基于Android的GPS应用中的研究与开发[J].中国西部科技,2010,9(32):15-16. LIU Z, CHEN Q. Research and Development Based on Android’s GPS Application [J]. Science and Technology of West China,2010,9(32):15-16. (in Chinese)
  [2] 杨丰盛. Android技术内幕[M]. 北京:机械工业出版社,2011,07. YANG F S. Inside the Android [M]. Bei Jing:Machine Press,2011,07.
  [3] Reto Meier. Professional Android2 Application Development[M]. USA: Wrox,2010,231.
  [4] 赖超,龙曦,李金霖. 基于Android平台的手机后台监听技术[J].电脑知识与技术,2010,6(33):9472-9474. LANG C, LONG X, LI J L. Mobile Backstage Monitoring Technique Based on Android [J]. Computer Knowledge and Technology,2010,6(33):9472-9474. (in Chinese)