java串口通讯程序

合集下载

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

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

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

首先需要下到串口驱动。

javacomm20-win32.zip去sun的主页应该有下的。

在这个驱动中有comm.jar,m.properties,win32com.dll这么3个重要的文件。

1、首先配置驱动,把m.properties,win32com.dll拷贝到你的jdk 中具体位置为C:\Program Files\Java\jdk1.6.0_06\bin然后配置windows系统环境变量,在path中加入C:\ProgramFiles\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、串口读入写出流。

java读写串口数据你了解多少

java读写串口数据你了解多少

java读写串⼝数据你了解多少⽬录1.导⼊⽀持java串⼝通信的jar包:2.编写代码操作串⼝:总结最近接触到了串⼝及其读写,在此记录java进⾏串⼝读写的过程。

1.导⼊⽀持java串⼝通信的jar包:在maven项⽬的pom.xml中添加RXTXcomm的依赖或者下载RXTXcomm.jar并导⼊到项⽬中。

⽀持Java串⼝通信操作的jar包,m⽐较⽼,⽽且不⽀持64位系统,推荐使⽤Rxtx这个jar包(32位/64位均⽀持)。

下载地址:注意:运⾏过程中抛出ng.UnsatisfiedLinkError错误或gnu.io下的类找不到时,将rxtx解压包中的rxtxParallel.dll,rxtxSerial.dll 这两个⽂件复制到C:\Windows\System32 ⽬录下可解决该错误。

2.编写代码操作串⼝:串⼝必要参数类:包含连接串⼝所必须的参数,⽅便在调⽤串⼝时设置和传递串⼝参数/*** 串⼝必要参数接收类* @author: LinWenLi* @date: 2018年7⽉21⽇下午4:30:40*/public class ParamConfig {private String serialNumber;// 串⼝号private int baudRate; // 波特率private int checkoutBit; // 校验位private int dataBit; // 数据位private int stopBit; // 停⽌位public ParamConfig() {}/*** 构造⽅法* @param serialNumber 串⼝号* @param baudRate 波特率* @param checkoutBit 校验位* @param dataBit 数据位* @param stopBit 停⽌位*/public ParamConfig(String serialNumber, int baudRate, int checkoutBit, int dataBit, int stopBit) {this.serialNumber = serialNumber;this.baudRate = baudRate;this.checkoutBit = checkoutBit;this.dataBit = dataBit;this.stopBit = stopBit;}getter()...setter()...}串⼝操作类:(其中包含的CustomException是⾃定义异常类,仅⽤于抛出异常原因。

java串口通信

java串口通信

java串⼝通信java串⼝通信,由于没有相应的串⼝硬件,选了⼀款windows串⼝虚拟机机器1. 准备串⼝模拟器Launch Virtual Serial Port Driver模拟两对四个串⼝,COM1发送数据给COM2,COM3发送数据给COM4java包<dependency><groupId>com.fazecast</groupId><artifactId>jSerialComm</artifactId><version>[2.0.0,3.0.0)</version></dependency>2. java源代码mport com.fazecast.jSerialComm.SerialPort;import com.fazecast.jSerialComm.SerialPortDataListener;import com.fazecast.jSerialComm.SerialPortEvent;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @Classname ComTest* @Description com串⼝通信* @Date 2021/9/4 10:44* @Created by huangsm*/public class ComTest {/*** <com名称,SerialPort>串⼝通信map,存储串⼝名称与串⼝信息*/private Map<String, SerialPort> comMap = new HashMap<>();/*** com⼝列表*/private List<String> comList = new ArrayList<>();public ComTest() {//将所有的串⼝信息放⼊comlist,comMap中SerialPort[] commPorts = SerialPort.getCommPorts();for (SerialPort commPort : commPorts) {comList.add(commPort.getSystemPortName());comMap.put(commPort.getSystemPortName(), commPort);//监听所有串⼝通信的数据commPort.openPort();commPort.addDataListener(new SerialPortDataListener() {@Overridepublic int getListeningEvents() {return SerialPort.LISTENING_EVENT_DATA_RECEIVED;}@Overridepublic void serialEvent(SerialPortEvent serialPortEvent) {byte[] newData = serialPortEvent.getReceivedData();System.err.println(String.format("串⼝%s接收到数据⼤⼩:%s,串⼝数据内容:%s",serialPortEvent.getSerialPort().getSystemPortName(),newData.length,new String(newData))); }});}}public static void main(String[] args) throws Exception {ComTest comTest = new ComTest();List<String> comList = List;Map<String, SerialPort> comMap = Map;BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in));while (true) {System.out.println("你的可以通信的串⼝列表");for (String comName : comList) {System.out.println("========" + comName + "========"); }System.out.println("请输⼊你的串⼝:");String com = systemIn.readLine();if(!comList.contains(com)){System.out.println("输⼊的串⼝不正确:");continue;}System.out.println("输⼊你要发送的消息:");String msg = systemIn.readLine();SerialPort serialPort = comMap.get(com);serialPort.writeBytes(msg.getBytes(),msg.getBytes().length);//这⾥是让串⼝先接收到数据再重新发送数据Thread.sleep(1000);}}}3. 运⾏结果你的可以通信的串⼝列表========COM1================COM2================COM3================COM4========请输⼊你的串⼝:COM3输⼊你要发送的消息:137912037串⼝COM4接收到数据⼤⼩:9,串⼝数据内容:137912037你的可以通信的串⼝列表========COM1================COM2================COM3================COM4========请输⼊你的串⼝:。

Java串口通信详解

Java串口通信详解

Java串口通信详解序言说到开源,恐怕很少有人不挑大指称赞。

学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。

然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。

这也难怪,毕竟就像某个著名NBA 球员说的那样:“我还要养家,所以千万美元以下的合同别找我谈,否则我宁可待业”。

是啊,支持开源的人也要养家,收点钱也不过分。

要想既不花钱又学到知识就只能借助网络和了,我只是想抛砖引玉,为开源事业做出点微薄共献,能为你的工程解决哪怕一个小问题,也就足够了。

虽然我的这个系列介绍的东西不是什么Web框架,也不是什么开源服务器,但是我相信,作为一个程序员,什么样的问题都会遇到。

有时候越是简单的问题反而越棘手;越是小的地方就越是找不到称手的家伙。

只要你不是整天只与“架构”、“构件”、“框架”打交道的话,相信我所说的东西你一定会用到。

1串口通信简介1.1常见的Java串口包1.2串口包的安装(Windows下)2串口API概览mPortmPortIdentifierm.SerialPort2.4串口API实例2.4.1列举出本机所有可用串口2.4.2串口参数的配置2.4.3串口的读写3串口通信的通用模式及其问题3.1事件监听模型3.2串口读数据的线程模型3.3第三种方法4结束语1串口通信简介嵌入式系统或传感器网络的很多应用和测试都需要通过PC机与嵌入式设备或传感器节点进行通信。

其中,最常用的接口就是RS-232串口和并口(鉴于USB接口的复杂性以及不需要很大的数据传输量,USB接口用在这里还是显得过于奢侈,况且目前除了SUN有一个支持USB 的包之外,我还没有看到其他直接支持USB的Java类库)。

SUN的CommAPI分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。

用Java开发的一种实用串行通信程序

用Java开发的一种实用串行通信程序
Sr gdieN m : Sn jb . d c JbO ・ t n r r a e ”U .d c ob . d c d i v
b Dr e  ̄ c i r; v S r g c n e t n L : d e o b : x t n o n e i UR i o b :d c t x ; p C n e d n c n:n l; o n c o o ul P e ae S ae n s n =n l; r p r d ttme t n t p ul
i UL; fn R ) o
建 立连 接 后 , 可通 过 Peae.a m n 接 即 rprd te et St
口进行数据库的插人 、 更改 、 删除及查询操作。
2 1 1 数据 库 的插 入操 作 ..
数据库操作, v 的串口操作 。下面分别加 以论 Ja a
述。
S n aetQ N E T IT ps k(d a, t g[sr L= Is R N O tys i.r i r S j
维普资讯
29 年3l O 1 第 O 2 第/ 1卷 期
沈 g] ̄t e f eoat n n Ju ] f h na阳航空工业学院学报 a E g er g om ̄ 0 Seyn n d t o A rnui l ni ei u c
M l2 0 a O2 "
特定 的 Widw 环境 下运行 , 于 U i no s 对 nx等平 台则 必须 再次开 发 。
能否采用一种与平台无关的软件开发串行通 信程序一直是软件行业所向往 的. J a 而 a 的跨平 v 台特性正适合这 种需求 。J 引进 了虚拟机原 a ” 理 , Jv 语 言具 有与平 台无关性 。 即用 Jv 使 aa aa语 言编写的程序可以任何时候在任何一台计算机上 运行 。本文结台数据库的数据维护等诸多优 点, 开发出了利用 Jv 编写 的完整 的串行通信使 用 aa

Java串口通信编程指导

Java串口通信编程指导

Java串口通信编程指导Java串口通信编程概述在java中,利用Java Communication包能够操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,只是在XP下还能使用。

另外,也能够用开源的Rxtx实现串口通信,那个地点仅以Java Communication包,在Windows平台实现串口通信进行讲明。

前期预备下载Java Communication包下载地址如下:/Jolt/javacomm20-win32.zip。

配置解压缩javacomm20-win32.zip把win32com.dll拷贝到{JA V A_HOME}\jre\bin把comm.jar拷贝到{JA V A_HOME}\jre\lib\extset CLASSPATH={JA V A_HOME}\jre \lib\ext \comm.jar;%classpath%实现过程要紧步骤包括:获得串口标识打开串口设置串行端口通讯参数猎取输入(出)流进行读写操作获得串口标识指定串口的端口号,生成串口的标识类的实例。

a. 通过驱动决定通讯端口是可用的。

b. 打开通讯端口为了I/O操作。

c. 决定端口的拥有者。

d. 解析端口拥有者的争夺。

e. 治理事件显示在端口拥有者的中的状态改变。

示例代码如下:代码:打开串口示例代码如下:代码:5000(毫秒)是超时时刻。

设置串行端口通讯参数设置串口传输的波特率、数据位、停止位、奇偶校验等参数。

示例代码如下:代码:try {// 通信条件の設定// 通信速度 9600 baud// データビット 8bit// ストップビット 1bit// パリティなし// フローコントロールの設定// 無制御を使用port.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);} catch (UnsupportedCommOperationException ex) {ex.printStackTrace();System.exit(1);}猎取输入(出)流利用getInputStream()以及getOutputStream()从每个串口产生对应的输入输出流对象。

java 串口通信案例

java 串口通信案例

java 串口通信案例Java串口通信是指使用Java编程语言实现与串口设备之间的数据通信。

串口通信在很多应用场景中都有广泛的应用,比如物联网、工业自动化、智能家居等领域。

本文将列举十个以Java串口通信为题的案例,介绍其实现方法和应用场景。

1. 串口读取数据通过Java编程语言实现串口读取数据的功能,可以使用Java的串口通信库,如RXTX、JavaComm等。

首先需要打开串口,并设置串口参数,然后通过监听串口数据的方式实时读取串口传入的数据。

这个案例适用于需要实时监控串口设备数据的应用场景,比如环境监测。

2. 串口发送数据通过Java编程语言实现串口发送数据的功能,可以使用Java的串口通信库。

首先需要打开串口,并设置串口参数,然后通过写入数据的方式将数据发送到串口设备。

这个案例适用于需要向串口设备发送指令或数据的应用场景,比如控制外部设备。

3. 串口数据解析通过Java编程语言实现串口数据解析的功能,可以将从串口读取的原始数据进行解析,提取出有用的信息。

可以根据数据格式进行解析,比如按照特定的协议解析数据。

这个案例适用于需要对串口设备传输的数据进行处理和分析的应用场景。

4. 串口数据存储通过Java编程语言实现串口数据存储的功能,可以将从串口读取的数据保存到本地文件或数据库中。

可以根据需求选择适当的存储方式,比如文本文件、二进制文件或数据库。

这个案例适用于需要对串口设备传输的数据进行长期存储和分析的应用场景。

5. 串口数据转发通过Java编程语言实现串口数据转发的功能,可以将从一个串口读取的数据转发到另一个串口。

可以实现串口设备之间的数据交互,比如串口设备之间的数据通信或设备之间的数据同步。

这个案例适用于需要多个串口设备之间进行数据交互的应用场景。

6. 串口数据监控通过Java编程语言实现串口数据监控的功能,可以监控串口设备的状态和传输数据。

可以实时显示串口设备的连接状态、波特率、数据位、停止位等信息,并实时显示串口传输的数据。

Java 串口通讯 RS232

Java 串口通讯 RS232

通过comm.jar等配置如果用applet应用程序的话,下面这个函数是可以取到串口的,但是如果通过web应用程序(或者通过jsp调用)却取不到串口,而且也不会抛出异常,感觉很奇怪,特来请教!CommPortIdentifier.getPortIdentifiers();同时目标机器的java运行环境也需要把w32comm.dll, comm.jar xxx.proper等放到相应的目录就是用ibm的包而不用sun的comm包:ibm-javacomm-win32-x86.zip只需要把comm驱动包这个类的装载更新一下即/serialcomm.htm利用Java实现串口全双工通讯一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。

本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。

本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java(用来保存从串口所接收数据的缓冲区), ReadSerial.java (从串口读取数据的程序)。

另外本类库还提供了一个例程SerialExample.java 作为示范。

在下面的内容中将逐一对这几个部分进行详细介绍。

1. SerialBeanSerialBean是本类库与其他应用程序的接口。

该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。

具体介绍如下:本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。

PortID = 1 表示COM1,PortID = 2 表示COM2,由此类推。

本函数初始化所指定的串口并返回初始化结果。

如果初始化成功返回1,否则返回-1。

串口通讯-Java(Rxtx)

串口通讯-Java(Rxtx)

基于无线传感定位系统的通信软件一、运行环境:Windows操作系统下运行,由于作品是基于java虚拟机的,所以需要安装jvm 该作品是属于基于硬件的通信软件,所以在对数据的接收上要求无线传感器支持,这个软件主要任务是对无线传感器发送来的数据进行准确,形象的整理和分析。

二、开发环境:软件开发环境是在eclipse这个平台上,基于java的RXTX串口通信技术完成的。

三、功能说明:1、各类结点数据的接受处理和统计;2、界面面板缩进的控制;3、温度数据湿度数据的对比图像;4、图像的缩放功能。

5、室内平面图的上传和缩放以及定位。

6、节点位置信息处理,显示在相对位置图上,每个节点要能够通过颜色反映出节点周围的温度状况。

7、数据的发送功能,我及时的向底层硬件发送数据帧,实现软硬件的实时联系和交互。

8、常用信息的设置功能,比如室温,串口属性信息,数据接受格式等四、作品整体效果展示温湿度曲线显示、控制和对比结点位置信息和温度信息的图像反映五、操作以及功能说明:1、串口设置:要针对电脑接入串口时的属性,和底层数据发送帧的格式在如下面板中设置。

2、常用命令的设置,设置这些向底层发出请求的命令,可以灵活的控制我们所需要的数据,比如我们可以选择请求结点的温度信息,请求结点的湿度信息,或者是位置信息等等。

3、温湿度曲线的控制,设置好之后,点击ok,点击开始按钮,便会接受到底层硬件发来的数据,但是我们的硬件可能是很多个结点,如果都反映在图像上,可能略显混乱,所以我们可以在结点数据面板中控制哪个结点的显示状况。

4、结点位置信息的查看,下面的截图反映了结点的位置信息,大的圆圈是参考结点的位置和温度信息的反映,从内向外温度不断的接近室温,颜色越深的部分表示温度越高,小的绿园是我们要定位的盲几点的位置信息的反映,随着盲几点的实际位置信息的变化,图像中会做出准确的变化。

,5、盲结点和参考结点相关参数的设定,我们选中单选框,信息会出现在文本框中,设置好后,点击update,发送到底层。

java串口通信

java串口通信

小技巧:如何辨别TXD和RXD端口?搞电子的人手边应该常备一个电表,用来测测电压,电阻什么的会很有用。

你只要分别测一下RS232端口的2--5或3--5针脚之间的电压,通常TXD针脚与GND之间会有3~15V左右的负电压,表示它是TXD针脚。

安装JavaCommunicationsAPISun的J2SE中并没有直接提供以上提到的任何一种串行通讯协议的开发包,而是以独立的jar包形式发布在网站上(从这里下载)----即comm.jar,称之为Javatm CommunicationsAPI,它是J2SE的标准扩展。

comm.jar并不是最近才有,早在1998年时,sun就已经发布了这个开发包。

comm.jar分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。

目前sun发布的comm.jar只有Windows和Solaris平台两个版本,如果你需要Linux平台下的,可以在/~kevinh/linuxcomm.html找到。

在使用comm.jar之前,必须知道如何安装它。

这也是困扰许多初学javaRS232通讯者的一个难题。

如果我们电脑上安装了JDK,它将同时为我们安装一份JRE(Java RuntimeEntironment),通常我们运行程序时都是以JRE来运行的。

所以以下的安装适用于JRE。

如果你是用JDK来运行程序的,请将相应的改成。

下载了comm.jar开发包后,与之一起的还有两个重要的文件,win32com.dll和m.properties。

comm.jar提供了通讯用的javaAPI,而win32com.dll提供了供comm.jar调用的本地驱动接口。

而m.properties是这个驱动的类配置文件。

首先将comm.jar复制到\lib\ext目录。

再将win21com.dll复制到你的RS232应用程序运行的目录,即user.dir。

然后将m.properties复制到\lib目录。

java串口通信

java串口通信

java串口通信API说明java串口通信Java提供了 CommunicationAPI(包含于m包中)用于通过与机器无关的方式,控制各种外部设备。

Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的。

因此,必须先在SUN公司网站的Java站点()上下载这个扩展类库。

1.1Communications API 简介Communications API 的核心是抽象的CommPort类及其两个子类:SerialPort类和ParallePort类。

其中,SerialPort类是用于串口通信的类,ParallePort类是用于并行口通信的类。

CommPort类还提供了常规的通信模式和方法,例如:getInputStream( )方法和getOutputStream( )方法,专用于与端口上的设备进行通信。

然而,这些类的构造方法都被有意的设置为非公有的(non-public)。

所以,不能直接构造对象,而是先通过静态的CommPortIdentifer.getPortIdentifiers()获得端口列表;再从这个端口列表中选择所需要的端口,并调用CommPortIdentifer对象的Open( )方法,这样,就能得到一个CommPort对象。

当然,还要将这个CommPort对象的类型转换为某个非抽象的子类,表明是特定的通讯设备。

该子类可以是SerialPort类和ParallePort类中的一个。

下面将分别对CommPort类,CommPortIdentifier类,串口类SerialPort进行详细的介绍。

1.2 CommPortIdentifier类CommPortIdentifier类的方法如下:方法说明addPortName(String, int, CommDriver) 添加端口名到端口列表里addPortOwnershipListener(CommPortOwnershipListener) 添加端口拥有的监听器removePortOwnershipListener(CommPortOwnershipListener) 移除端口拥有的监听器getCurrentOwner() 得到当前占有端口的对象或应用程序getName() 得到端口名称getPortIdentifier(CommPort) 得到参数打开的端口的CommPortIdentifier类型对象getPortIdentifier(String) 得到以参数命名的端口的CommPortIdentifier类型对象getPortIdentifiers() 得到系统中的端口列表getPortType() 得到端口的类型isCurrentlyOwned() 判断当前端口是否被占用open(FileDescriptor) 用文件描述的类型打开端口open(String, int) 打开端口,两个参数:程序名称,延迟时间(毫秒数)1.3 SerialPort类SerialPort关于串口参数的静态成员变量成员变量说明成员变量说明成员变量说明DATABITS_5 数据位为5 STOPBITS_2 停止位为2 PARITY_ODD 奇检验DATABITS_6 数据位为6 STOPBITS_1 停止位为1 PARITY_MARK 标记检验DATABITS_7 数据位为7 STOPBITS_1_5 停止为1.5 PARITY_NONE 空格检验DATABITS_8 数据位为8 PARITY_EVEN 偶检验 PARITY_SPACE 无检验SerialPort对象的关于串口参数的函数方法说明方法说明getBaudRate() 得到波特率 getParity() 得到检验类型getDataBits() 得到数据位数 getStopBits() 得到停止位数setSerialPortParams(int, int, int, int) 设置串口参数依次为(波特率,数据位,停止位,奇偶检验)SerialPort关于事件的静态成员变量成员变量说明成员变量说明BI Break interrupt中断 FE Framing error错误CD Carrier detect载波侦听 OE Overrun error错误CTS Clear to send清除以传送 PE Parity error奇偶检验错误DSR Data set ready数据备妥 RI Ring indicator响铃侦测DATA_AVAILABLE 串口中的可用数据 OUTPUT_BUFFER_EMPTY 输出缓冲区空SerialPort中关于事件的方法方法说明方法说明方法说明isCD() 是否有载波 isCTS() 是否清除以传送 isDSR() 数据是否备妥isDTR() 是否数据端备妥 isRI() 是否响铃侦测 isRTS() 是否要求传送addEventListener(SerialPortEventListener) 向SerialPort对象中添加串口事件监听器removeEventListener() 移除SerialPort对象中的串口事件监听器notifyOnBreakInterrupt(boolean) 设置中断事件true有效,false 无效notifyOnCarrierDetect(boolean) 设置载波监听事件true有效,false无效notifyOnCTS(boolean) 设置清除发送事件true有效,false无效notifyOnDataAvailable(boolean) 设置串口有数据的事件true有效,false无效notifyOnDSR(boolean) 设置数据备妥事件true有效,false无效notifyOnFramingError(boolean) 设置发生错误事件true有效,false无效notifyOnOutputEmpty(boolean) 设置发送缓冲区为空事件true有效,false无效notifyOnParityError(boolean) 设置发生奇偶检验错误事件true 有效,false无效notifyOnRingIndicator(boolean) 设置响铃侦测事件true有效,false无效getEventType() 得到发生的事件类型返回值为int型sendBreak(int) 设置中断过程的时间,参数为毫秒值setRTS(boolean) 设置或清除RTS位setDTR(boolean) 设置或清除DTR位SerialPort中的其他常用方法方法说明close() 关闭串口getOutputStream() 得到OutputStream类型的输出流getInputStream() 得到InputStream类型的输入流一年半前在jbuilder2006下写过串口通信程序,最近做一个GPS-SMS 项目,用到串口通信,在JBUILDER 配置了comm.jar却发现找不到端口,经过几番查找才发现自己配置的路径错了,浪费了不少时间,有必要记下来,防止下次出错,此次还暴露了自己看文章一目十行,走马观花的毛病。

java jssc串口例子

java jssc串口例子

java jssc串口例子Java JSSC(Java Simple Serial Connector)是一个用于串口通信的Java 库。

下面是一个简单的Java JSSC串口通信示例:```javaimport ;import ;import ;import ;public class SerialPortExample implements SerialPortEventListener { private SerialPort serialPort;public SerialPortExample(String portName) {serialPort = new SerialPort(portName);try {();(_9600, _8, _1, _NONE);(this);} catch (SerialPortException e) {();}}public void serialEvent(SerialPortEvent event) { if (()) {try {int available = ();if (available > 0) {byte[] bytes = new byte[available];(bytes, );("Received data: " + new String(bytes)); }} catch (SerialPortException e) {();}}}public static void main(String[] args) {String portName = "COM1"; // 串口名称,根据实际情况修改new SerialPortExample(portName);}}```该示例程序使用JSSC库打开一个串口,并设置串口参数(波特率、数据位、停止位和校验位)。

然后,它添加了一个`SerialPortEventListener`,以便在接收到数据时执行相应的操作。

Java串口操作RXTX

Java串口操作RXTX

Java串口操作RXTXRXTX是个提供串口和并口通信的开源Java类库。

该项目提供了Windows,Linux,Mac os X,Solaris操作系统下的兼容m串口通讯包API的实现。

一、使用准备1.Windows①将rxtxParallel.dll、rxtxSerial.dll拷贝到%JAVA_HOME%安装目录bin目录下②将RXTXcomm.jar 拷贝到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar2.Linux①复制librxtxSerial.so,librxtxParallel.so到%JAVA_HOME%/lib/$(ARCH)/②复制RXTXcomm.jar到%JAVA_HOME%/ext③定义驱动类后将m.properties放在应用程式的根目录下二、操作类注:串口操作类一定要继承SerialPortEventListenerpublic class SerialPortUtilityNew implements SerialPortEventListener {// 检测系统中可用的通讯端口类private CommPortIdentifier portId;// Enumeration 为枚举型类,在util中private Enumeration<CommPortIdentifier> portList;// 输入输出流private InputStream inputStream;private OutputStream outputStream;// RS-232的串行口private SerialPort serialPort;public static String test = "";//保存串口返回信息private static SerialPortUtilityNew uniqueInstance;//单例创建//初始化串口public void init() {// 获取系统中所有的通讯端口portList = CommPortIdentifier.getPortIdentifiers();// 用循环结构找出串口while (portList.hasMoreElements()) {// 强制转换为通讯端口类型portId = (CommPortIdentifier) portList.nextElement();// 判断是否为串口if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){ //比较串口名称是否为“COM3”if (portId.getName().equals("COM3")) {System.out.println("找到COM3");// 打开串口try {// open:(应用程序名【随意命名】,阻塞时等待的毫秒数)serialPort = (SerialPort) portId.open("GSMModemTest2.0", 2000);// 设置串口监听serialPort.addEventListener(new SerialPortUtilityNew());// 设置可监听serialPort.notifyOnDataAvailable(true);/* 设置串口通讯参数 */// 波特率,数据位,停止位和校验方式// 波特率2400,偶校验serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);test = "";outputStream = serialPort.getOutputStream();} catch (PortInUseException e) {e.printStackTrace();} catch (TooManyListenersException e) {e.printStackTrace();} catch (UnsupportedCommOperationException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}}/*** 实现接口SerialPortEventListener中的方法读取从串口中接收的数据*/public void serialEvent(SerialPortEvent event) {switch (event.getEventType()) {case SerialPortEvent.BI:case SerialPortEvent.OE:case SerialPortEvent.FE:case SerialPortEvent.PE:case SerialPortEvent.CD:case SerialPortEvent.CTS:case SerialPortEvent.DSR:case SerialPortEvent.RI:case SerialPortEvent.OUTPUT_BUFFER_EMPTY:break;case SerialPortEvent.DATA_AVAILABLE://获取到串口返回信息readComm();break;default:break;}}//读取串口返回信息public void readComm() {byte[] readBuffer = new byte[1024];try {inputStream = uniqueInstance.serialPort.getInputStream();// 从线路上读取数据流int len = 0;while ((len = inputStream.read(readBuffer)) != -1) {System.out.println("实时反馈:"+new String(readBuffer, 0, len).trim()+new Date());test += new String(readBuffer, 0, len).trim();break;}} catch (IOException e) {e.printStackTrace();}}/*** 关闭串口*/public static void closeSerialPort() {uniqueInstance.serialPort.close();}//向串口发送信息方法private void sendMsg(){String information = "AT\r";//要发送的内容try {outputStream.write(information.getBytes());inputStream = serialPort.getInputStream();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}。

Java实现串口通信

Java实现串口通信

这是用Java编写的实现串口通信的程序源代码。

至于支持串口通信的comm.jar 包,请各位从sun或别的网站处下载!这里只提供源码让大家参考。

gui.java算是一个框架;panel.java是面板,相当于前台;SerialCommunication.java是一个JavaBean,相当于后台。

面板视图如下:从串口中读入信息的机制如下:后台监测到有信息读入到缓存,就读取之,用一个字符串变量储存,并置“有新信息读入”的标识(相当于一个开关)为真。

面板有一个计时器监听器,用轮询的方式查询后台的“有新信息读入”的标识是否为真,若为真则马上读入到前台,显示到文本框上,并置“有新信息读入”的标识为假(顺手关门)。

gui.java:import java.awt.*;import javax.swing.*;public class gui{public static void main(String[] args){JFrame frame=new JFrame("密谈");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new panel());frame.pack();frame.setVisible(true);frame.setResizable(false);}}panel.java:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class panel extends JPanel{String SB;JTextArea show;JTextField text;JButton submit,connect,stop;SerialCommunication port;Timer timer;JPanel write;JPanel read;public panel(){SB=new String("");port=new SerialCommunication(1);timer=new Timer(100,new timeListener());show=new JTextArea(20,25);show.setLineWrap(true);show.setAutoscrolls(true);text=new JTextField("",25);submit=new JButton("提交");connect=new JButton("连接");stop=new JButton("断开");write=new JPanel();read=new JPanel();setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));submit.addActionListener(new submitListener());connect.addActionListener(new connectListener());stop.addActionListener(new stopListener());write.setPreferredSize(new Dimension(300,70));write.add(text);write.add(connect);write.add(submit);write.add(stop);write.setBackground(Color.CYAN);read.setPreferredSize(new Dimension(300,375));read.setBackground(Color.yellow);read.add(show);add(read);add(write);}private class submitListener implements ActionListener {//提交按钮的监听器public void actionPerformed(ActionEvent event){String s=text.getText();port.write(s);SB=new String(port.readBuffer());show.append(SB);System.out.println("提交!");}}private class connectListener implements ActionListener {//连接按钮的监听器public void actionPerformed(ActionEvent event){port.open();timer.start();System.out.println("连接!");}}private class stopListener implements ActionListener{//断开按钮的监听器public void actionPerformed(ActionEvent event){port.close();timer.stop();System.out.println("断开!");}}private class timeListener implements ActionListener {//timer的监听器,用作轮询后台public void actionPerformed(ActionEvent event){if(port.dataComes()){SB=new String(port.readBuffer());port.dataHadRead();show.append(SB);repaint();System.out.println("读到数据!");}}}}SerialCommunication.java:import java.util.*;import java.io.*;import m.*;import mPortIdentifier;import java.awt.*;import m.SerialPortEvent.*;import m.SerialPortEventListener.*;public class SerialCommunication{String portName;CommPortIdentifier portId;InputStream inputStream;OutputStream outputStream;SerialPort serialPort;StringBuffer buffer;//串口读入缓存boolean recieve;//有新数据读入的标识public SerialCommunication(int n){//创建一个名字为"COM"+n 的串口通信对象buffer=new StringBuffer("");Enumeration portList=CommPortIdentifier.getPortIdentifiers();while (portList.hasMoreElements()){portId = (CommPortIdentifier)portList.nextElement();if (portId.getPortType()==CommPortIdentifier.PORT_SERIAL){if(portId.getName().equals("COM"+n)){portName="COM"+n;break;}}else{System.out.println("找不到串口!");}}}public void open(){//打开串口以及输入输出流recieve=false;try{serialPort=(SerialPort)portId.open("Serial Communication", 2000);}catch(PortInUseException e){System.out.println("端口正被占用!");}try{serialPort.setSerialPortParams(9600,SerialPort.DA TABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);} catch(UnsupportedCommOperationException e){System.out.println("不支持通信");}try{outputStream=serialPort.getOutputStream();inputStream=serialPort.getInputStream();}catch(IOException e){System.out.println("无法初始化输入输出流!");}try{serialPort.addEventListener(new serialPortListener());}catch (TooManyListenersException e) {System.out.println("监听器太多了!");}serialPort.notifyOnDataAvailable(true);}public void write(String s){//将参数字符串s转换成字节,并将此字节流写入到outputStream中buffer=new StringBuffer("SEND:"+s+"\n");try{outputStream.write(s.getBytes());}catch(IOException e){System.out.println("往串口写入数据时发生错误!");} }public void close(){try{outputStream.close();inputStream.close();}catch(IOException e){System.out.println("输入输出流关闭失败!");}serialPort.close();}public class serialPortListener implements SerialPortEventListener{//监听是否有新数据读入的监听器public void serialEvent(SerialPortEvent event){if(event.getEventType()==SerialPortEvent.DATA_A V AILABLE){//若有新数据传来,则将其转换成字符串,并加进缓存String readResult;byte[] readBuffer=new byte[20];try{while(inputStream.available()>0)inputStream.read(readBuffer);}catch(IOException e){System.out.println(e);System.out.println("从串口读取数据时发生错误!");readResult="";}readResult=new String(readBuffer);buffer=new StringBuffer("RECIEVE:"+readResult+"\n");recieve=true;//然后置新数据读入标识为真}}}public StringBuffer readBuffer()//返回缓存所存储的字符串{System.out.println(buffer);return(buffer);}public boolean dataComes()//判断串口是否有新数据读入{return(recieve);}public void dataHadRead()//此方法可以让外部的应用程序在读取一次数据后置标识为假{recieve=false;}}。

java串口通讯程序

java串口通讯程序

java串口通讯程序1、下载java Communications api开发包..|m是Sun公司提供的;用于开发平台独立的通讯应用程序的扩展API..2、将win32com.dll拷贝入C:\j2sdk1.4.2_04\bin3、将comm.jar拷贝入C:\j2sdk1.4.2_04\jre\lib\ext4、将m.properties拷贝入C:\j2sdk1.4.2_04\jre\lib5、编译CommTest.java文件import java.io.*;import java.util.*;import m.*;public class CommTest{public static void mainString args{SerialPort serialPort=null;DataOutputStream doutput=null;InputStream inputStream;CommPortIdentifier portId=null;String messageString="hello \n";try{portId=CommPortIdentifier.getPortIdentifier"COM1";}catchNoSuchPortException ne {System.out.println"ne"; ne.printStackTrace;}try{serialPort=SerialPort portId.open"TestComm"; 5;OutputStream output = serialPort.getOutputStream;doutput=new DataOutputStreamoutput;inputStream = serialPort.getInputStream;}catchPortInUseException ex {System.out.println"ex";ex.printStackTrace;}catchIOException ie {System.out.println"ie";ie.printStackTrace;//serialPort.close;}try {serialPort.setSerialPortParams9600; SerialPort.DATABITS_8; SerialPort.STOPBITS_1; SerialPort.PARITY_NONE;} catch UnsupportedCommOperationException e {}}try {doutput.writemessageString.getBytes;} catch IOException e {}}6、串口打开后;用InputStream和DataOutputStream读写就可以了..7、由于串口为共享资源;所以在设计程序时应采用单例模式..8、API在m下有13个类和接口;分别是4个接口CommDriver可负载设备the loadable device驱动程序接口的一部分CommPortOwnershipListener传递各种通讯端口的所有权事件ParallelPortEventListener传递并行端口事件SerialPortEventListener传递串行端口事件6个类CommPort通讯端口CommPortIdentifier通讯端口管理ParallelPort并行通讯端口ParallelPortEvent并行端口事件SerialPort RS-232串行通讯端口SerialPortEvent串行端口事件3个异常类NoSuchPortException当驱动程序不能找到指定端口时抛出PortInUseException当碰到指定端口正在使用中时抛出UnsupportedCommOperationException驱动程序不允许指定操作时抛出。

使用java的rxtx类解决串口通讯的具体操作步骤

使用java的rxtx类解决串口通讯的具体操作步骤

使用Java的RXTX类库进行串口通讯的基本步骤如下:1. 导入RXTX类库:在Java项目中,需要导入RXTX类库,以便使用串口通讯功能。

可以从RXTX官方网站下载适合您的操作系统的类库,并将其添加到Java项目中。

2. 打开串口连接:使用RXTX类库中的SerialPort类打开串口连接。

您需要指定串口的端口号以及波特率等参数。

例如:```javaSerialPort serialPort = new SerialPort("COM1");serialPort.openPort();serialPort.setParams(SerialPort.BAUDRATE_9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);```3. 发送数据:使用RXTX类库中的write()方法发送数据。

例如:```javabyte[] data = {0x01, 0x02, 0x03};serialPort.write(data, data.length);```4. 接收数据:使用RXTX类库中的read()方法接收数据。

例如:```javabyte[] buffer = new byte[1024];int length = serialPort.read(buffer, buffer.length);```5. 关闭串口连接:使用RXTX类库中的closePort()方法关闭串口连接。

例如:```javaserialPort.closePort();```以上是使用Java的RXTX类库进行串口通讯的基本步骤。

您可以根据实际需求进行相应的修改和扩展。

Java串口通信编程教程_hao

Java串口通信编程教程_hao

Win32 串口编程(一)(2009-08-16 16:28:13)标签:串口重叠i/o 分类:Windows翻译自:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/dnfiles/html/msdn_s erial.htm老外写的文章,虽比较全面,但很啰嗦,不如看各个函数的文档来得快。

为方便以后查阅,列出本文涉及的主要函数如下:CreateFile、ReadFile、WriteFile、GetOverlappedResult、WaitForSingleObject SetCommMask、WaitCommEventClearCommError、GetCommModemStatus、EscapeCommFunctionGetCommState、BuildCommDCB、SetCommState、SetCommTimeouts此外,新浪的博客系统限制文章最大长度为40000字节,只好把这篇文章分成几部分了。

0 简介本文仅关注在Windows NT和95间兼容的API。

Windows 95支持Telephony API(TAPI),但Windows NT 3.x不支持TAPI,所以本文不讨论它。

本文的示例程序MTTTY(Multithreaded TTY)使用了三个线程:一个进行内存管理的界面线程;控制所有写入操作的写入者线程;读取数据和处理端口状态改变的读取/状态线程。

示例采用了一些不同的堆来进行内存管理;还大量使用了同步方法来进行线程间通信。

1 打开端口使用CreateFile函数打开端口。

打开端口时有两种方法:重叠的和非重叠的。

下列代码片段以重叠方式打开端口:HANDLE hComm;hComm = CreateFile( gszPort,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);if (hComm == INV ALID_HANDLE_V ALUE)// error opening port; abortWin32 串口编程(二)(2009-08-16 16:39:32)标签:串口重叠i/o it 分类:Windows3 串口状态有两种获取通信端口状态的方法。

使用com0com0模拟串口通信,以及java的串口读写操作

使用com0com0模拟串口通信,以及java的串口读写操作

使⽤com0com0模拟串⼝通信,以及java的串⼝读写操作⾸先放⼀下我这次使⽤的⼯具com0com0是windows内核模式下的虚拟串⼝驱动程序。

可以创建虚拟串⼝对来连接两个COM端⼝在这⾥简单的介绍⼀下com0com0的使⽤⽅法⾸先,下载com0com-3.0.0.0-i386-and-x64-unsigned,解压缩并安装接下来我们就可以使⽤setup command prompt来进⾏模拟串⼝对了在这⾥⾸先介绍两个命令install PortName=串⼝名1 PortName=串⼝名2新建两个虚拟串⼝,并连接为串⼝对list列出⽬前所有的虚拟串⼝如果跳出更新驱动的提⽰可以暂时⽆视,不影响后续的操作。

另⼀个⼯具setup具有图形化界⾯,可以查看⽬前的串⼝对接下来介绍java编程的时候需要⽤到的两个jar包RXTXcomm.jarserialPortIO.jar同时,在使⽤这两个jar包进⾏java编程之前,我们要将mfz-rxtx-2.2-20081207-win-x64压缩包下的两个dll⽂件放到C:\Windows\System32下然后,这⾥是⼀个简单的串⼝读写的例⼦import gnu.io.SerialPort;import serialPort.SerialTool;public class Read {public static void main(String[] args) throws Exception{// TODO Auto-generated method stub//以波特率115200打开串⼝COM12SerialPort serialPort = SerialTool.openPort("COM12", 115200);SerialTool.addListener(serialPort, new SerialListener(serialPort));}}import java.util.Scanner;import gnu.io.SerialPort;import serialPort.SerialTool;public class Write {public static void main(String[] args) throws Exception {Scanner scan = new Scanner(System.in);String temp;//以波特率115200打开串⼝COM11SerialPort serialPort = SerialTool.openPort("COM11", 115200);while(scan.hasNext()){temp=scan.nextLine();SerialTool.sendToPort(serialPort, temp.getBytes());}}}import javax.swing.JOptionPane;import gnu.io.SerialPort;import gnu.io.SerialPortEvent;import gnu.io.SerialPortEventListener;import serialPort.SerialTool;public class SerialListener implements SerialPortEventListener {public SerialPort serialPort;public SerialListener(SerialPort serialPort){this.serialPort=serialPort;}public void serialEvent(SerialPortEvent serialPortEvent) {switch (serialPortEvent.getEventType()) {case SerialPortEvent.BI: // 10 通讯中断System.out.println("与串⼝设备通讯中断");break;case SerialPortEvent.OE: // 7 溢位(溢出)错误case SerialPortEvent.FE: // 9 帧错误case SerialPortEvent.PE: // 8 奇偶校验错误case SerialPortEvent.CD: // 6 载波检测case SerialPortEvent.CTS: // 3 清除待发送数据case SerialPortEvent.DSR: // 4 待发送数据准备好了case SerialPortEvent.RI: // 5 振铃指⽰case SerialPortEvent.OUTPUT_BUFFER_EMPTY: // 2 输出缓冲区已清空break;case SerialPortEvent.DATA_AVAILABLE: // 1 串⼝存在可⽤数据//System.out.println("found data");byte[] data = null;try {if (serialPort == null) {System.out.println("串⼝对象为空!监听失败");}else {data = SerialTool.readFromPort(serialPort); //读取数据,存⼊字节数组//System.out.println(new String(data));JOptionPane.showInputDialog(new String(data));//String dataOriginal = new String(data); //将字节数组数据转换位为保存了原始数据的字符串 }} catch (Exception e) {System.exit(0);}break;}}}。

Java串行通信类

Java串行通信类
R aC M 类 进 行 串行 通 信 的 测试 ,并 利 用 文 献 【] 的 工 具 进 ed O 3中
行 各种 格 式 的显 示 。
该 方 法 通 过 获 取 的 串 口 p ̄D 打 开 串 口 ,输 人 参 数 A p ol p・ N me 程 序 的 名 称 ,n ie表示 延迟 的毫 秒 数 。如 果 该 串 口正 a 是 Tm 在 被 使 用 ,则会 抛 出 Prn sE cpi 0t u exe tn异 常 ;如 果 打 开 串 口成 I o 功 ,则根 据 sr lo 续 获 取 串 口的 输 入 输 出 流 ,其 源 代 码 如 e a  ̄继 iP
维普资讯


眦删 O K&C 啊啊 NC O R 0 U I盯iN ………………… … …… …………… ……………, … … …… …. , ………
& 霸 l 蓓 嗡| . ' 葡 器| 廷

薯 玛 玉


在 N ten , e as 5 0环 境 下 实现 了通 用 的 串行 通信 类 ,可 以方便 地 发 送和 读取 任 何 字 B 节 ,并 给 出 了应 用 实例 和测 试 效 果 。该技 术广 泛 应 用 于基 于 Jv aa的嵌 入 式设 备 的
下: p bi it e S r gAp N me n Tme) u l c n Op n( ti p a ,jt i n n (
tv( r
二 、Op rtC eae OM 类
O ea C M 与 R aC M 类 的 包 名 均 为 Sr lot O e. prt O e ed O务 ea r i P 。 pr
1 p bi p rtC . u l O eae OM (n o I c itP a D,itn e ) n L n

Java程序与ZigBee串口通讯的实现

Java程序与ZigBee串口通讯的实现

实 现 了微 机 通 过 串 1 与 Z g e 模 块 的 全双 工 通 信 。 3 i e B 2Jv . a串 口通 信 程序 的编 写 a 21i a. / /包 介 绍 及 配 置 . a x1 1 1 v 31 0/
要 想 实 现 串 口 的读 写 功能 。 必 须 创 建输 入 流 和输 出流 。 还 由 srlot 象调 用 gt p t ra 方 法 可 以获 得 端 1的 字 节 输 ei Pr对 a eI uS em0 n t 3 入 流 . 用 g tu u t a 方 法 可 以获 得 端 口的 字 节输 出流 。 调 eO t t r m p Se 创
【 要】 摘 :在 简单介绍 Zg e 技 术的基础上 , i e B 论述 了在 Jv aa程序 中利用 jvxcIT开发 包中的类 实现微 机的 R - 3 aa. n I ol S22 串 口与 Zg e 模 块 通信 的方 法。 iB e 【 关键词 】 aaZg e ; :Jv ;i e 串行通信 ; vxem B j a. m a o
可 用 字 节 输 入 流 i 用 r dbt ̄b方 法 读 出 串 口 中 的数 n调 e ( e 1 a y
据 。实 现代 码 如 下 :
h [ e B f r e t2 ] m 】r d u e =n wb e 0 a y[ ;
t{ r y
到 ,O i.a 提 供 了 对 R 一 3 串行端 口通 讯 的支 持 , v Cm l i 1 r S 22 J a通过 a 该类 库 能 够极 大 地 简 化对 串 口的 操 作过 程 .另 外 两个 重 要 的文 件 : i3 c m. l 和 j a . m po et s i3 c m d wn 2o d l a x o m. p r e 。w n 2 o . v c r i Ⅱ提 供 了
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java串口通讯程序
1、下载java Communications api开发包。

|
是Sun公司提供的,用于开发平台独立的通讯应用程序的扩展API。

2、将拷贝入C:\j2sdk1.4.2_04\bin
3、将拷贝入C:\j2sdk1.4.2_04\jre\lib\ext
4、将拷贝入C:\j2sdk1.4.2_04\jre\lib
5、编译文件
import .*;
import .*;
import .*;
public class CommTest{
public static void main(String[] args){
SerialPort serialPort=null;
DataOutputStream doutput=null;
InputStream inputStream;
CommPortIdentifier portId=null;
String messageString="hello \n";
try{
portId=("COM1");
}catch(NoSuchPortException ne) {
"ne"); ();
}
try{
serialPort=(SerialPort) ("TestComm", 5);
OutputStream output = ();
doutput=new DataOutputStream(output);
inputStream = ();
}catch(PortInUseException ex) {
"ex");
();
}catch(IOException ie) {
"ie");
();
//();
}
try {
(9600, , , ;
} catch (UnsupportedCommOperationException e) {}
}
try {
());
} catch (IOException e) {}
}
6、串口打开后,用InputStream和DataOutputStream读写就可以了。

7、由于串口为共享资源,所以在设计程序时应采用单例模式。

8、API
在下有13个类和接口,分别是
4个接口
CommDriver可负载设备(the loadable device)驱动程序接口的一部分CommPortOwnershipListener传递各种通讯端口的所有权事件ParallelPortEventListener传递并行端口事件SerialPortEventListener传递串行端口事件
6个类
CommPort通讯端口
CommPortIdentifier通讯端口管理
ParallelPort并行通讯端口
ParallelPortEvent并行端口事件
SerialPort RS-232串行通讯端口
SerialPortEvent串行端口事件
3个异常类
NoSuchPortException当驱动程序不能找到指定端口时抛出PortInUseException当碰到指定端口正在使用中时抛出UnsupportedCommOperationException驱动程序不允许指定操作时抛出。

相关文档
最新文档