Java串口通信数据采控系统的设计与实现_吴金锋

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1)实现串口的初始化 serialPort.setSerialPortParams(4800,//
设置波特率
SerialPort.DATABITS_8, //数据位
SerialPort.STOPBITS_1, //停止位

SerialPort.PARITY_NONE); //奇偶校验位 (2)通过 addEventListener()方法注册监听器,serialEvent()方法
线程;二是使用 Runnable 接口,这里不能直接创建所需类的对
象,必须从 Thread 类的一个实例内部运行它,例如:Thread t1 =
new Thread(new NewThreadClass())。本文采用第一种方法创建相
关线程。本文涉及的主要线程有:1、串口读写线程。定义了 Java
类 SPortRW,继承自 Thread 类,在 run()函数中实现串口操作。
的形式展示出来,在主程序中通过创建 Huitu 类实例,调用 pack
()函数打开绘制的统计图。
Huitu tu=new Huitu ();
tu.pack();
Huitu 类继承自 Frame 类,在该类的初始化函数 jbInit()中调
用在画布上画图的内部类 TJcanvas,该类则继承自 Canvas 类,在
InputStream inputStream; //定义串口输入流
inputStream = serialPort.getInputStream();
int numBytes=inputStream.read(readBuffer); //读取串口数据
2、数据库读写线程。定义了 Java 类 DataBaseRW,继承自
rs=Stmt.executeQuery("SELECT etemp FROM extemp"); //查
询语句
sql = "INSERT INTO timetemprh VALUES (now ()," +real-
temp+"," + floatstr +")";
//sql 语句
Stmt.executeUpdate(sql); //写入数据库
该类的 paint(Graphics g)函数中实现数据统计图的绘制,关键代
码如下:
g.setColor(Color.yellow);
//设置曲线颜色
g.drawLine(30,470-n*100,870,470-n*100); //画线
g.drawString(String.valueOf((n+1)*10),10,470 -n*100); //设 置
实时控制控制下位机环境时, 则在程序界面上相应控件里
输入参数值,点击相应的发送按钮,即可调用串口线程写入串口,
进而传到下位机实现温室环境控制。或者可以通过专家系统自
动运行数据库和串口读写模块实现数据的自动分析处理, 实现
Thread 类,在 run()函数中实现数据库操作,关键代码如下:
Class.forName("com.mysql.jdbc.Driver"); //设置驱动
Con=DriverManager.getConnection("jdbc:mysql://localhost:3306/
sysdb","root","123456"); Stmt=Con.createStatement(); //连接语句
引言
在农业生产过程中,为了提高农业生产的技术含量,提高生 产管理的现代化水平,有许多来自温室的实时数据(如温度、湿 度、CO2、光照等)需要采集、记录、处理及显示以便及时掌握动 植物生长环境。随着电子技术水平的不断提高,温室控制不断向 智能化方向发展。串口通信线路简单,应用灵活,方便、可靠,占用 系统资源少,所以在温室智能控制系统(GICS)中与下位机的通 信方式选择了 RS232 串口通信,结合数据库的数据维护及统计 等优点,根据实时数据库和专家数据库来反馈控制温室环境,有 利于动植物科学生长,促进农业增产增收。
术 设置串口需要响应的事件。 (3)将数据写入写入串口,

OutputStream outputStream; //定义串口输出流 outputStream = serialPort.getOutputStream();

outputStream.write(data); //向串口写入数据 (4)读取串口数据, byte[] readBuffer = new byte[200];
Java 程序语言具有面向对象、平台无关、开放性、安全等特 性,是一种理想的的编程语言。应用 Java Communication API 简 化了串口通信程序的开发。多线程技术能很好地解决各种逻辑 并发性和物理并行性问题,改善系统的各项性能。本文结合多线 程技术及数据库技术开发出了基于 Java 串口通信的数据采控 系统。
3、专家系统线程
图 2 专家系统流程图
《微计算机信息》(测控自动化 )2010 年第 26 卷第 4-1 期
定义了 Java 类 EXSystem,继承自 Thread 类,在 run()函数中
实现专家系统操作。在 run()函数中先通过函数获取系统时间,
获取当前小时数, 然后调用数据库线程提取专家数据库对应时
画面显示的字符
2、读取数据库,将数据以 TXT 文本文档形式打开。本文通
过 Writetxt 类来实现该功能。通过 DOWriteTxt()函数的两个参数
file 和 txt 来指定要打开的 txt 文件名和要写入的数据值。
public class Writetxt {
public void DOWriteTxt(String file, String txt) {
WU J in-feng LIU Wei-ping HUANG Hong-bin
摘要: 本 文 结 合 温 室 智 能 控 制 系 统 (GICS) 的 开 发 实 践 , 介 绍 了 一 种 基 于 Java 串 口 通 信 的 实 时 数 据 采 控 系 统 的 设 计 和 实 现 方
法 , 并 对 系 统 在 实 现 中 涉 及 的 Java 串 行 通 信 、 多 线 程 处 理 技 术 、 数 据 库 访 问 技 术 和 数 据 的 直 观 表 达 作 了 说 明 。
吴金锋: 硕士研究生
显示实时数据,系统能够直观获取到温室环境数据。上位机发 送温度、湿度等数据到下位机通过控制部分实现温室环境的 控制。
图 1 系统结构图
2 通信程序的实现
2.1 软件开发平台 在本项目中选择 Windows xp 操作系统下的 JBuilder2006 为开发工具,JBuilder2006 是一款强大的 Java 企业级开发平台, 体现了 Boland 公司一贯倡导的用最新科技以最短时间创造出 品质更佳的软件的宗旨; 以 MySQL 作为后台数据库,MySQL 是 一个多用户、多线程的 SQL 数据库,支持 Windows、UNIX 等多种 平台;Sun 公司的 J2SE 中没有直接提供串行通信协议的开发包, 而是以独立的 jar 包形式发布在 网站上的 comm. jar,称之为 Java Communications API,它是 J2SE 的标准扩展。Java 通过该类库能够极大地简化对串口的操作过程.与 comm.jar 开 发包一起的还有两个重要的文件, win32com. dll 和 javax. comm. Properties。comm.jar 提供了通信用的 java API,win32com.dll 提供 了供 comm.jar 调用的本地驱动接口,m.properties 是这 个驱动的类配置文件。配置 Communications API 路径如下(项目 使用 JBuilder 自带的 JDK 则需将上面的文件配置到 JBuilder 相 应文件目录处): <JDK_HOME>\jre\bin\w系统的设计与实现
Design and Implementation of Data Collection and Control System Based on Java and Serial Communication
(暨南大学) 吴 金 锋 刘 伟 平 黄 红 斌
技 术 创 新
《P LC 技术应用 200 例》
邮局订阅号:82-946 360 元 / 年 - 65 -
数采与监测
<JDK_HOME>\jre\lib\m.properties
<JDK_HOME>\jre\lib\comm.jar
2.2 多线程技术的应用
线程(Thread)是指计算机正在执行的程序内的一个控制流
串口通信线路简单应用灵活方便可靠占用系统资源少所以在温室智能控制系统gics中与下位机的通信方式选择了rs232串口通信结合数据库的数据维护及统计等优点根据实时数据库和专家数据库来反馈控制温室环境有利于动植物科学生长促进农业增产增收
您的论文得到两院院士关注 文 章 编 号 :1008-0570(2010)04-1-0065-02
程或者执行单元。线程上下文较轻,通信开销小,可以把各任务
分配到多个线程上并行运行。本文程序涉及串口、数据库、绘
图、专家系统等多个模块,本文采用了多线程技术实现相关模块
功能,能够很好地满足多任务和实时性的需要。
Java 创建线程的方法有两种: 一是创建一个类继承 Thread
类并覆盖其 run()方法,通过创建类的实例调用 start() 函数启动
刻的数据值,最后调用串口线程写入到串口,该模块流程图如图
2 所示。
2.3 数据分析与处理
读取串口接收到的数据以后, 上位机程序根据事先与下位
机达成的通信协议提取数据流中的温度、湿度、CO2 等数据值, 分别显示在程序界面上,然后存入数据库。为了直观显示这些数
据值,可以通过两种方式来处理:
1、调用绘图模块,从数据库读取数据后以数据统计对比图
1 系统的结构
图 1 所示为该数据采控系统结构图。在本系统中采用的是 上、下位机控制的结构, 上、下位机采用 RS-232 串行通信。下 位机主要由检测部分和控制部分组成。检测部分以 ADI 公司的 ADuC7026 精密模拟微控制器为核心, 将由传感器实时采集到 的环境数据经过一定处理传至 CPU,再由 CPU 通过专用串口接 口芯片 Max232 传至上位机进行数据处理。控制部分则采用模 糊控制算法进行环境控制。上位机由一台 PC 机构成。PC 机一 方面调用读串口进程通过 RS232 与下位机连接完成数据采集 通信;另一方面,调用读写数据库线程,连接 MySQL 数据库实现 数据的存储。通过加载数据库数据到文本文档或通过画图程序
try {
FileOutputStream os = new FileOutputStream(new File
(file), false); //覆盖
os.write((txt).getBytes());
} catch (Exception e) { e.printStackTrace(); }}
关键词: Java; comm.jar; 串口通信; 多线程; 数据库
中图分类号: TP311.1
文献标识码: A
Abstract: This paper introduces one of data collection and control system which is designed and implemented basing on java and serial communication technology with reference to exploite the Greenhouse Intelligent Control System (GICS). The paper gives a elaborate explanation of java and serial communication ,multi -thread processing technology,database accessing technology and data Visual expression which relate to the realization. Key words: Java; comm.jar; serial communication; multi-thread; database
相关文档
最新文档