`

java串口编程,java串口通信,监听者模式解析

阅读更多

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串口编程起步

    ### Java串口编程起步知识点详解 #### 一、引言 串口通信是电子设备间进行数据交换的一种常见方式,特别是在工业控制、自动化系统及物联网领域...对于初学者来说,理解这些基本概念和方法是入门Java串口编程的关键。

    Java串口通信——串口转发.rar

    本主题主要关注的是“Java串口转发”,即通过编程方式实现从一个串口读取数据并将其发送到另一个串口的过程。下面将详细介绍这个过程及相关知识点。 首先,串口通信的基础是了解串行通信协议,它是一种逐位传输数据...

    串口通信解决数据乱码和数据丢失

    串口通信是计算机硬件接口的一种,它通过串行线路传输数据,广泛应用于各种设备的连接与通信,如嵌入式系统、传感器、打印机等。在实际应用中,串口通信可能会遇到数据乱码和数据丢失的问题,这通常是由多种因素引起...

    JAVA读取USB扫描枪

    在Java编程环境中,读取USB扫描枪的数据是一项实用的技术,特别是在物流、仓储、零售等领域,用于快速录入条形码或二维码信息。以下将详细介绍如何在Java中实现这一功能。 首先,理解USB扫描枪的工作原理是关键。...

    明华读卡器Java例程

    9. **软件设计模式**:为了提高代码的可维护性和复用性,例程可能应用了一些设计模式,比如工厂模式用于创建设备对象,单例模式确保读卡器的唯一实例,或者观察者模式用于监听读卡器状态变化。 总之,"明华读卡器...

    java短信猫收发短信的例子

    Java短信猫收发短信的例子是基于Java编程语言实现的一个实用工具,主要用于与短信猫设备进行交互,实现短信的发送和接收功能。短信猫是一种硬件设备,通常通过USB或串口连接到计算机,使得电脑能够通过GSM网络发送和...

    中控考勤机机器连接与考勤数据的实时获取-java版

    3. **创建连接**:使用Java的Socket编程或SerialPort类(如果使用RXTX库进行串口通信)建立与考勤机的连接。 4. **发送与接收数据**:编写发送请求和解析响应的代码。这可能涉及XML或自定义格式的数据包,需要按照...

    android_CameraDemo-master_串口_android串口开发_zerolon_android_cowiwz_

    6. **事件驱动编程**:串口通信通常基于事件,如数据到达或发送完成,因此项目可能使用了监听器模式来处理这些事件。 7. **数据解析**:在串口通信中,接收的数据需要被正确解析。项目可能包含解析协议、解码二进制...

    java短信猫发短信

    Java短信猫发短信技术主要涉及Java编程语言与硬件设备——短信猫的交互,以及通过串行通信接口(串口)实现短信的发送和接收。在本文中,我们将深入探讨这一技术,包括短信猫的工作原理、Java如何操作串口以及相关的...

    java版短信猫收发程序

    对于接收短信,程序需监听串口输入,一旦接收到新短信,解析返回的数据以获取短信内容和发送者信息。 5. **异常处理与错误恢复**: 在实际应用中,需要考虑串口通信可能出现的异常,如连接断开、指令执行失败等...

    计算机软件-商业源码-两台机器间的串口通讯.zip

    这个“计算机软件-商业源码-两台机器间的串口通讯.zip”文件很可能包含了一套实现两台计算机之间通过串行接口进行通信的源代码。下面我们将详细讨论串口通讯的基本概念、实现方式以及可能涉及的技术点。 串口通信,...

    通过fax modem 仪器获取座机电话来电显示功能

    2. **Java串口通信**:在Java中,我们可以使用`javax.comm`库或者第三方库如RXTX来实现与串行设备(如Fax Modem)的通信。这些库提供了读取和写入串口数据的方法,从而实现对Fax Modem的控制和数据交换。 3. **来电...

    Displaying Data on a PC

    - **配置环境变量**:设置环境变量`MOTECOM`,以指定Java监听工具监听哪个串口的数据。 #### 四、图形化展示传感器读数 接下来,我们将介绍如何使用Java应用程序图形化地展示传感器读数: - **创建图形界面**:...

    BlueTooth.rar

    《安卓串口助手AS源码解析与应用》 在当今的移动开发领域,尤其是在物联网(IoT)的应用中,串口通信扮演着重要的角色。Android系统作为全球最广泛使用的智能设备操作系统之一,串口助手软件成为了开发者调试硬件、...

    ministm32_PC示波器

    这个软件可能是用各种编程语言(如C#、Python或Java)编写的,它可以监听串口通信,接收数据,并使用图形库(如matplotlib或Qt)绘制波形。用户界面可能包括设置采样率、选择通道、调整垂直和水平缩放等功能。 实现...

    android手机应用源码简单通讯源码:手机控制PC的关机、重启、.rar

    这个程序可能用Java、Python或其他语言编写,监听特定端口或接口,当收到关机或重启指令时,调用操作系统提供的API来执行相应操作。 安全性和权限管理是此类应用的另一个重要方面。在Android系统中,应用程序需要...

    openfire开发资料

    Apache MINA 是Openfire底层通信处理的基础,它是一个网络应用框架,基于Java NIO(Non-blocking Input/Output)设计,提供了异步、事件驱动的网络编程接口。MINA 支持多种传输协议,如TCP/IP、UDP/IP,甚至串口通信...

    STM32单片机通过ESP8266WiFi模块与Android APP实现数据传输软件源码.zip

    2. **连接建立**:STM32通过串行通信接口(如UART)与ESP8266建立连接。配置合适的波特率、校验位、停止位等参数。 3. **数据发送**:STM32将准备好的数据通过串口发送到ESP8266。ESP8266接收到数据后,将其封装成...

    android 培训

    这篇内容将深入探讨Android应用层的开发,结合华天正开发板的实际应用,以及涉及到的背光、GPS、串口、录音机和摄像头等硬件接口的集成与编程。 首先,我们要理解Android应用层是操作系统中的用户界面和应用程序...

    nodejs web

    2. **观察者模式**:适用于处理事件驱动的应用场景,例如监听文件系统的更改事件。 3. **发布/订阅模式**:用于处理多个组件之间的通信问题,一个组件发布消息,其他组件订阅这些消息。 4. **策略模式**:根据不同的...

Global site tag (gtag.js) - Google Analytics