此文章是基于   搭建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. 【LeetCode】Increasing Triplet Subsequence(334)

    1. Description Given an unsorted array return whether an increasing subsequence of length 3 exists o ...

  2. CQRS, Task Based UIs, Event Sourcing agh!

    原文地址:CQRS, Task Based UIs, Event Sourcing agh! Many people have been getting confused over what CQRS ...

  3. QT 中 关键字讲解(emit,signal,slot)

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

  4. WPF模板

    WPF的中模板有三种:ControlTemplate.ItemsPanelTemplate.DataTemplate,他们继承抽象类FrameworkTemplate,下面是它们的继承关系: Wind ...

  5. web api中的RouteHandler

    ASP.NET MVC4中引入的Web API可以说是进行REST软件开发的利器(个人意见),但是最近在web form中混入web api时,发现一个问题:由于以前的web form项目中,使用到了 ...

  6. DOM官方定义

    DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容.结构.样式. DOM ...

  7. [教学] Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试

    Delphi Berlin 10.1 开发 Windows 10 平板 App 远程调试安装步骤: 准备电脑: 一台开发电脑,安装 Delphi 开发环境 一台平板电脑,安装 PAServer,安装方 ...

  8. 3、Python字符串和循环

    1.while循环 #猜lucky_number = 6 #如果比6大,提示你猜的大了 #如果比6小,提示你猜的小了 #猜的等于6,提示Bingo #限制3次 lucky_num = 6 count ...

  9. Java04

      0.面向对象(Object Oriented:OO):     0.OOA(面向对象分析) OOD(面向对象的设计) OOP(面向对象编程)     1.是软件开发方法     2.扩展的领域:数 ...

  10. gSOAP MTOM

    前言 需要准备的知识:wsdl,soap,gSOAP,C++,fidder. 首先介绍几个相关的概念 1.MTOM基础概念      MTOM(Message Transmission Optimiz ...