Java实现串口通信

article/2025/10/6 19:08:52

串口通信原理

串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。 尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

windows 查询本地串口

鼠标右键此电脑点击管理菜单,点击设备管理器,找到本地COM端口,我电脑上是COM4端口
在这里插入图片描述

windows 环境配置RXTXcomm.jar

资源下载(win64位 链接:https://pan.baidu.com/s/1_t0lLIxgz0Rwkk5oQClj_w 提取码:tv5q)
复制rxtxParallel.dll,rxtxSerial.dll这两个文件到 JAVA_HOME\jre\bin目录下,复制RXTXcomm.jar文件到
JAVA_HOME\jre\lib\ext目录下

idea项目添加RXTXcomm.jar包

打开 File -> Project Structure
在这里插入图片描述

打开SDKs,点击+号,添加本地RXTXcomm.jar包
在这里插入图片描述
找到上面复制的RXTXcomm.jar包
在这里插入图片描述

代码示例

import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;/*** TODO** @author linfeng* @date 2022/4/24 14:57*/
public class SerialPortManager {private static String portName = "COM4"; //本地COM口private static CommPortIdentifier commPortIdentifier;private static SerialPort serialPort;private static OutputStream out;private static InputStream in;private static int baud = 9600;public static void main(String[] args) throws Exception {//打开串口commPortIdentifier = CommPortIdentifier.getPortIdentifier(portName);serialPort = (SerialPort) commPortIdentifier.open(portName,2000);// 注册一个SerialPortEventListener事件来监听串口事件serialPort.addEventListener(new SerialPortListener());// 数据可用则触发事件serialPort.notifyOnDataAvailable(true);// 打开输入输出流in = serialPort.getInputStream();// 设置串口参数,波特率9600,8位数据位,1位停止位,无奇偶校验serialPort.setSerialPortParams(baud, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);System.out.println("打开串口成功");}public static class SerialPortListener implements SerialPortEventListener{@Overridepublic void serialEvent(SerialPortEvent serialPortEvent) {switch (serialPortEvent.getEventType()) {case SerialPortEvent.DATA_AVAILABLE://Data available at the serial port,端口有可用数据。读到缓冲数组,输出到终端System.out.println("端口有可用数据");try {if (in != null) {//缓冲区可自己修改byte[] cache = new byte[12];int availableBytes = 0;availableBytes = in.available();while (availableBytes > 0) {in.read(cache);String[] data = bytes2HexString(cache).split(" ");System.out.println(bytes2HexString(cache));}}}catch (Exception e) {e.printStackTrace();}break;case SerialPortEvent.BI://Break interrupt,通讯中断System.out.println("通讯中断");break;case SerialPortEvent.OE://Overrun error,溢位错误System.out.println("溢位错误");break;case SerialPortEvent.FE://Framing error,传帧错误System.out.println("传帧错误");break;case SerialPortEvent.PE://Parity error,校验错误System.out.println("校验错误");break;case SerialPortEvent.CD://Carrier detect,载波检测System.out.println("载波检测");break;case SerialPortEvent.CTS://Clear to send,清除发送System.out.println("清除发送");break;case SerialPortEvent.DSR:// Data set ready,数据设备就绪System.out.println("数据设备就绪");break;case SerialPortEvent.RI://Ring indicator,响铃指示System.out.println("响铃指示");break;case SerialPortEvent.OUTPUT_BUFFER_EMPTY:// Output buffer is empty,输出缓冲区清空System.err.println("监听端口出现了异常");break;}}}/** 字节数组转16进制字符串*/public static String bytes2HexString(byte[] b) {String r = "";for (int i = 0; i < b.length; i++) {String hex = Integer.toHexString(b[i] & 0xFF);if (hex.length() == 1) {hex = '0' + hex;}r += hex.toUpperCase()+" ";}return r;}/*** 获取系统com端口* @return*/public static String getSystemSerialPort(){Enumeration<CommPortIdentifier> portList = CommPortIdentifier.getPortIdentifiers();String portName ="";while (portList.hasMoreElements()) {portName = portList.nextElement().getName();System.out.println(portName);}return portName;}
}                

串口调式工具

链接:https://pan.baidu.com/s/1CsZrcrmOi_YB78N38mfGtA 提取码:p9rf。这可以调试本地串口收发数据。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/SuUJkykq.shtml

相关文章

使用RXTXcomm进行串口通信

RXTXcomm 串口通信 虚拟串口和串口调试助手的使用 虚拟串口软件&#xff1a;VSPD&#xff0c;https://www.eltima.com/cn/products/vspdxp/ VSPD会自动识别出本台计算上有几个物理串口&#xff0c;例如本机只有一个物理串口COM1。在右侧端口管理的分页中&#xff0c;添加虚拟端…

C#实现串口通信解析

1. 串口硬件信号定义 串口通信&#xff08;Serial Communications&#xff09;是指外设和计算机间通过数据信号线、地线等按位&#xff08;bit&#xff09;进行传输数据的一种通信方式&#xff0c;属于串行通信方式&#xff0c;能够实现远距离通信&#xff0c;长度可达1200米。…

10、STM32的串口(UART)及串口通信原理(内附代码)

一、通信接口介绍 1、处理器与外部设备通信的两种方式&#xff1a; 并行通信 - 传输原理&#xff1a;数据各个位同时传输。 -优点&#xff1a;速度快 -缺点&#xff1a;占用引脚资源多 串行通信 - 传输原理&#xff1a;数据按位顺序传输&#xff0…

串口通信的概念与实现

uart串口通信概念数据结构termios作用与设置串口读写实现 UART串口通信概念 通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter)&#xff0c;通常称作uart&#xff0c;是一种异步收发传输器&#xff0c;uart作为异步串口通信协议的一种&#xff0c;…

java基于RXTXcomm的串口程序

准备工作 首先下载官方提供的jar包和.dll文件&#xff0c;dll文件有两个&#xff0c;一个是rxtxSerial&#xff0c;一个是rxtxParallel&#xff0c;分别表示串口和并口。因为我开发串口&#xff0c;所以把rxtxSerial.dll放到了jdk1.8.0_171/jre/bin和jre1.8.0_171/bin目录下&a…

51单片机串口多机通信的原理与编程实现

51单片机串口多机通信 需要用的的寄存器 (了解的可直接跳到下一节&#xff09; TMOD 定时器/计数器模式控制寄存器TCON 定时器控制寄存器SCON 串口控制寄存器PCON 电源控制位寄存器IE 中断中断使能寄存器 补充说明&#xff0c;TH1 预置值计算&#xff0c;中断源 波特率计算公式…

Java串口通信详解

序言 说到开源&#xff0c;恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识&#xff0c;程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程&#xff0c;商家通过开源软件赚到了钱……&#xff0c;总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺…

Java串口通信(RXTX)

这几天要用到串口通信,而我最会的Java,所以我就去学了一下怎么用Java进行串口通信 用的jar包是RXTX官网:http://rxtx.qbang.org/ 下载地址:http://fizzed.com/oss/rxtx-for-java 下载好Jar包后,首先需要配置,这里我用的Eclipse Window->Preferences->Java->Build …

十一、串口通信的基本原理与应用

通常用&#xff1a;SMOD 0&#xff0c;0xfd 利用51单片机的串行接口与上位机建立传输信道进行数据的收发。采用8位UART模式&#xff0c;即模式1&#xff0c;波特率为9600BPS。数据发送采用查询方式&#xff0c;数据接收采用中断方式。 系统上电初始化之后&#xff0c;单片机向…

【超简单的串口通信的工作原理】

下图是电脑收到单片机经过串口发送的信息&#xff0c; 那么电脑是如何与单片机进行串口通信的呢&#xff1f; 首先&#xff0c;任何一种通信都要包括硬件物理接口和软件通信协议。 串口通信物理接口如下图。单片机通过发送端将数据从左往右一位一位按顺序发送&#xff1b;且在…

串口通信基本原理

目录 串口通信连线&#xff1a; 串口通信时序&#xff1a; 起始位&#xff1a; 数据位&#xff1a; 校验位&#xff1a; 停止位&#xff1a; 总结&#xff1a; 串口通信特点&#xff1a; 基于串口的通讯接口&#xff1a; 串口通信连线&#xff1a; 任何通信都要有信息…

一篇短文让你彻底理解什么是串口通信

1 并行与串行通信 机器的通信方式有两种&#xff0c;分别是并行通信与串行通信。 并行通信&#xff1a;并行通信是指多比特数据同时通过并行线进行传送&#xff0c;这样数据传送速度大大提高&#xff0c;但并行传送的线路长度受到限制&#xff0c;因为长度增加&#xff0c;干…

Java RXTX 实现串口通信

目录 串口&#xff08;通信&#xff09;概述 串口调试助手 RXTX 下载与依赖 Java 开发实战 串口(通信)概述 1、串口通信是指串口按位&#xff08;bit&#xff09;发送和接收字节 2、串口通信可以在使用一根线发送数据的同时用另一根线接收数据 3、串口通信常用的协议包括…

串口通信原理

并行通信是指数据的各个位用多条数据线同时进行传输 优点&#xff1a;传输速度快 缺点&#xff1a;占用引脚资源多 串行通信是将数据分成一位一位的形式在一条传输线上逐个传输 优点&#xff1a;通信线路简单、占用引脚资源少 缺点&#xff1a;传输速度慢 同步通信&#xf…

串口通讯基本原理 【详细】

串口通信的基本知识 本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。 串口通讯&#xff0c;RS232,RS485&#xff0c;停止位&#xff0c;奇校验&#xff0c;偶校验 1 串口通讯 串口通讯(Serial Communication)&#xff0c;是指外设和计算…

串口通信的基本原理详解

目录 串口通信 串口通信的两种基本方式 异步数据的数据发送过程 异步通信的数据接收过程 9针串口&#xff08;DB9&#xff09; TTL与RS232区别 TTL: RS232&#xff1a; 串口通信的数据格式 通讯方式 偶校验与奇校验 停止位 波特率&#xff08;波特率就是每秒钟传输…

串口通信原理详解

串口通信是一种串行异步通信&#xff0c;通信双方以字符帧作为数据传输单位&#xff0c;字符帧按位依次传输&#xff0c;每个位占固定的时间长度。两个字符帧之间的传输时间间隔可以是任意的&#xff0c;即传输完一个字符帧之后&#xff0c;可以间隔任意时间再传输下一个字符帧…

14_串口通信原理

通信方式的两种: 并行通讯: 传输原理:数据各个位同时传输。 优点:速度快 缺点:占用引脚资源多 串行通信: 传输原理:数据按位顺序传输。 优点:占用引脚资源少 缺点:速度相对较慢 串行通信: 按照数据传送方向,分为: 单工:数据传输只支持数据在一个方向上传输。 半双工:…

【Linux】基于美信串行解串器实现UART串口通信

文章目录 前言一、环境介绍二、硬件配置1. MAX967632. MAX96752F 三、串口通信协议1. 帧格式2. 同步帧3. 应答帧4. 包格式&#xff08;包由帧组成&#xff09; 四、内核模块实现 前言 车载项目中串行/解串器是十分常见的外设&#xff0c;目前常用的有两种标准&#xff1a;GMSL…

毫米波雷达图解算法原理(基于TI雷达)

毫米波雷达数据处理原理 前言基础bin文件解读 以下我们取1帧进行操作&#xff1a;对数据矩阵进行操作前的转换——开始计算结果矩阵一维FFT&#xff08;距离&#xff09;二维FFT&#xff08;速度&#xff09;角度维FFT &#xff08;假设利用结果已经获取目标&#xff09;对目标…