1、下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java

2、下载下来的包解压后按照说明放到JAVA_HOME即JAVA的安装路径下面去

3、在maven的pom.xml下添加

    <dependency>
    <groupId>org.rxtx</groupId>
    <artifactId>rxtx</artifactId>
    <version>2.1.7</version>
  </dependency>

4、串口API

  CommPort:端口的抽象类
  CommPortIdentifier:对串口访问和控制的核心类
  SerialPort:通过它可以直接对串口进行读、写及设置工作

5、列出本机可用端口

Enumeration<CommPortIdentifier> em = CommPortIdentifier.getPortIdentifiers();
  while (em.hasMoreElements()) {
    String name = em.nextElement().getName();
    System.out.println(name);
  }

6、一般步骤:打开串口得到串口对象==》设置参数==》对串口进行读写==》关闭串口,其中对串口进行读操作比较常用

//打开串口
  CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM4");//COM4是串口名字
  CommPort commPort = portIdentifier.open("COM4", 2000); //2000是打开超时时间
  serialPort = (SerialPort) commPort;
  //设置参数(包括波特率,输入/输出流控制,数据位数,停止位和齐偶校验)
  serialPort.setSerialPortParams(9600,
  SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
  SerialPort.PARITY_NONE);
  //监听串口事件
  serialPort.addEventListener(new Abc()); //Abc是实现SerialPortEventListener接口的类,具体读操作在里面进行
  // 设置当有数据到达时唤醒监听接收线程
  serialPort.notifyOnDataAvailable(true);
  // 设置当通信中断时唤醒中断线程
  serialPort.notifyOnBreakInterrupt(true);
  // in.close(); //关闭串口

Abc类内容,即读串口的具体操作:

public class Abc implements SerialPortEventListener {
public void serialEvent(SerialPortEvent arg0) {
// TODO Auto-generated method stub
//对以下内容进行判断并操作
/*
BI -通讯中断
  CD -载波检测
  CTS -清除发送
  DATA_AVAILABLE -有数据到达
  DSR -数据设备准备好
  FE -帧错误
  OE -溢位错误
  OUTPUT_BUFFER_EMPTY -输出缓冲区已清空
  PE -奇偶校验错
RI - 振铃指示
*/
//switch多个,if单个
if (arg0.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
InputStream in = null;
byte[] bytes = null;
in = App.serialPort.getInputStream(); int bufflenth = in.available();
while (bufflenth != 0) {
// 初始化byte数组为buffer中数据的长度
bytes = new byte[bufflenth];
in.read(bytes);
System.out.println(new String(bytes));
bufflenth = in.available();
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

写操作:

OutputStream out = serialPort.getOutputStream();
out.write(data); //byte[] data;
out.flush();

7、打开关闭串口等动作要有触发,异常要处理。—wxws

java 串口通信实现流程的更多相关文章

  1. java串口通信丢包

    java串口通信丢包问题 前段时间公司要求做一个java应用和pos串口通信的工具,调试好了好久每次都是只能接收到一包数据后续的数据都丢失了. 经过修改读写的流的缓存大小亲测都正常代码如下: seri ...

  2. Java 串口通信

    在Windows系统下,用Java开发串口通信相关的程序时,需要用到几个文件. (1)win32com.dll 要放在jdk\jre\bin目录下. (2)comm.jar 和javax.comm.p ...

  3. java 串口通信 代码

    下面是我自己实现的串口接收的类,串口发送比较简单,就直接发送就可以了.下面的这个类可以直接使用. package com.boomdts.weather_monitor.util; import ja ...

  4. Java串口通信具体解释

    序言 说到开源,恐怕非常少有人不挑大指称赞.学生通过开源码学到了知识,程序猿通过开源类库获得了别人的成功经验及可以按时完毕手头的project,商家通过开源软件赚到了钱……,总之是皆大欢喜.然而开源软 ...

  5. Java串口通信详细解释

    前言 说到开源.恐怕非常少有人不挑大指称赞. 学生通过开源码学到了知识,程序猿通过开源类库获得了别人的成功经验及可以按时完毕手头的project,商家通过开源软件赚到了钱……,总之是皆大欢喜. 然而开 ...

  6. Java串口通信--------基于RXTX (附带资源地址)

    最近帮老师做了一个小项目,一个牧场公司想用传感器收集一些环境信息,记录到数据库里去,然后加以分析查看.这里面和传感器通信用到了串口通信,我也是接触了一下,把用到的东西分享出来. 准备工作: RXTX: ...

  7. Java串口通信 RXTX 解决过程

    背景介绍: 由于第一次用Java与硬件通信,网上查了许多资料,在这进行整理,便于以后学习.本人串口测试是USB串口设备连接电脑,在设备管理器中找到端口名称(也可以通过一些虚拟串口工具模拟). 下面主要 ...

  8. Java 串口通信 Ubuntu

    说一下我的操作过程吧 在Windows上先用阿猫串口网络调试助手,进行调试: 在网上找Java代码,我选择的是RXTXcomm,网上代码很多,基本都一样. 在Windows电脑上把rxtx压缩包中的r ...

  9. 【Java】基于RXTX的Java串口通信

    本篇内容参考转载自https://blog.csdn.net/kong_gu_you_lan/article/details/80589859 环境搭建 下载地址:http://fizzed.com/ ...

随机推荐

  1. oracle 导入sql文件乱码

    查看  http://blog.csdn.net/fireofjava/article/details/53980966

  2. SAS笔记(3) LAG和DIFF函数

    在实际的应用中,我们会想查看当前观测的上一个观测值,在上一篇博客中我们使用了RETAIN语句来记录上一条观测,其实SAS还提供了一个很好用的函数LAG.当我们使用函数时,一定要明确该函数的返回值是什么 ...

  3. 洛谷P1024 一元三次方程求解

    P1024 一元三次方程求解 题目描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-10 ...

  4. bzoj2724: [Violet 6]蒲公英(分块)

    传送门 md调了一个晚上最后发现竟然是空间开小了……明明算出来够的…… 讲真其实我以前不太瞧得起分块,觉得这种基于暴力的数据结构一点美感都没有.然而今天做了这道分块的题才发现分块的暴力之美(如果我空间 ...

  5. bzoj2502: 清理雪道(有源汇有上下界最小流)

    传送门 别说话,自己看,我不会->这里 我这里用的建图方法是先跑一次最大流,连上$(t,s,inf)$之后再跑一遍,然后答案就是之前连的那条边的反向边的流量 据说还有种方法是连上$(t,s,in ...

  6. WampServer的安装

    首先安装好Microsoft Visual C++ 然后再安装WampServer 安装过程很简单 错误解决 运行后为黄色图标(成功运行应该为绿色图标) 解决办法: 1.80端口是否被占用 你的80端 ...

  7. JDK动态代理和cglib代理

    写一个简单的测试用例,Pig实现了Shout接口 public class MyInvocation implements InvocationHandler { Object k; public M ...

  8. 历年NOIP真题总结

    前言:最近把历年的NOIP真题肝了一遍(还有3个紫题先咕掉了),主要是到1998年的提高组的题.把题目的做题简要思路搁在这儿,一个是为了考前翻一翻,想想自己的哪些思路要梳理的什么什么的,反正怎么说呢, ...

  9. LeetCode 233 Number of Digit One 某一范围内的整数包含1的数量

    Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...

  10. windows cmd 透明化

    1 . 属性 -- 颜色 --不透明度 2 . 快捷键 : Ctrl+Shift+加号/减号 3. cmd 下快速查找文件 : dir a.txt /S