Debian 8 x86_64 Java 使用 NRSerialPort 开发串口通信
来源:互联网 发布:linux route 修改 编辑:程序博客网 时间:2024/06/13 22:29
使用方法: https://github.com/NeuronRobotics/nrjavaserial
下载: https://oss.sonatype.org/#nexus-search;gav~com.neuronrobotics~nrjavaserial~~~
测试代码
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.TooManyListenersException;import gnu.io.NRSerialPort;import gnu.io.SerialPortEvent;import gnu.io.SerialPortEventListener;public class NRJavaSerialDemo { void connect(String port) { for (String s : NRSerialPort.getAvailableSerialPorts()) { System.out.println("Availible port: " + s); } int baudRate = 115200; NRSerialPort serialPort = new NRSerialPort(port, baudRate); serialPort.connect(); DataInputStream inStream = new DataInputStream(serialPort.getInputStream()); DataOutputStream outStream = new DataOutputStream(serialPort.getOutputStream()); new Thread(new SerialWriter(outStream)).start(); try { serialPort.addEventListener(new SerialReader(inStream)); serialPort.notifyOnDataAvailable(true); } catch (TooManyListenersException e1) { e1.printStackTrace(); } try { String testData = "ATD139xxxxxxxx;\n"; outStream.write(testData.getBytes()); } catch (IOException e) { e.printStackTrace(); } } public static class SerialReader implements SerialPortEventListener { private DataInputStream inStream; private byte[] buffer = new byte[1024]; public SerialReader(DataInputStream inStream) { this.inStream = inStream; } public void serialEvent(SerialPortEvent arg0) { int data; int len = 0; try { while ((data = inStream.read()) > -1) buffer[len++] = (byte) data; System.out.println(new String(buffer, 0, len)); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } public static class SerialWriter implements Runnable { private DataOutputStream outStream; public SerialWriter(DataOutputStream outStream) { this.outStream = outStream; } public void run() { int c = 0; try { while ((c = System.in.read()) > -1) this.outStream.write(c); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { try { new NRJavaSerialDemo().connect("/dev/ttyUSB0"); } catch (Exception e) { e.printStackTrace(); } }}
说明
使用 DataInputstream 不要使用 InputStream, InputStream 会接收不到数据
测试代码除使用 NRSerialPort类 代替 RXTX 的 SerialPort类, 其他部分和 RXTX 案例一样
NRSerialPort 不需要 RXTX 的两个 so文件, 可以直接使用
RXTX 案例: http://rxtx.qbang.org/wiki/index.php/Examples
0 0
- Debian 8 x86_64 Java 使用 NRSerialPort 开发串口通信
- java串口通信开发笔记
- 使用Java实现串口通信
- 使用Java实现串口通信
- 使用Java实现串口通信
- 使用java实现串口通信
- 使用Java实现串口通信
- 使用Java实现串口通信
- 如何使用CnComm开发串口通信程序
- 如何使用CnComm开发串口通信程序
- 如何使用CnComm开发串口通信程序
- 使用Java实现简单串口通信
- 使用Java实现简单串口通信
- 使用Java实现简单串口通信
- 使用Java实现简单串口通信
- 使用Java实现简单串口通信
- 使用java基于RXTX实现串口通信
- Lazarus开发串口通信
- Nginx基本配置讲解
- ViewDragHelper使用模板
- Java概述
- Ultraedit Mac(文本编辑器)V15.1.0.1 最新中文破解版
- Hello World
- Debian 8 x86_64 Java 使用 NRSerialPort 开发串口通信
- Apache HTTP Server 2.2.31在Windows下安装和简单配置
- Linux curl命令学习
- Git整理与秘技
- MTK串口通信调试
- Servlet实现文件上传
- 浏览器打开pdf乱码
- 关于IOS UINavigationBar 界面切换颜色变换的问题
- 用freeDiameter封装Diameter消息