Debian 8 x86_64 Java 使用 NRSerialPort 开发串口通信
2017-01-09 17:00
1241 查看
使用方法: https://github.com/NeuronRobotics/nrjavaserial
下载: https://oss.sonatype.org/#nexus-search;gav~com.neuronrobotics~nrjavaserial~~~
测试代码
说明
使用 DataInputstream 不要使用 InputStream, InputStream 会接收不到数据
测试代码除使用 NRSerialPort类 代替 RXTX 的 SerialPort类, 其他部分和 RXTX 案例一样
NRSerialPort 不需要 RXTX 的两个 so文件, 可以直接使用
RXTX 案例: http://rxtx.qbang.org/wiki/index.php/Examples
下载: 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
相关文章推荐
- Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)开发 之 蓝牙虚拟串口 (Bluetooth Virtual Serial Port)
- qt使用qextserialport-1.2rc进行串口通信编程
- 使用ANT协助开发java项目
- 使用Java Command Line Tool开发应用程序
- 【转载】JAVA 开发工具Jcreator使用技巧总结
- 使用 JavaServer Pages 技术开发多语言 Web 应用程序
- 使用 WebSphere Studio Application Developer 集成版,版本 4.1 开发 Java 消息服务应用程序
- 使用JavaServer Pages2.0开发Web应用
- 面向Java开发人员的Ajax: 结合Direct Web Remoting使用Ajax
- Oracle8i中使用Java语言来开发存储过程
- 关于使用Java开发工具的一些心得
- 面向 Java 开发人员的 Ajax: 结合 Direct Web Remoting 使用 Ajax
- 使用JSP + JAVABEAN + XML 开发的一个例子
- Oracle8i中使用Java语言来开发存储过程[转贴]
- Log4j在Java Web开发中的使用笔记
- JAVA 开发工具Jcreator使用技巧总结 (转)
- 使用javadoc规范java开发文档
- Oracle8i中使用Java语言来开发存储过程
- 使用SOAP开发java web服务--Axis开发方案
- 开发接触Java并使用BEA WebLogic 环境开发