JAVA rs232

JAVA rs232 全套资源提供

    • 全套项目资源环境都在我发布的资源里
      • 环境
  • MAVEN 依赖
    • 代码贴出

全套项目资源环境都在我发布的资源里

环境

Configure Virtual Serial Port Driver 模拟串口
友善串口工具调试

MAVEN 依赖

        <dependency><groupId>org.bidib.jbidib.org.qbang.rxtx</groupId><artifactId>rxtxcomm</artifactId><version>2.2</version></dependency>

代码贴出


import com.runyao.vending.exception.CustomException;
import gnu.io.*;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.TooManyListenersException;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;public class RxtxUtil extends Thread implements SerialPortEventListener {private CommPortIdentifier portId; // 串口通信管理类private Enumeration<?> portList; // 有效连接上的端口的枚举private InputStream inputStream; // 从串口来的输入流private OutputStream outputStream;// 向串口输出的流private SerialPort serialPort; // 串口的引用// 堵塞队列用来存放读到的数据private BlockingQueue<String> msgQueue = new LinkedBlockingQueue<String>();public RxtxUtil(String portName, int baudRate) {this.startComPort(portName,baudRate);this.start();}/*** SerialPort EventListene 的方法,持续监听端口上是否有数据流*/@Overridepublic void serialEvent(SerialPortEvent event) {switch (event.getEventType()) {case SerialPortEvent.BI:case SerialPortEvent.OE:case SerialPortEvent.FE:case SerialPortEvent.PE:case SerialPortEvent.CD:case SerialPortEvent.CTS:case SerialPortEvent.DSR:case SerialPortEvent.RI:case SerialPortEvent.OUTPUT_BUFFER_EMPTY:break;case SerialPortEvent.DATA_AVAILABLE:// 当有可用数据时读取数据byte[] readBuffer = new byte[1024];try {int numBytes = -1;while (inputStream.available() > 0) {numBytes = inputStream.read(readBuffer);if (numBytes > 0) {msgQueue.add(new String(readBuffer, "gbk"));readBuffer = new byte[1024];// 重新构造缓冲对象,否则有可能会影响接下来接收的数据}}} catch (IOException e) {e.printStackTrace();}break;}}/*** 通过程序打开串口,设置监听器以及相关的参数** @return 返回1 表示端口打开成功,返回 0表示端口打开失败*/private void startComPort(String portName,int baudRate) {// 通过串口通信管理类获得当前连接上的串口列表portList = CommPortIdentifier.getPortIdentifiers();// 记录是否含有指定串口boolean isExsist = false;while (portList.hasMoreElements()) {// 获取相应串口对象portId = (CommPortIdentifier) portList.nextElement();// 判断端口类型是否为串口if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {// 判断如果COM7串口存在,就打开该串口if (portId.getName().equals(portName)) {isExsist=true;try {// 打开串口,延迟为2毫秒serialPort = (SerialPort) portId.open(portName, 2000);// 设置当前串口的输入输出流inputStream = serialPort.getInputStream();outputStream = serialPort.getOutputStream();// 给当前串口添加一个监听器serialPort.addEventListener(this);// 设置监听器生效,即:当有数据时通知serialPort.notifyOnDataAvailable(true);// 比特率、数据位、停止位、奇偶校验位serialPort.setSerialPortParams(baudRate,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_EVEN);} catch (PortInUseException e) {throw new CustomException("端口被占用");} catch (TooManyListenersException e) {throw new CustomException("监听器过多");} catch (UnsupportedCommOperationException e) {throw new CustomException("不支持的COMM端口操作异常");} catch (IOException e) {throw new CustomException("获取流异常");}}}}// 若不存在该串口则抛出异常if (!isExsist) {throw new CustomException("不存在该串口!");}}/*** 发送信息* @param message*/public void sendMessage(String message) {try {outputStream.write(message.getBytes("gbk"));outputStream.flush();} catch (NullPointerException e) {throw new CustomException("找不到串口。");} catch (IOException e) {throw new CustomException("发送信息到串口时发生IO异常");}}/*** 关闭串口*/public void closeSerialPort() {if (serialPort != null) {serialPort.notifyOnDataAvailable(false);serialPort.removeEventListener();if (inputStream != null) {try {inputStream.close();inputStream = null;} catch (IOException e) {throw new CustomException("关闭输入流时发生IO异常");}}if (outputStream != null) {try {outputStream.close();outputStream = null;} catch (IOException e) {throw new CustomException("关闭输出流时发生IO异常");}}serialPort.close();serialPort = null;}}//处理返回后的消息@Overridepublic void run() {try {System.out.println("--------------任务处理线程运行了--------------");while (true) {// 如果堵塞队列中存在数据就将其输出if (msgQueue.size() > 0) {System.out.println(msgQueue.take());}}} catch (InterruptedException e) {e.printStackTrace();}}}

发送消息

        RxtxUtil com1 = new RxtxUtil("COM1", 9600);com1.sendMessage("aaaa");

串口信息发送工具
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620465.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java输出hello world_java输出Hello World

一、输出“Hello World!” 1、新建一个java项目,点击File->New->Java Project,创建java项目的界面之后,输入项目名称wly,点击finish。 2、创建好java项目之后,鼠标右键项目,选择New->Class,创建一个类,mypackage为包名,Name类名Hello,首字母大写,点击fini…

二,java输出hello

1&#xff0c;创建文件Hello.java 2, 文件里输入 public class Hello{public static void main(String[] args){System.out.print("hello world!");} } 3&#xff0c; javac Hello.java 会生成一个class文件 4&#xff0c; 然后java Hello 注意&#xff1a; 1…

Go语言入门记录:从基础到变量、函数、控制语句、包引用、interface、panic、go协程、Channel、sync下的waitGroup和Once等

程序入口文件的包名必须是main&#xff0c;但主程序文件所在文件夹名称不必须是main&#xff0c;即我们下图hello_world.go在main中&#xff0c;所以感觉package main写顺理成章&#xff0c;但是如果我们把main目录名称改成随便的名字如filename也是可以运行的&#xff0c;所以…

C语言练习5(巩固提升)

C语言练习5 选择题 选择题 1&#xff0c;下面代码的结果是&#xff1a;( ) #include <stdio.h> #include <string.h> int main() {char arr[] { b, i, t };printf("%d\n", strlen(arr));return 0; }A.3 B.4 C.随机值 D.5 &#x1f4af;答案解析&#…

阿里云servless实现身份证智能识别Demo

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 servless实现身份证智能识别。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、如何快速实现阿里云Servless实现身份识别&#xff1f; 1…

观察级水下机器人使用系列之六超短基线(下)

本文主要讲述超短基线的安装校准和应用。 1、安装校准概述 水下声学导航系统标定算法的准确性很大程度上取决于所采集的数据质量、超短基线基阵的几何结构、高效的数值计算算法等方面。Mc Ewen 等在 2005 年发现了对于分立式的超短基线系统&#xff0c;水声传感器与姿态传感器…

附加题——有趣的搜索《我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序》...

链接&#xff1a;链接 学校/专业&#xff1a; 无 作者&#xff1a;钻石之黎明 时间&#xff1a;2008-10-04 19:22:40 链接&#xff1a;链接 学校/专业&#xff1a; 无 转载者&#xff1a;foresee 时间&#xff1a;2008-12-10 11:43:17 链接&#xff1a;链接 学校/专业&#xff…

外包,我也挺知足

今天给大家介绍一位录友&#xff0c;这位录友很特别&#xff0c;看完他的故事&#xff0c;你会感觉自己的起步已经很高了。 他15年上大学用不起智能机。读计算机专业&#xff0c;却买不起电脑。家里去年才通网。找工作的时候不知道要多少工资&#xff0c;让HR看着给就行。入职…

C#---第十九课:不同类型方法的执行顺序(new / virtual / common / override)

本文介绍不同类型的方法&#xff0c;在代码中的执行顺序问题&#xff1a; 构造方法普通方法&#xff08;暂用common代替&#xff09;、虚方法&#xff08;Virtual修饰&#xff09;、New方法&#xff08;new修饰&#xff09;三个优先级相同overide方法&#xff08;会替换virtual…

[Android]JNI的基础知识

目录 1.什么是JNI 2.配置JNI开发环境NDK 3.创建Native C类型的项目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中调用 native-lib.cpp 中实现的本地方法 1.什么是JNI JNI&#xff08;Java Native Interface&#xff09;是一…

vue项目打包后出现页面布局异常、图片显示不出来等问题

通常我们写完vue项目后&#xff0c;会执行 npm run serve 对项目进行打包。执行完后&#xff0c;就在项目的目录中生成dist文件夹。一开始&#xff0c;我以为双击dist文件夹里index.html会把打包后的项目运行起来&#xff0c;结果在浏览器看到的页面布局异常以及许多图片没有加…

word无法显示图像计算机可能没有足够的,Word图片显示不出来怎么办 Word图片显空白的解决办法-电脑教程...

最近百事网小编钢琴下的旋律发来了一些Word投稿文档&#xff0c;不过奇怪的是Word里边的很多图片都显示不出来&#xff0c;原先以为可能是图片过多&#xff0c;可能一下子没载入完&#xff0c;不过等待很长一段时间后&#xff0c;很多Word里边的图片依旧显示不出现&#xff0c;…

java 选择图片 显示不出来的_java图片显示不出来怎么办

java图片显示不出来怎么办&#xff1f; 解决javaweb项目使用Tomcat服务在网页中的某些页面中的图片无法显示问题。 最近写了一个web项目&#xff0c;但在浏览器中测试&#xff0c;发现某些页面中的图片无法显示。 推荐教程&#xff1a;《java学习》 原因是在加载页面时一些img标…

html显示网上图片不显示不出来,网页图片显示不出来,教您网页不显示图片怎么办...

在使用电脑浏览网页的时候是不是有碰到过网页不显示图片的时候&#xff1f;可能因为是网速慢&#xff0c;所以造成加载图片失败;当然也有其他的原因&#xff0c;像有些地方设置错误的话也会导致网页图片显示不出来的。下面&#xff0c;小编跟大伙一同探讨一下网页不显示图片的解…

java界面怎么加图片不显示不出来_java图片显示不出来怎么办,

详细内容 java图片显示不出来怎么办&#xff1f; 解决javaweb项目使用Tomcat服务在网页中的某些页面中的图片无法显示问题。 最近写了一个web项目&#xff0c;但在浏览器中测试&#xff0c;发现某些页面中的图片无法显示。 推荐教程&#xff1a;《java学习》 原因是在加载页面时…

html背景图片为什么找不到,css中背景图片显示不出来

css中背景图片显示不出来 css添加背景图片无法显示&#xff0c;有以下几方面原因&#xff1a; 1、css没有被调用&#xff1b;请检查css调用是否成功。 2、css图片地址不对&#xff1b;请检查css图片地址是否正确。 3、div的高度没有固定&#xff0c;是auto或者没有设值&#xf…

python中html图片显示不出来,jupyter notebook中图片显示不出来的解决

报错&#xff1a; d:\program files\anaconda3\lib\site-packages\matplotlib\figure.py:445: userwarning: matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-gui backend, so...... 解决方法&#xff1a; import matplotlib matplotl…

图片路径带有blob的图片显示不出来

做项目写个人信息页面时&#xff0c;后端返回的数据中&#xff0c;图片的路径带有blob&#xff08;如下图&#xff09; 前端展示的时候渲染不出来&#xff0c;重新上传后&#xff0c;图片正常&#xff0c;但是刷新后还是不显示。图片上传用的element ui的图片上传组件&#xff…

解决上传 Gitee 后图片显示不出来

上传后图片总是显示不出来&#xff0c;例如 可以直接把路径替换成 Gitee 项目上传后的网络路径 点开上传 Gitee 后的图片所在的路径&#xff0c;随便点开一张图片&#xff0c;点击原始数据 点开后图片所在路径如下 在然后直接全部替换图片的文件夹路径 替换的时候替换 图片…