java串口数据解析_[转载]java串口编程,java串口通信,监听者模式解析 (转)...

(转自http://hi.baidu.com/zp9450/blog/item/f20722235cc1f3ffd6cae257.html#0)

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

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

去sun的主页应该有下的。

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

这么3个重要的文件。

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

具体位置为C:Program FilesJavajdk1.6.0_06bin

然后配置windows系统环境变量,在path中加入C:Program

FilesJavajdk1.6.0_06bin;

打开你的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);//设置监听模式为当有数据到达时唤醒监听线程。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值