java串口监听,讲的太清楚了

Netty实战

无论是想要学习Spring 5 、Spark、Cassandra等这样的系统,还是通过学习Netty来构建自己的基于Java的高性能网络框架,或者是更加具体的高性能Web或者游戏服务器等,本书都将是你的超强拍档。

本书共分为4个部分:

  • 第一部分详细地介绍Netty的相关概念以及核心组件
  • 第二部分介绍自定义协议经常用到的编解码器
  • 第三部分介绍Netty对于应用层高级协议的支持,会覆盖常见的协议及其在实践中的应用
  • 第四部分是几个案例研究。

RabbitMQ实战指南文档

《RabbitMQ实战指南》从消息中间件的概念和RabbitMQ的历史切入,主要阐述RabbitMQ的安装、使用、配置、管理、运维、原理、扩展等方面的细节。《RabbitMQ实战指南》大致可以分为基础篇、进阶篇和高阶篇三个部分。

  • 基础篇首先介绍RabbitMQ的基本安装及使用方式,方便零基础的读者以最舒适的方式融入到RabbitMQ之中。
  • 其次介绍RabbitMQ的基本概念,包括生产者、消费者、交换器、队列、绑定等。
  • 之后通过Java语言讲述了客户端如何与RabbitMQ建立(关闭)连接、声明(删除)交换器、队列、绑定关系,以及如何发送和消费消息等。
  • 进阶篇讲述RabbitMQ的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java监听串口可以使用Java Comm API。下面是一个简单的示例代码,演示如何使用Java Comm API在多线程中监听串口: ```java import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.Enumeration; public class SerialCommunication implements Runnable, SerialPortEventListener { private static final int TIME_OUT = 2000; //等待超时时间 private static final int BAUD_RATE = 9600; //波特率 private CommPortIdentifier portId; private SerialPort serialPort; private BufferedReader input; private OutputStream output; private boolean isRunning = false; public static void main(String[] args) { SerialCommunication communication = new SerialCommunication(); communication.start(); } public void start() { Thread thread = new Thread(this); thread.start(); } public void run() { try { //获取串口ID Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); while (portEnum.hasMoreElements()) { CommPortIdentifier currentPortId = (CommPortIdentifier) portEnum.nextElement(); if (currentPortId.getPortType() == CommPortIdentifier.PORT_SERIAL) { portId = currentPortId; break; } } if (portId == null) { System.out.println("没有发现串口"); return; } //打开串口并设置参数 serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT); serialPort.setSerialPortParams(BAUD_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); //获取输入输出流 input = new BufferedReader(new InputStreamReader(serialPort.getInputStream())); output = serialPort.getOutputStream(); //添加串口事件监听器 serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); System.out.println("串口已打开,开始监听..."); isRunning = true; while (isRunning) { Thread.sleep(1000); } //关闭串口 serialPort.removeEventListener(); serialPort.close(); input.close(); output.close(); System.out.println("串口已关闭"); } catch (Exception ex) { System.out.println("打开串口失败:" + ex.getMessage()); } } public void stop() { isRunning = false; } public void serialEvent(SerialPortEvent event) { if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { String inputLine = input.readLine(); System.out.println("接收到数据:" + inputLine); } catch (Exception ex) { System.out.println("读取串口数据失败:" + ex.getMessage()); } } } } ``` 该示例代码中,首先使用`CommPortIdentifier`类获取所有串口的ID,然后找到需要监听串口的ID。接着打开串口并设置参数,获取输入输出流,并添加串口事件监听器。在`serialEvent`方法中,可以处理从串口接收到的数据。`start`方法创建一个新的线程,该线程调用`run`方法开始监听串口。`stop`方法可以停止监听。 使用多线程的好处是可以在主线程中执行其他任务,而不会阻塞串口监听。当然,在处理串口数据时也可以使用多线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值