java串口编写--基础方法

转载 2016年08月30日 17:18:48
Java在传统上感觉和硬件打交道的比较少,这部分工作用C语言的比较多。
但并不是说Java不具备这样的能力。

Sun就发布了Java和串口以及并口的开发包。但是在正常的搜索中只能找到Linux和Solaris版本的类库。
下面这个链接是Win32平台下的包,找了很久才找到。
http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg


下面简单说一下使用的步骤。

1. 把下载包中的win32com.dll放到windows\system32目录下,文档中说是放在jdk的bin目录下,但是会报错,我后来放在system32目录下解决此问题
2. 把comm.jar和javax.comm.properties这两个文件放在类路径中,注意要放在一起。文档上是要求放在jdk的lib目录中。
如果缺少javax.comm.properties文件,就找不到任何一个串口和并口

portList = CommPortIdentifier.getPortIdentifiers();/*不带参数的getPortIdentifiers方法获得一个枚举对象,该对象又包含了系统中管理每个端口的CommPortIdentifier对象。注意这里的端口不仅仅是指串口,也包括并口。这个方法还可以带参数。getPortIdentifiers(CommPort)获得与已经被应用程序打开的端口相对应的CommPortIdentifier对象。 getPortIdentifier(String portName)获取指定端口名(比如“COM1”)的CommPortIdentifier对象。*/
while (portList.hasMoreElements()) {
            portId 
= (CommPortIdentifier) portList.nextElement();
 if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)/*getPortType方法返回端口类型*/ {
 if (portId.getName().equals("COM1"))/* 找Windows下的第一个串口*/ {
  SimpleRead reader = new SimpleRead();
                }

            }

        }




java调用coms端口串口通信的方法。

首先需要下到串口驱动。javacomm20-win32.zip

去sun的主页应该有下的。

在这个驱动中有comm.jar,javax.comm.properties,win32com.dll

这么3个重要的文件。

1、首先配置驱动,把javax.comm.properties,win32com.dll拷贝到你的jdk中

具体位置为C:\Program Files\Java\jdk1.6.0_06\bin

然后配置windows系统环境变量,在path中加入C:\Program Files\Java\jdk1.6.0_06\bin;

打开你的java工程,配置user library,并导入comm.jar包。

2、现在就可以开始写代码了。串口读写代码如下

CommPortIdentifier portID = CommPortIdentifier.getPortIdentifier(com);//1,先拿到Identifier

//其中com是String类型的,传入的是串口名com="COM1";

SerialPort port = (SerialPort)portID.open("MyComm", 100000000);//2,打开串口

//"MyComm"是串口名,100000000是串口过期时间(ms)。

port.setSerialPortParams(rate, databits,stopbit, parity);//3,设置串口属性

//rate 波特率(默认9600),databits载波位(默认8),stopbit停止位(默认1),parity校验位(默认0无校验)

port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);//4(可选)设置数据流控制模式,默认为无

port.close();//关闭串口

3、串口读入写出流。

OutputStream os=port.getOutputStream();//拿到写出流。写出流就随便写就行。

port.getOutputStream().flush();//写完要记得做一次冲一下缓冲区

InputStream is= port.getInputStream();//拿到读入流。

is.read();//每次读入一个int,这个是个阻塞函数,在无数据的时候会中断。

4、串口读入轮询模式

一种读取的方式是每次做

         byte b[]=new byte[1024];
         is.read(b);

如果返回的是-1表示无数据。可以中断几毫秒然后再去读。

比较低效的一种读取模式,但是在使用阻塞函数的时候还是很好用的。

5、串口的监听模式

//5.1首先建立监听类

public class CommListener implements SerialPortEventListener

//继承自javax.comm.SerialPortEventListener;

//实现监听方法public void serialEvent(SerialPortEvent arg0){}

当有新数据进入的时候会被调用,传入javax.comm.SerialPortEvent对象参数。

if (arg0.getEventType()==SerialPortEvent.DATA_AVAILABLE)//如果是有效数据的话就做read

{

        //read();

}

//5.2建立好监听类以后要在port上添加。

port.addEventListener(commListener);

//其中port是上文打开的串口端口,commListener是上文的监听器实例

port.notifyOnDataAvailable(true);//设置监听模式为当有数据到达时唤醒监听线程。

//千万注意一定要有这句代码,其他很多博文都没有介绍这个。没这句话就不会唤醒监听线程了。


Java使用线程实现UDP收发程序

  • 2016年04月23日 17:54
  • 55KB
  • 下载

STM32 UART的使用过程

 1、使用UART前必须启动相应的外设时钟,其主要用到固件库的RCC_APBnPeriphClockCmd函数。使能UART1:使用RCC_APB2PeriphClockCmd(RCC_APB2P...
  • joji_h
  • joji_h
  • 2010年06月10日 17:08
  • 3918

使用Java实现串口通信

目录用 [TOC]来生成目录:目录 使用Java通过串口进行数据通信 javaxcommjar简介 下载 安装 API javaxcommjar的使用使用Java通过串口进行数据通信使用的类库为jav...
  • u012114403
  • u012114403
  • 2015年06月04日 17:32
  • 2943

使用Java实现简单串口通信

 最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^ 一: 首先,你需要下载一个额外的支持Java...
  • It_BeeCoder
  • It_BeeCoder
  • 2017年07月07日 22:32
  • 521

使用java实现串口通信

很老套的代码,但是却费时很久,找到过很多参考代码,但是要不然和本身项目不太符合,要不然就运行不出来,报串口找不到的错误,也还因为jar包整了很久,去各种百度解决办法才真正实现使用java实现串口通信。...
  • AquariusSandy
  • AquariusSandy
  • 2017年07月11日 20:08
  • 737

使用Java实现串口通信

1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 效果图如下: 2.RXTXcommJava串口通信依赖的jar包RXTXcomm.jar 下载地址:http://down...
  • kong_gu_you_lan
  • kong_gu_you_lan
  • 2016年08月24日 17:07
  • 18327

Java串口编程:串口数据的发送与监听读取

本文的目的是介绍Java串口编程,主要内容包括:1.串口的简单介绍;2.Windows平台下Java串口编程的软硬件环境搭建;3.向串口发送数据以及监听串口并获取其接收到的数据。...
  • u013363811
  • u013363811
  • 2015年03月15日 11:23
  • 18282

如何编写串口(uart)驱动-基于linux310

Linux uart驱动编写 本篇在介绍Linux下串口
  • shichaog
  • shichaog
  • 2014年10月29日 20:50
  • 2686

java串口调试助手开发记录

一、首先搭建平台,我用的是eclipse+rxtx+SWT。 安装eclipse就是安装java包后,然后下载eclipse即可。因为eclipse是绿色的,不用安装,下载即可用。 下载rxtx。...
  • xiuxinzhe
  • xiuxinzhe
  • 2016年12月19日 11:00
  • 1345

Java程序与串口的通信实现及调试

下面为大家介绍一下小编最近一个项目中,牵扯到与串口通信部分的实现及调试。 串口通信原理 串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数...
  • update_java
  • update_java
  • 2015年07月15日 21:27
  • 10353
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java串口编写--基础方法
举报原因:
原因补充:

(最多只允许输入30个字)