通过JAVA与串口(RS232)通信实例
通过JAVA与串口(RS232)通信实例
- 博客分类:
- J2SE
这里使用的是RXTX开源包实现的。
之前并没有用java做过串口通信,而且这方面资料不是很多。
项目实际应用中可能会采用VB开发(这个我就不会了)
只不过用java尝试一下,记个笔记,希望可以对相关开发用些帮助。
下面是实现代码
- package test;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.util.Date;
- import java.util.Enumeration;
- import java.util.TooManyListenersException;
- import gnu.io.CommPortIdentifier;
- import gnu.io.PortInUseException;
- import gnu.io.SerialPort;
- import gnu.io.SerialPortEvent;
- import gnu.io.SerialPortEventListener;
- import gnu.io.UnsupportedCommOperationException;
- public class CommUtil implements SerialPortEventListener {
- InputStream inputStream; // 从串口来的输入流
- OutputStream outputStream;// 向串口输出的流
- SerialPort serialPort; // 串口的引用
- CommPortIdentifier portId;
- public CommUtil(Enumeration portList, String name) {
- while (portList.hasMoreElements()) {
- CommPortIdentifier temp = (CommPortIdentifier) portList.nextElement();
- if (temp.getPortType() == CommPortIdentifier.PORT_SERIAL) {// 判断如果端口类型是串口
- if (temp.getName().equals(name)) { // 判断如果端口已经启动就连接
- portId = temp;
- }
- }
- }
- try {
- serialPort = (SerialPort) portId.open("My"+name, 2000);
- } catch (PortInUseException e) {
- }
- try {
- inputStream = serialPort.getInputStream();
- outputStream = serialPort.getOutputStream();
- } catch (IOException e) {
- }
- try {
- serialPort.addEventListener(this); // 给当前串口天加一个监听器
- } catch (TooManyListenersException e) {
- }
- serialPort.notifyOnDataAvailable(true); // 当有数据时通知
- try {
- serialPort.setSerialPortParams(2400, SerialPort.DATABITS_8, // 设置串口读写参数
- SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
- } catch (UnsupportedCommOperationException e) {
- }
- }
- public 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[20];
- try {
- while (inputStream.available() > 0) {
- System.out.println(inputStream.available());
- int numBytes = inputStream.read(readBuffer);
- System.out.println(numBytes);
- }
- System.out.println(new String(readBuffer).trim());
- } catch (IOException e) {
- e.printStackTrace();
- }
- break;
- }
- }
- public void send(String content){
- try {
- outputStream.write(content.getBytes());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public void ClosePort() {
- if (serialPort != null) {
- serialPort.close();
- }
- }
- }
测试
- package test;
- import gnu.io.CommPortIdentifier;
- import java.util.Enumeration;
- public class Test {
- public static void main(String[] args) throws InterruptedException {
- Enumeration portList = CommPortIdentifier.getPortIdentifiers(); //得到当前连接上的端口
- CommUtil comm3 = new CommUtil(portList,"COM3");
- int i = 0;
- while(i<5)
- {
- Thread.sleep(3000);
- comm3.send("hello");
- i++;
- }
- comm3.ClosePort();
- }
- }
- rxtx-2.1-7-bins-r2.zip (596 KB)
通过JAVA与串口(RS232)通信实例相关推荐
- java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...
本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...
- java 蓝牙读取数据格式,单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例...
原标题:单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例 JSON 指的是 Java 对象表示法(Java Object Notation),JSON 是轻量级的文本数据交换格式,JSON ...
- Android串口通信实例分析【附源码】
Android 串口通信实例分析,用的时开源的android-serialport-api 这个是用android ndk实现的串口通信,我把他做了一个简化,适合于一般的程序的串口通信移植,欢迎拍砖- ...
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- 基于java的串口通讯(附带实例+说明文档+测试工具)
在步入正题前,发个牢骚. 前天总公司的一个技术经理下达一个任务,实现java程序与串口的通信.半天做出来了(见附件),经理看了,在电话里说是直接从网上下载的,颇为不屑. 说实话,当时真TM火大!虽然现 ...
- java linux 串口_Linux Java 串口通信 | 学步园
费了好大的劲搞定Linux系统上用Java写串口通信的问题. jdk中没有原生的串口api,网上找了半天的资料,大概知道了:Linux系统上用Java写串口程序,有两个包比较常用,一个是当年sun官方 ...
- Java实现串口通信的小样例
用Java实现串口通信(windows系统下),须要用到sun提供的串口包 javacomm20-win32.zip.当中要用到三个文件,配置例如以下: 1.comm.jar放置到 JAVA_HOME ...
- java socket发送定长报文_一个基于TCP协议的Socket通信实例
原标题:一个基于TCP协议的Socket通信实例 1. 前言 一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度.正好前段时间完成了一个so ...
- Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)
获取 URL响应头的日期信息 以下实例演示了如何使用 HttpURLConnection 的 httpCon.getDate() 方法来获取 URL响应头的日期信息: import java.net. ...
最新文章
- iphone:UISplitView
- lamp wordpress
- matlab电话拨号音的合成与识别代码,实验报告 电话拨号音的合成与识别
- 单链表按顺序插入节点
- 计算机网络基础必备(三次握手,四次握手,以及HTTP协议相关)
- 电线之间:采访Microsoft Edge性能PM Nolan Lawson
- java虚拟机工作原理_Java虚拟机工作原理具体解释
- Spring Boot 集成 Ehcache 缓存,三步搞定!
- JAVA毕设项目vue架构云餐厅美食订餐系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
- 【DJ-ZBS2 DH-70L两档切换漏电继电器】
- XML 教程(一文彻底搞懂XML)
- Linux内核ncsi驱动源码分析(二)
- 罗马数字转化为阿拉伯数字
- 阿里 P6 到底应该具备哪些核心能力?
- IDEA重置配置设定
- GTX1060安装gpu版tensorflow经验分享
- Python-随机生成20位数字
- 赛门铁克Symantec SSL证书产品及服务
- poi画饼图、折线图等图表和设置颜色字体等
- [单片机框架] [kv_sys] 实现一个简易KV键值系统(升级版)