java实现串口通讯
此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台
一. 准备工作
1. 将RXTXcomm.jar放到 %JAVA_HOME%\jre\lib\ext\ 目录下
2. 将rxtxSerial.dll放到 %JAVA_HOME%\jre\bin\ 目录下
二. 相关程序介绍
1. CommPort.java,串口类
package com.ims.interfaces.commPort;
public class CommPort {
/**
* 串口名称,如:COM1、COM2
*/
private String commPortName="";
/**
* 串口所有者名称,一般为应用程序的名称
*/
private String ownerName;
/**
* 波特率
*/
private String baudRate="";
/**
* 数据位
*/
private String dataBit="";
/**
* 校验位
*/
private String partityBit="";
/**
* 停止位
*/
private String stopBit="";
public String getCommPortName() {
return commPortName;
}
public void setCommPortName(String commPortName) {
this.commPortName = commPortName;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public String getBaudRate() {
return baudRate;
}
public void setBaudRate(String baudRate) {
this.baudRate = baudRate;
}
public String getDataBit() {
return dataBit;
}
public void setDataBit(String dataBit) {
this.dataBit = dataBit;
}
public String getPartityBit() {
return partityBit;
}
public void setPartityBit(String partityBit) {
this.partityBit = partityBit;
}
public String getStopBit() {
return stopBit;
}
public void setStopBit(String stopBit) {
this.stopBit = stopBit;
}
}
2. CommPortManager.java,串口管理员类
package com.ims.interfaces.commPort; import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Enumeration; public class CommPortManager {
/**
* 串口定义
*/
private CommPort commPort; /**
* 串口对象
*/
private SerialPort serialPort; /**
* 字节输入
*/
private InputStream in; /**
* 字节输出
*/
private OutputStream out; /**
* 字符输入
*/
private BufferedReader bufReader; /**
* 字符输出
*/
private BufferedWriter bufWriter; /**
* 数据输入
*/
private DataInputStream dataIn; /**
* 数据输出
*/
private DataOutputStream dataOut; /**
* 串口是否在使用
*/
private boolean isUse; public CommPortManager(CommPort commPort){
this.commPort = commPort;
} /**
* 打开串口
* @throws Exception
*/
public void open() throws Exception{
CommPortIdentifier commPortId = CommPortIdentifier.getPortIdentifier(commPort.getCommPortName()); // 第一个参数:通常设置为你的应用程序的名字;第二个参数:开启端口超时的毫秒数
serialPort = (SerialPort)commPortId.open(commPort.getOwnerName(), 5000);
serialPort.setOutputBufferSize(2048); in = serialPort.getInputStream();
out = serialPort.getOutputStream(); bufReader = new BufferedReader(new InputStreamReader(in, "Unicode"));
bufWriter = new BufferedWriter(new OutputStreamWriter(out)); dataIn = new DataInputStream(in);
dataOut = new DataOutputStream(out); // 设置串口参数
serialPort.setSerialPortParams(Integer.valueOf(commPort.getBaudRate()), Integer.valueOf(commPort.getDataBit()),
Integer.valueOf(commPort.getStopBit()), Integer.valueOf(commPort.getPartityBit()));
} /**
* 判断串口是否可用
*/
public boolean commPortEnable(){
boolean result = false;
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL
&& portId.getName().equalsIgnoreCase(commPort.getCommPortName())) {
result = true;
}
}
return result;
} /**
* 设置串口接收超时时间
* @param timeout 超时时间,单位秒
* @throws Exception
*/
public void setReceiveTimeout(int timeout) throws Exception{
getSerialPort().enableReceiveTimeout(timeout*1000);
} public CommPort getCommPort() {
return commPort;
} public SerialPort getSerialPort() {
return serialPort;
} public InputStream getIn() {
return in;
} public OutputStream getOut() {
return out;
} public BufferedReader getBufReader() {
return bufReader;
} public BufferedWriter getBufWriter() {
return bufWriter;
} public DataInputStream getDataIn() {
return dataIn;
} public DataOutputStream getDataOut() {
return dataOut;
} public boolean isUse() {
return isUse;
} public void setUse(boolean isUse) {
this.isUse = isUse;
}
}
java实现串口通讯的更多相关文章
- java SerialPort串口通讯的使用
api文档 http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html ma ...
- Java利用Rxtx进行串口通讯
最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...
- 使用Java进行串口SerialPort通讯
1.准备工作 在进行串口连接通讯前,必须保证你当前操作电脑上有可用且闲置的串口.因为一般的电脑上只有一个或者两个串口,如COM1或COM2,但大多数情况下,这些串口可能会被其他的程序或者 ...
- 简单的Java串口通讯应答示例
java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...
- java web下串口通讯
最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示 ...
- java串口通讯环境配置
用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...
- Android串口通讯
今天在整一个项目,需要利用串口通讯在网上看了好多人的帖子才稍微整出了一点头绪. 首先串口代码就是利用谷歌自己的api,将java代码放在java/android_serialport_api目录下,如 ...
- 使用Xamarin实现串口通讯
前几天我写了年度总结,然后有人说让我教一下他Xamarin串口通讯怎么做,其实跟java没有多大区别. 记得我刚开始接到公司这个项目的时候很懵逼,我去看了别的安卓串口工具,都不行我当时是RS232串口 ...
- Android Studio的串口通讯开发
基于android-serialport-api实现 前言RS232标准接口UARTRS232与UART转接下载 NDK 和构建工具创建支持 C/C++ 的新项目编译C/C++代码串口通讯原理关于校验 ...
随机推荐
- 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲
写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...
- Linux上的SQL Server——预告片
大家可能都听说了,微软在几个星期前宣布发布可以在Linux上完整运行的SQL Server!如果你想看下在Linux上SQL Server如何运行,进行查询是什么样的体验,可以看下下面的视频.
- jquer 事件,选择器,dom操作
一.jQuery简介 jQuery 是一个 JavaScript 库.(其实就是js,就是封装了,语法上有些不一样) jQuery 极大地简化了 JavaScript 编程. jQuery 库位于一个 ...
- jQuery 判断是否包含某个属性
1.Get the attribute, check the value var attr = $(this).attr('name'); // For some browsers, `attr` i ...
- Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:9001/api/size/get. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http:/ ...
- jquery easyui菜单树显示
目前做了一个easyui项目需要显示多级菜单,菜单配置到数据库中,因此每级菜单都需要到数据库中取,用了jQuery EasyUI方便多了. 效果体验:http://hovertree.com/texi ...
- 把NetDimension.NanUI项目从C#6.0语法还原到C#5.0
前言 找Cef资料时看到一个比较好的封装NanUI for Winform发布,让Winform界面设计拥有无限可能,下载代码后发现是Vs2015+C#6.0开发的,本机没有VS2015也不想安装.于 ...
- php设置手机访问浏览器版apache配置
我们开发项目的时候经常会开发到浏览器版本的网页,这样我们就经常需要用手机连接局域网以方便测试,那么怎么配置服务器文件呢. 1.首先关闭电脑的windows防火墙 右击我的网络/windows防火墙 ...
- [翻译]用 Puppet 搭建易管理的服务器基础架构(1)
我通过伯乐在线翻译了一个Puppet简明教程,一共分为四部分,这是第一部分. 原文地址:http://blog.jobbole.com/87679/ 本文由 伯乐在线 - Wing 翻译,黄利民 校稿 ...
- [ASP.NET MVC] ASP.NET Identity登入技术应用
[ASP.NET MVC] ASP.NET Identity登入技术应用 情景 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.在ASP.NET I ...