物联网感知课程设计

上传人:桔**** 文档编号:464694003 上传时间:2022-11-04 格式:DOC 页数:21 大小:291.50KB
返回 下载 相关 举报
物联网感知课程设计_第1页
第1页 / 共21页
物联网感知课程设计_第2页
第2页 / 共21页
物联网感知课程设计_第3页
第3页 / 共21页
物联网感知课程设计_第4页
第4页 / 共21页
物联网感知课程设计_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《物联网感知课程设计》由会员分享,可在线阅读,更多相关《物联网感知课程设计(21页珍藏版)》请在金锄头文库上搜索。

1、物联网感知课程设计 1一功能分析 1二概要设计 11系统组成 12.传感器选型 1三详细设计 11. 通信模块程序设计框图 12.程序设计2四系统说明 8五设计总结 9六附录 10物联网感知课程设计环境监测系统程序设计课程设计报告 题目:设计一个环境监测系统。一功能分析环境监测系统主要包括对环境变量的采集和显示。(1) 选择温湿度传感器来完成温度、湿度数据的采集。(2) 选择协调器串口发送程序。(3) 采用java语言制作相应的显示界面,将采集的变量值实时显示并给出相应提示。 二概要设计 1系统组成系统大体组成包括:传感器模块、数据传送模块和电机控制模块。系统框图如图1 所示。 由于传感器模块

2、没有外接电路,因此需要通过中间的协调器将数据转为串口形式发送到 PC 机上。图 1 系统框图2.传感器选型选择SHT10单片数字温湿度传感器来监测环境。SHT10采用CMOSens专利技术将温度湿 度传感器、A/D转换器及数字接口无缝结合,使传感器具有体积小、响应速度快、接口简单、 性价比高等特点。电路连接时,接口简单,两线连接,SHT10的两线串行接口 (bidirectional 2-wire)在传 感器信号读取和电源功耗方面都做了优化处理,其总线类似I2C总线但并不兼容I2C总线。 三详细设计1. 通信模块程序设计框图6.启动串口后台工作线程2.程序设计package org.seria

3、l;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.TooManyListenersException;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.

4、JFrame;import javax.swing.JTextField;import gnu.io.CommPortIdentifier;import gnu.io.PortInUseException;import gnu.io.SerialPort;import gnu.io.SerialPortEvent;import gnu.io.SerialPortEventListener;import gnu.io.UnsupportedCommOperationException;/* 项目名称 :illegalsms* 文件名称 :SerialPort.java* 所在包 :org.ser

5、ial* 功能描述 :* 串口类* 创建者 :* 创建日期 :2016-12-23* 修改记录 :*/Runnable,SuppressWarnings(serial)public class DSerialPort extends JFrame implements SerialPortEventListener private String appName = 协调器数据接收;private int timeout = 2000;/open 端口时的等待时间 private int threadTime = 0;private CommPortIdentifier commPort; pr

6、ivate SerialPort serialPort;private InputStream inputStream; private OutputStream outputStream;/* 方法名称 :listPort* 功能描述 : 列出所有可用的串口* 返回值类型 :void*/SuppressWarnings(rawtypes)public void listPort()CommPortIdentifier cpid;Enumeration en = CommPortIdentifier.getPortIdentifiers();System.out.println(now to

7、list all Port of this PC: +en); while(en.hasMoreElements()cpid = (CommPortIdentifier)en.nextElement(); if(cpid.getPortType() = CommPortIdentifier.PORT_SERIAL) System.out.println(cpid.getName() + , + cpid.getCurrentOwner();/* 方法名称 :selectPort* 功能描述:选择一个端口,比如:C0M1* 返回值类型 :void* param portName*/Suppres

8、sWarnings(rawtypes)public void selectPort(String portName)mPort = null;CommPortIdentifier cpid;Enumeration en = CommPortIdentifier.getPortIdentifiers(); while(en.hasMoreElements()cpid = (CommPortIdentifier)en.nextElement(); if(cpid.getPortType() = CommPortIdentifier.P0RT_SERIAL& cpid.getName().equal

9、s(portName) mPort = cpid;break;openPort();/* 方法名称 :openPort* 功能描述 : 打开 SerialPort* 返回值类型 :void */private void openPort()if(commPort = null) log(String.format( 无 法 找 到 名 字 为 %1$s 的 串 口 ! , commPort.getName();elseIog(端口选择成功,当前端口:,,+commPort.getName()+,现在实例 化 SerialPort:);tryserialPort = (SerialPort)co

10、mmPort.open(appName, timeout); log(, 实例 SerialPort 成功!,);catch(PortInUseException e)throw new RuntimeException(String.format(端口 %1$s正在使 用中!,,commPort.getName();try serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, /设 置串口读写参数SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);catch(Unsupported

11、CommOperationException e)/* 方法名称 :checkPort* 功能描述 :检查端口是否正确连接* 返回值类型 :void*/private void checkPort() if(commPort = null) throw new RuntimeException(没有选择端口,请使用+ ,selectPort(String portName) 方法选择端口,);if(serialPort = null) throw new RuntimeException(SerialPort 对象无效!);/* 方法名称 :write* 功能描述 : 向端口发送数据,请在调用

12、此方法前 先选择端口,并确定 SerialPort 正常打开!* 返回值类型 :void* param message*/public void write(String message) checkPort();tryoutputStream = new BufferedOutputStream(serialPort.getOutputStream();catch(IOException e)throw new RuntimeException(获取端口的 Outputstream 出错: +e.getMessage(); tryoutputstream.write(message.getB

13、ytes(); log(信息发送成功!);catch(IOException e) throw new RuntimeException( 向 端 口 发 送 信 息 时 出 错 +e.getMessage();finallytryoutputstream.close(); catch(Exception e)/* 方法名称 :startRead* 功能描述 :开始监听从端口中接收的数据* 返回值类型 :void* param time 监听程序的存活时间,单位为秒,0 则是一直监听*/public void startRead(int time) checkPort();int s; s=s

14、erialPort.getBaudRate();System.out.pri ntln (” 波特率为+s);tryinputStream = new BufferedInputStream(serialPort.getInputStream(); catch(IOException e)throw new RuntimeException(获取端口 的 InputStream 出错: +e.getMessage();tryserialPort.addEventListener(this); catch(TooManyListenersException e) throw new RuntimeException(e.getMessage();serialPort.notifyOnDataAvailable(true);log(String.format( 开 始 监 听 来 自 %1$s 的 数 据 ,commPort.getName();if(time 0)this.threadTime = time*1000;Thread t = new Thread(this);t.start();log(String.format(监听程序将在1$d 秒后关闭。,thr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号