api文档

http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html

maven依赖

<!-- https://mvnrepository.com/artifact/com.fazecast/jSerialComm -->
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<!--<version>2.5.2</version>-->
<version>[2.0.0,3.0.0)</version>
</dependency> 

基于事件的阅读用法示例

可供读取的数据示例

以下示例显示了使用此事件触发器的一种方法:

    SerialPort comPort = SerialPort.getCommPorts()[0];
comPort.openPort();
comPort.addDataListener(new SerialPortDataListener() {
@Override
public int getListeningEvents() { return SerialPort.LISTENING_EVENT_DATA_AVAILABLE; }
@Override
public void serialEvent(SerialPortEvent event)
{
if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE)
return;
byte[] newData = new byte[comPort.bytesAvailable()];
int numRead = comPort.readBytes(newData, newData.length);
System.out.println("Read " + numRead + " bytes.");
} });

非阻塞阅读用法示例

package com.bhu.utils;

import com.fazecast.jSerialComm.SerialPort;

public class SerialComm {

    /*public static void main(String[] args) throws InterruptedException {
SerialComm serialComm = new SerialComm("COM3");
serialComm.openPort();
while (true) {
byte[] bs = serialComm.writeAndRead("010300000002");
Double[] d = Utils.analysisData(bs, 3, 5, 2);
if (d != null) {
for (Double a : d) {
System.out.println(a);
}
} Thread.sleep(1000);
}
}*/ public SerialComm(String portDescriptor) {
this.portDescriptor = portDescriptor;
} public SerialComm(String portDescriptor, Integer baudRate) {
this.portDescriptor = portDescriptor;
this.baudRate = baudRate;
} private String portDescriptor;
private Integer baudRate; private SerialPort comPort; public boolean isOpen() {
return comPort.isOpen();
} /**
* 打开串口
*
* @return 打开的状态
*/
public boolean openPort() {
return openPort(portDescriptor, baudRate);
} /**
* 打开串口
*
* @param portDescriptor COM口
* @return 打开的状态
*/
public boolean openPort(String portDescriptor) {
return openPort(portDescriptor, null);
} /**
* 打开串口
*
* @param portDescriptor COM口
* @param baudRate 波特率
* @return 打开的状态
*/
public boolean openPort(String portDescriptor, Integer baudRate) {
comPort = SerialPort.getCommPort(portDescriptor);
if (baudRate != null) {
comPort.setBaudRate(baudRate);
}
if (!comPort.isOpen()) {
return comPort.openPort();
} else {
return true;
}
} /**
* 关闭串口
*
* @return
*/
public boolean closePort() {
if (comPort != null && comPort.isOpen()) {
return comPort.closePort();
}
return true;
} /**
* 向com口发送数据并且读取数据
*/
public byte[] writeAndRead(String instruct) {
byte[] reslutData = null;
try {
if (!comPort.isOpen()) throw new BhudyException(BhudyExceptionCode.CODE_18); int numWrite = comPort.writeBytes(Utils.getCRC(instruct), Utils.getCRC(instruct).length);
if (numWrite > 0) {
int i = 0;
while (comPort.bytesAvailable() > 0 && i++ < 5) Thread.sleep(20);
byte[] readBuffer = new byte[comPort.bytesAvailable()];
int numRead = comPort.readBytes(readBuffer, readBuffer.length);
if (numRead > 0) {
reslutData = readBuffer;
}
}
} catch (InterruptedException e) {
throw new BhudyException(e.getMessage());
}
return reslutData;
} }

 

java SerialPort串口通讯的使用的更多相关文章

  1. (c#2.0)serialPort串口通讯

    原文:(c#2.0)serialPort串口通讯 using System; using System.Collections.Generic; using System.ComponentModel ...

  2. java实现串口通讯

    一. 准备工作 1. 点击此下载java串口通讯相关工具 2. 将RXTXcomm.jar放到  %JAVA_HOME%\jre\lib\ext\  目录下,工程中引入该jar包 3. 将rxtxSe ...

  3. serialport串口通讯

    在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信 = System.IO.Ports.SerialPort.GetPortNames();获取电脑有哪几个 ...

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

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

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

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

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

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

  7. java web下串口通讯

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

  8. java串口通讯环境配置

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

  9. Android串口通讯

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

随机推荐

  1. 如何获得div对象的绝对坐标

    <script>             function test() {                 var $div0 = $('#0');                 va ...

  2. java新建excel文件导出(HSSFWorkbook)

    public ActionForward exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, ...

  3. wangEditor实现ctrl+v粘贴word图片并上传

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  4. 蓝牙4.0模块,AT指令集

    一,LED状态 二,蓝牙模块有两种通信模式 1,AT指令模式 2,数据透传模式 三.AT指令程序设计 1.设置模块的名字 void usart3_send_str(char *pbuf) { whil ...

  5. luogu 4768

    kruskal 重构树对于一张无向图,我们在进行 kruskal 的过程中每当合并两个联通块时新建虚拟节点 t对于两个联通块的根节点 fau,fav 连无向边(fau, t),(fav, t) 其中点 ...

  6. seq2seq聊天模型(二)——Scheduled Sampling

    使用典型seq2seq模型,得到的结果欠佳,怎么解决 结果欠佳原因在这里 在训练阶段的decoder,是将目标样本["吃","兰州","拉面" ...

  7. 玩转orangpi 之frpc远程管理+pcd8544(nokia5110 屏幕) 显示运行状态

    玩转orangpi 之frpc远程管理+pcd8544(nokia5110 lcd) 显示运行状态. 物件: orangepi一套(电源,网线,orangepiPC)110元 nokia 5110 l ...

  8. 爬虫之python3用execjs执行JS代码

    JS运行环境 Node.js 是Javascript语言服务器端运行环境 安装和配置:https://www.runoob.com/nodejs/nodejs-install-setup.html 测 ...

  9. java试题复盘——9月8日

    上: 1.可将语句块或方法设为同步使用的语句是(A) A synchronized              用于方法或者代码块前,使此方法或者代码变成同步的 B static             ...

  10. Java并发指南5:JMM中的final关键字解析

    本文转载自互联网,侵删   与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问.对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的 ...