此文章是基于   搭建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实现串口通讯的更多相关文章

  1. java SerialPort串口通讯的使用

    api文档 http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html ma ...

  2. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  3. 使用Java进行串口SerialPort通讯

    1.准备工作        在进行串口连接通讯前,必须保证你当前操作电脑上有可用且闲置的串口.因为一般的电脑上只有一个或者两个串口,如COM1或COM2,但大多数情况下,这些串口可能会被其他的程序或者 ...

  4. 简单的Java串口通讯应答示例

    java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...

  5. java web下串口通讯

       最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示   ...

  6. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  7. Android串口通讯

    今天在整一个项目,需要利用串口通讯在网上看了好多人的帖子才稍微整出了一点头绪. 首先串口代码就是利用谷歌自己的api,将java代码放在java/android_serialport_api目录下,如 ...

  8. 使用Xamarin实现串口通讯

    前几天我写了年度总结,然后有人说让我教一下他Xamarin串口通讯怎么做,其实跟java没有多大区别. 记得我刚开始接到公司这个项目的时候很懵逼,我去看了别的安卓串口工具,都不行我当时是RS232串口 ...

  9. Android Studio的串口通讯开发

    基于android-serialport-api实现 前言RS232标准接口UARTRS232与UART转接下载 NDK 和构建工具创建支持 C/C++ 的新项目编译C/C++代码串口通讯原理关于校验 ...

随机推荐

  1. WebSocket 介绍(二)-WebSocket API

    这一章介绍如何用WebSocket API来控制协议和创建应用,运用http://websocket.org 提供的现有WebSocket服务器,我们可以收发消息.创建一些简单的WebSocket应用 ...

  2. 使用idea debug多线程

    最近采用hystrix远程访问webservice, 遇到一个重定向303的exception,想要debug一下,发现打了断点后总是被跳过.想到hystrix异步线程的问题,于是想要debug就得支 ...

  3. MongoDB - basic

    mongoDB basic from:http://www.tutorialspoint.com/mongodb prject:https://github.com/chenxing12/l4mong ...

  4. react入门(1)

    这篇文章也不能算教程咯,就算是自己学习整理的笔记把. 关于react一些相关的简介.优势之类的,随便百度一下一大堆,我就不多说了,可以去官网(http://reactjs.cn/)看一下. 这片主要讲 ...

  5. 分享一个UI与业务逻辑分层的框架(二)

    序言 第一篇讲解了UI与业务逻辑分层的框架(UIMediator)的使用.本篇将说明该框架的原理及代码实现. 整体结构 UI与后台类绑定主要分为UI输入->后台属性,后台属性-UI更新两部分,为 ...

  6. 数据结构(C语言第2版)-----数组,广义表,树,图

    任何一个算法的设计取决于选定的数据结构,而算法的实现依赖于采用的存储结构. 之前线性表的数据元素都是非结构的原子类型,元素的值是不可再分的.下面学习的这两个线性表是很特殊的,其中数据元素本身也可能是一 ...

  7. 比较牛X的互联网公司都有哪些作死的行为

    以下为近乎家的小近吐血整理: 1流氓行为 臭表碾说的就是你们!   百度 还有这种伪造网页弹窗: 360 不经同意,也不弹窗提醒,直接给我们安装推广软件.比较典型的是 腾讯 腾讯一直走在行业最前端,买 ...

  8. 一个简单的MVC实例及故障排除

    Controller: public ActionResult Index() { string setting = "ApplicationServices"; var conn ...

  9. 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue

    [源码下载] 背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue 作者:weba ...

  10. Python默认版本修改

    Python默认版本修改 当电脑安装了多个版本的Python,而Shell中默认的Python不是你想要的,这个时候就需要对Python的默认版本进行修改. 在Windows中,可以通过修改环境变量的 ...