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++代码串口通讯原理关于校验 ...
随机推荐
- Androide SQLiteDatabase数据库操作(转)
SQLite可以解析大部分的标准SQL语句:建表语句:create table 表名(主键名 integer primary key autoincrement(设置为自增列),其他列名及属性)或(主 ...
- Mybatis-mapper-xml-基础
今天学习http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html.关于mapper.xml的sql语句的使用. 项目路径:https://github.c ...
- 写出好的 commit message
为何要关注提交信息 加快Reviewing Code的过程 帮助我们写好release note 5年后帮你快速想起来某个分支,tag或者 commit增加了什么功能,改变了哪些代码 让其他的开发者在 ...
- 引用Microsoft.Office.Interop.Excel出现的问题
引用Microsoft.Office.Interop.Excel出现的问题 转自:http://www.hccar.com/Content,2008,6,11,75.aspx,作者:方继祥 操作背 ...
- EC笔记,第二部分:7.为多态基类声明虚析构函数
7.为多态基类声明虚析构函数 1.为多态基类声明虚析构函数 code1: class A{ public: int* a; A():a(new int(5)) {} ~A(){ delete a; } ...
- spring aop配置出错
Multiple annotations found at this line: - schema_reference.4: Failed to read schema document 'http: ...
- [moka同学笔记]Linux命令基本格式及目录处理命令
命令提示符 [root@localhost ~]# root:当前登录用户localhost:主机名~:当前所在的目录,此处为"家"目录#:root超级用户的提示符,如果是普通用户 ...
- Jquery使用小技巧
1. 禁止右键使用 view plaincopy to clipboardprint? 1. $(document).ready(function(){ 2. $(do ...
- CSS3文本溢出显示省略号
CCS3属性之text-overflow:ellipsis;的用法和注意之处 语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象 ...
- php每天一题:怎么在不使用第三个变量的情况下交换两个变量的值
$a = 'php'; $b = 'my'; list($a,$b) = array($b,$a); echo $a,$b; 很简单,大家试一下是不是交换了!