最近在实际项目中,需要Java语言来实现对串口数据的读写操作。本来可以用javax.comm这个包的,但是经过几次测试,始终不能读出PC上的串口;于是我换了rxtx包在Myeclipse8.6下进行测试,测试结果表明可以获取到PC的可用端口。javax.comm在windows下的开发维护已经停止了,rxtx的旧版本支持在javax.comm-win32-2.0基础上的扩展,rxtx新版本支持对javax.comm的覆盖式支持,也就是说原来用javax.comm的把所有import

javax.comm.*改成import

gnu.io.*就可以正常使用了,其他只须相关的dll文件,不用properties文件,支持的端口类型也明显多了很多。

把下载包中rxtx-2.1-7-bins-r2\Windows\i368-mingw32\rxtxSerial.dll

放到你%java_home%\jre\bin下面(%java_home%\jre\bin\rxtxSerial.dll)和C:\Windows\System32下面(C:\Windows\System32\rxtxSerial.dll);

把下载包中rxtx-2.1-7-bins-r2\RXTXcomm.jar放到%java_home%\jre\lib\ext下面(%java_home%\jre\lib\ext\RXTXcomm.jar)。

注:%java_home%为你安装JDK的路径,如:C:\Program

Files\Java\jdk1.6.0_10

下面是在Myeclipse中引用RXTXcomm.jar,选择工程Build Path,选择Configure Build

Path,选择Libraries,点击Add Exteral

JARS按钮,在弹出的对话框中找到RXTXcomm.jar,然后选中,点击打开,再点击OK即可。

好了,下面就可以进行程序的编写了,首先看看能都获取到你PC上的串口,程序如下:

package test;

import java.util.Enumeration;

import gnu.io.*;

public class TestSerial {

@SuppressWarnings("unchecked")

static Enumeration

portList; static CommPortIdentifier portId;

public static void main(String[] args) {

try {

portList = CommPortIdentifier.getPortIdentifiers();

//得到当前连接上的端口

while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)

{//判断如果端口类型是串口

//if (portId.getName().equals("COM3")) { //判断如果COM3端口已经启动就连接

System.out.println(portId.getName());

}

}

//}

} catch (Exception e) {

e.printStackTrace();

} } }

测试结果:

Stable Library

=========================================

Native lib Version = RXTX-2.1-7

Java lib Version =

RXTX-2.1-7

COM1

COM3

下面程序是作为服务端,当收到WIFI发送的数据,然后对串口进行写数据操作的程序:

package test;

import java.io.*;

import java.net.*;

import gnu.io.*;

import java.util.*;

public class Tcpserver implements Runnable {

public static final String

ServerIP="192.168.1.108";

public static final int ServerPort=7788;

static CommPortIdentifier portId; //串口通信管理类

@SuppressWarnings("unchecked")

static Enumeration

portList; //已经连接上的端口的枚举

public static SerialPort

serialPort; //串口的引用

public static OutputStream out;

public void run(){

try{

System.out.println("Connection...");

ServerSocket

serverSocket = new ServerSocket(ServerPort);

while(true){

Socket

client=serverSocket.accept();

System.out.println("Receiveing...");

try{

BufferedReader

bf=new BufferedReader(new

InputStreamReader(client.getInputStream()));

String

str=bf.readLine();

if(str.equals("0")){

out.write(48);

out.flush();

}else

if(str.equals("1")){

out.write(49);

out.flush();

}

System.out.println("Received:'"+str+"'");

}catch(Exception

e)

{

e.toString();

}finally{

out.close();

client.close();

System.out.println("done");

}

}

}catch(Exception e)

{

e.toString();

}

}

public static void

main(String[] args) {

Thread ServerThread=new Thread(

new Tcpserver());

ServerThread.start();

try {

portList = CommPortIdentifier.getPortIdentifiers();

//得到当前连接上的端口

while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)

{//判断如果端口类型是串口

if (portId.getName().equals("COM1")) { //判断如果COM3端口已经启动就连接

serialPort=(SerialPort)portId.open("COM1",2000); serialPort.setSerialPortParams(38400, SerialPort.DATABITS_8,

SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

out=serialPort.getOutputStream();

System.out.println(portId.getName());

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

// TODO Auto-generated method

stub

}

}

java rxtx串口读写_Win7环境下Java串口数据读写(RXTX)相关推荐

  1. java读取sh脚本_linux环境下java读取sh脚本并执行

    linux环境下java读取sh脚本并执行 作者: CSDN博客 更新时间:2013-09-27 11:49:16 原文链接 Process process; String cmd = "/ ...

  2. Docker环境下Java应用的最大内存和堆内存的设置

    Docker环境下Java应用的最大内存和堆内存的设置 1.  设置应用允许使用的最大内存 通过docker run(创建一个新的容器并运行)命令中设置-m来进行设置.案例如下所示. docker r ...

  3. win、linux环境下JAVA+GDAL部署,jar包启动,相关描述,问题解决

    文章目录 windows环境下JAVA+GDAL 1.GDAL下载 2.GDAL安装(既解压后拷贝) 3.GDAL测试 4.Jar包方式运行 https://www.jianshu.com/p/6bc ...

  4. Eclipse开发环境下Java可视化界面编程

    Java 目录:https://blog.csdn.net/dkbnull/article/details/87932486 大家都知道在做Android开发设计GUI时,要添加Android组件可以 ...

  5. java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell

    原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...

  6. python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  7. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  8. mysql 控制台环境下查询中文数据乱码,插入、更新中文数据不成功

    mysql 控制台环境下查询中文数据乱码,插入.更新中文数据不成功 登录mysql密码是加入编码参数--default-character-set,中文用gbk mysql -uroot -pabct ...

  9. java串口rxtx下载_WINDOWS环境下JAVA串口RXTX编程DEMO

    copy RXTXcomm.jar into your c:\program files\java\jre-version\lib\ext dir 把下载包中Windows\i368-mingw32\ ...

  10. java中HashMap在多线程环境下引起CPU100%的问题解决

    最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环 ...

最新文章

  1. 【TUP第11期】腾讯黄朝兴:浅谈客户端架构
  2. 《移动项目实践》实验报告——Android设备操作
  3. 【Qt】QObject详解
  4. JDK8 SE安装步骤
  5. oModel.create will also send to backend directly
  6. leetcode 27. 移除元素(双指针)
  7. vim编辑python_Python3基础知识——Vi/Vim编辑器的使用,大神们都在用的
  8. 云栖科技评论世界杯特刊:俄罗斯世界杯,新技术再一次升级内容产业
  9. wifi精灵android版,WiFi精灵安卓版
  10. Delphi7中idhttp和superobject获取网页中文乱码解决办法
  11. xbox360使用_适用于Xbox 360的HD-DVD Player
  12. 浮点型数据在内存中是如何存储的
  13. 指纹识别综述(9): 指纹系统安全
  14. Elang在Windows console下显示中文
  15. android开发培训大纲,华图教育-Android应用开发培训教学大纲
  16. Android 数据加密算法总结
  17. 网络设备互联技术· 『1』
  18. 子查询合并Derived_merge
  19. 怎么用html制作3D页面,HTML怎么制作
  20. 开关电路的种类与功能

热门文章

  1. lj245a引脚功能图_lm324工作原理_引脚图功能_特性参数_内部电路及应用电路
  2. Atitit 人工智能声音处理乐器总类以及midi规范的标示 目录 1. Atitit 乐器分类 打击乐器 1 1.1. 1.1. 打击乐器(各种鼓 三角铁等 1 2 1.2. 1.2. 管乐器
  3. 广域网、城域网及局域网技术
  4. 计算机技术在印刷中的应用,网络技术在印刷中的应用技巧
  5. tcp流式传输_收听互联网广播以及下载和流式传输免费音乐的最佳网站
  6. 在SQL Server2012上搭建Northwind详细教程,SQL2000SampleDb.msi的资源
  7. 国内免费CMS系统大全
  8. SpiceWorks:企业接纳Windows 10的增速是Windows 7的两倍
  9. PDF转CAD怎么转换?(所有格式格式转换方法通用)
  10. Ubuntu14下安装使用SVN RabbitVCS客户端