串口通讯-Java(Rxtx)

串口通讯-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,发送到底层。

藏。

7、图片上传后的效果图

六、软件设计的技巧和特色说明:

1、Java 2D编程与GUI组件技术灵活的结合

软件的界面整体架设风格,统一协调,内容丰富,采用了GUI组件中的swing组建编程技术,结合了java2D编程,将枯燥的数据转化成形象的图像,方便人的分析和理解,在实际应用中,我们可以准确的定位和指导目标的实际环境信息,实现的信息的处理与图像的反映相结合。

2、多线程与多缓冲技术的结合。

由于,我们这个软件的可以接受众多参考结点和盲结点发来的大量的错综复杂的数据,我们为了能够准确的整理这些数据,采用了多缓冲,对应多线程方式来解决,不同的线程处理不同的结点发来的数据,并将数据拆分,分类,转化成合适的格式。

下面是数据转化图:

曲线重绘的线程

温湿度数据参考节点集带有位置信息的参考节带有属性信息的盲节点集 带有位置信息的盲节点集

整合成即含有温度湿度信息又含有含有湿度信息的参考节点数据节点集合 整合成即含有属性又含有位置信息的盲节点数据节点集合

转化成图像显示在节点定位图中

转化成图像显示在曲线图中

温湿度曲线结点控制线程

参考节点定位读取线程

参考节点定位控制显示线程

盲节点定位读取线程

盲节点定位控制面板显示线程

结点定位的线程

结点定位的线程

底层数据接收线程

向底层发送数据的线程

多线程图

七、与同类型作品的比较。

与同类作品比较,软件增加了图像的控制功能,图像位置信息和温度信息结合的直观显示,并且可以结合实际的地图背景,使用这个软件。

如对该作品感兴趣:请联系:987062491

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

java调用coms端口串口通信的方法。 首先需要下到串口驱动。javacomm20-win32.zip 去sun的主页应该有下的。 在这个驱动中有comm.jar,https://www.360docs.net/doc/e52196937.html,m.properties,win32com.dll 这么3个重要的文件。 1、首先配置驱动,把https://www.360docs.net/doc/e52196937.html,m.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、串口读入写出流。

java串口通信程序(程序及注释)-13页word资料

Java的串口通信程序 首先需要到到sun主页下载串口通信的包,因为一般的jrd中不含有这个包的,有点补丁的意思。(CSDN上也有)。解压缩,为了使Java Communications API能够正确的与Windows系统交互,需要几个小的技巧。下面是三个很重要的文件,你可以从Sun的网站上下载得到 comm.jar win32com.dll javaxm.properties 对于JVM来说,要正确的识别串口,将这几个文件放在系统中合适的位置使很重要的。 comm..jar应该放在以下目录中 %JAVA_HOME%/lib %JAVA_HOME%/jre/lib/ext win32com.dll应该放在以下目录中 %windir%system32 javax.properties应该放在以下目录中 %JAVA_HOME%/lib

%JAVA_HOME%/jre/lib 你可以通过编译和运行Sun的例程来验证串口是否可以使用了。 JBuilder中安装安装Java Communication API (以下在JBuilder 2006中测试通过) 如果你使用JBuilder,那么还需要为JBuilder配置API。 一般来说,根据你的JBuilder配置,你也许需要将win32com.dll和javax.properties安装到相应的目录中,可以参照上述的目录。例如,如果你使用JBuilder附带的JVM的话,你也许需要将win32com.dll和javax.properties放到C:\Borland\JBuilder2006\jdk1.5的相应位置。 我使用的是JCreator,在打开Configure,然后点击option,选中jdk profile然后双击选中的jdk文件,选择edit,在弹出的窗口中选择串口通信包所在的文件(.jar文件),这样配置就算完成了。 以下分别是接收和发送程序,CSDN上搜的,省的自己写了:发送程序: import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*;

java串口通讯程序

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) {}

Java串口通信编程指南

Java串口通信编程指南

1. 概述 在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,不过在XP下还能使用。另外,也可以用开源的Rxtx实现串口通信,这里仅以Java Communication包,在Windows 平台实现串口通信进行说明。 2. 前期准备 2.1. 下载Java Communication包 ?下载地址如下:https://www.360docs.net/doc/e52196937.html,/Jolt/javacomm20-win32.zip。 ?如果是非Windows平台,请到Sun网站选择其他版本下载。地址如下: https://www.360docs.net/doc/e52196937.html,/download/products.xml?id=43208d3d 2.2. 配置 ?解压缩javacomm20-win32.zip ?把win32com.dll拷贝到{JAVA_HOME}\jre\bin ?把comm.jar拷贝到{JAVA_HOME}\jre\lib\ext ?把https://www.360docs.net/doc/e52196937.html,m.properties拷贝到{JAVA_HOME}\jre\lib ?set CLASSPATH={JAVA_HOME}\jre \lib\ext \comm.jar;%classpath%

3. 实现过程 主要步骤包括: ?获得串口标识 ?打开串口 ?设置串行端口通讯参数 ?获取输入(出)流 ?进行读写操作 3.1. 获得串口标识 指定串口的端口号,生成串口的标识类的实例。 https://www.360docs.net/doc/e52196937.html,mPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的并且选择一个端口便于开始。它包括如下功能: a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 管理事件显示在端口拥有者的中的状态改变。 示例代码如下: 代码: 3.2. 打开串口 示例代码如下: 代码:

Java串口通信详解

Java串口通信详解 序言 说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。这也难怪,毕竟就像某个著名NBA 球员说的那样:“我还要养家,所以千万美元以下的合同别找我谈,否则我宁可待业”。是啊,支持开源的人也要养家,收点钱也不过分。要想既不花钱又学到知识就只能借助网络和了,我只是想抛砖引玉,为开源事业做出点微薄共献,能为你的工程解决哪怕一个小问题,也就足够了。 虽然我的这个系列介绍的东西不是什么Web框架,也不是什么开源服务器,但是我相信,作为一个程序员,什么样的问题都会遇到。有时候越是简单的问题反而越棘手;越是小的地方就越是找不到称手的家伙。只要你不是整天只与“架构”、“构件”、“框架”打交道的话,相信我所说的东西你一定会用到。 1串口通信简介 1.1常见的Java串口包 1.2串口包的安装(Windows下) 2串口API概览 https://www.360docs.net/doc/e52196937.html,mPort https://www.360docs.net/doc/e52196937.html,mPortIdentifier https://www.360docs.net/doc/e52196937.html,m.SerialPort 2.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并行端口通讯的支持。RS-232-C(又称EIA RS-232-C,以下简称RS232)是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。RS232是一个全双工的通讯协议,它可以同时进行数据接收和发送的工作。 1.1 常见的Java串口包 目前,常见的Java串口包有SUN在1998年发布的串口通信API:comm2.0.jar(Windows 下)、comm3.0.jar(Linux/Solaris);IBM的串口通信API以及一个开源的实现。鉴于在Windows下SUN的API比较常用以及IBM的实现和SUN的在API层面都是一样的,那个开源的实现又不像两家大厂的产品那样让人放心,这里就只介绍SUN的串口通信API在Windows 平台下的使用。 1.2 串口包的安装(Windows下) 到SUN的网站下载javacomm20-win32.zip,包含的东西如下所示:

Java串口通信编程指导

Java串口通信编程指导 Java串口通信编程

概述 在java中,利用Java Communication包能够操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,只是在XP下还能使用。另外,也能够用开源的Rxtx实现串口通信,那个地点仅以Java Communication包,在Windows平台实现串口通信进行讲明。 前期预备 下载Java Communication包 下载地址如下:https://www.360docs.net/doc/e52196937.html,/Jolt/javacomm20-win32.zip。 配置 解压缩javacomm20-win32.zip 把win32com.dll拷贝到{JA V A_HOME}\jre\bin 把comm.jar拷贝到{JA V A_HOME}\jre\lib\ext set 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串口通信控制LED显示数据的实例

一个通过java串口通信控制LED显示数据的实例 在很多应用程序中都需要用到pc机与外部设备如:嵌入式系统、传感器、开关 设备等进行数据通讯。其中,最常用的接口就是RS-232串口和并口。SUN的 CommAPI分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。 至于java串口通讯的配置以及通讯模式在sun的demo以及网上都有很多具体的 实例。 下面是我在开发一个叫号功能模块时通过串口通信来控制LED显示的实例,由于 第一次进行相关的开发,看似一个非常简单的功能在实际开发中却遇到了一些问 题,希望本人的解决方式能够对大家有所帮助,也希望大家能够提出更好的解决 方式。 先看一下LED显示屏厂商提供的通讯协议: ---遥控单双色、单双行、混合屏 一、每一次对任一特定地址发送信息由内码帧(7f/7e),数码帧 (6f/6e),定时帧(5f),时间帧(4f)中的一种或多种构成,结束 时发送一结束帧。 二、帧结构:每帧由84字节构成。 1、内码帧:一幕由一起始帧和零或多个中间帧组成,一次 发送可有多幕。 1)起始帧:地址(1字节)+帧控制7F(1字节) +幕号(1字节)+COMMAND(8字节) +内码/ASCII(73字节) 2)中间帧:地址(1字节)+帧控制7E(1字节)+ 幕号(1字节)+COMMAND(8字节)+内码/ASCII (73字节) 3)COMMAND: 前4字节未定义,后4字节依次为动画(0~4),移入及移出(各16种),速度(0~255),追加 (D3连续、D2停止、D0闪烁、D4时间、D6暂停、 D7动画) 4)内码/ASCII结构: a、内码4字节,依次为控制字节(D7宽体/正常体、D4绿色、D5红色、D3粗体、D2细体反白、D1 粗体反白、D0细体),内码高位,内码低位,未用 b、ASCII2字节,依次为控制字节(D7宽体/正常体、D5绿色、D4红色、D3粗体、D2细体反白、D1粗体 反白、D0细体),ASCII码 2、数码帧:由一起始帧和零或多中间帧组成。 1)起始帧:地址(1字节)+帧控制6F(1字节)+ 数据(82字节)

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驱动包这个类的装载更新一下即 https://www.360docs.net/doc/e52196937.html,/serialcomm.htm 利用Java实现串口全双工通讯 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。 本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java(用来保存从串口所接收数据的缓冲区), ReadSerial.java (从串口读取数据的程序)。另外本类库还提供了一个例程SerialExample.java 作为示范。在下面的内容中将逐一对这几个部分进行详细介绍。 1. SerialBean SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体介绍如下: 本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。PortID = 1 表示COM1,PortID = 2 表示COM2,由此类推。 本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600, N, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。

java串口通信

小技巧:如何辨别TXD和RXD端口? 搞电子的人手边应该常备一个电表,用来测测电压,电阻什么的会很有用。你只要分别测一下RS232端口的2--5或3--5针脚之间的电压,通常TXD针脚与GND之间会有 3~15V左右的负电压,表示它是TXD针脚。 安装JavaCommunicationsAPI Sun的J2SE中并没有直接提供以上提到的任何一种串行通讯协议的开发包,而是以独立的jar包形式发布在https://www.360docs.net/doc/e52196937.html,网站上(从这里下载)----即comm.jar,称之为Javatm CommunicationsAPI,它是J2SE的标准扩展。comm.jar并不是最近才有,早在1998年时,sun就已经发布了这个开发包。comm.jar分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。目前sun发布的comm.jar只有Windows和Solaris平台两个版本,如果你需要Linux平台下的,可以在 https://www.360docs.net/doc/e52196937.html,/~kevinh/linuxcomm.html找到。 在使用comm.jar之前,必须知道如何安装它。这也是困扰许多初学javaRS232通讯者的一个难题。如果我们电脑上安装了JDK,它将同时为我们安装一份JRE(Java RuntimeEntironment),通常我们运行程序时都是以JRE来运行的。所以以下的安装适用于JRE。如果你是用JDK来运行程序的,请将相应的改成。 下载了comm.jar开发包后,与之一起的还有两个重要的文件,win32com.dll和https://www.360docs.net/doc/e52196937.html,m.properties。comm.jar提供了通讯用的javaAPI,而win32com.dll提供了供comm.jar调用的本地驱动接口。而https://www.360docs.net/doc/e52196937.html,m.properties是这个驱动的类配置文件。首先将comm.jar复制到\lib\ext目录。再将win21com.dll复制到你的RS232应用程序运行的目录,即user.dir。然后将https://www.360docs.net/doc/e52196937.html,m.properties复制到\lib目录。 通讯前的准备 如果你手头上没有现成的提供了标准RS232串口的设备,你可以将自己的电脑模拟成两台不同的串口设备。通常电脑主机后面的面板提供了两个9针的串口,请将这两个串口的2,3,5脚按前面介绍的方法连接。电子市场都有现成的连接头卖,请不要买那种封装的严严实实的接头,而要买用螺丝封装可以拆开的连接头,这样可以方便自己根据需要连接各 个针脚。 Comm API基础 我无意于在此详细描述Comm API每个类和接口的用法,但我会介绍CommAPI的 类结构和几个重要的API用法。 所有的comm API位于https://www.360docs.net/doc/e52196937.html,m包下面。从CommAPI的javadoc来看,它 介绍给我们的只有区区以下13个类或接口: https://www.360docs.net/doc/e52196937.html,mDriver https://www.360docs.net/doc/e52196937.html,mPort https://www.360docs.net/doc/e52196937.html,m.ParallelPort

java串口通信

java串口通信API说明 java串口通信 Java提供了 CommunicationAPI(包含于https://www.360docs.net/doc/e52196937.html,m包中)用于通过与机器无关的方式,控制各种外部设备。Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的。因此,必须先在SUN公司网站的Java站点(https://www.360docs.net/doc/e52196937.html,)上下载这个扩展类库。 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进行详细的介绍。

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);

java 串口通讯实例

java 串口通讯实例(转) 2010-01-28 12:33 java串口通讯 最近在搞C的串口通讯,C里面没有线程的概念,所以C对串口的读写只能在一个进程里面,这样 如果串口的缓存有问题,就会导致报告丢失(正好是我们遇到的),我们来看看支持线程的java是如何来解决这个问题的。 本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。 本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java (用来保存从串口所接收数据的缓冲区), ReadSerial.java (从串口读取数据的程序)。另外本类库还提供了一个例程SerialExample.java 作为示范。在下面的内容中将逐一对这几个部分进行详细介绍。 SerialBean SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体介绍如下: public SerialBean(int PortID) 本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。PortID = 1 表示COM1,PortID = 2 表示COM2,由此类推。 public int Initialize() 本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600, N, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。 public String ReadPort(int Length) 本函数从串口(缓冲区)中读取指定长度的一个字符串。参数Length指定所返回字符串的长度。 public void WritePort(String Msg) 本函数向串口发送一个字符串。参数Msg是需要发送的字符串。 public void ClosePort() 本函数停止串口检测进程并关闭串口。 SerialBean的源代码如下: package serial; import java.io.*; import java.util.*; import https://www.360docs.net/doc/e52196937.html,m.*; /** *

java串口api介绍

java串口API java串口API Java提供了CommunicationAPI(包含于https://www.360docs.net/doc/e52196937.html,m包中)用于通过与机器无关的方式,控制各种外部设备。Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的。因此,必须先在SUN公司网站的Java站点(https://www.360docs.net/doc/e52196937.html,)上下载这个扩展类库。 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.2CommPortIdentifier类 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.3SerialPort类 SerialPort关于串口参数的静态成员变量 成员变量说明成员变量说明成员变量说明 DATABITS_5数据位为5STOPBITS_2停止位为2PARITY_ODD奇检验

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、WaitCommEvent ClearCommError、GetCommModemStatus、EscapeCommFunction GetCommState、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; abort Win32 串口编程(二)(2009-08-16 16:39:32) 标签:串口重叠i/o it 分类:Windows 3 串口状态 有两种获取通信端口状态的方法。第一种方法是设置事件掩码,当指定事件发生时应用程序会收到通知。SetCommMask函数用于设置事件掩码,WaitCommEvent用于等待指定的事件发生。它们与16位Windows中的SetCommEventMask和EnableCommNotification类似,只是它们不发送WM_COMMNOTIFY消息。第二种方法是不时地调用另一些状态函数来获取通信端口的状态。当然,轮询是低效的,不建议使用。 3.1 通信事件 通信事件在使用通信端口时可能随时发生。接收通信事件需要两个步骤: 用SetCommMask设定需要接收通知的事件

java串口通讯程序

java 串口通讯程序 1、下载java Communications api 开发包。| https://www.360docs.net/doc/e52196937.html,m是Sun公司提供的,用于开发平台独立的通讯应用程序的扩展 API 。 2、将win32com.dll 拷贝入C:\j2sdk1.4.2_04\bin 3、将comm.jar 拷贝入C:\j2sdk1.4.2_04\jre\lib\ext 4、将https://www.360docs.net/doc/e52196937.html,m.properties 拷贝入C:\j2sdk1.4.2_04\jre\lib 5、编译CommTest.java 文件 import java.io.*; import java.util.*; import https://www.360docs.net/doc/e52196937.html,m.*; 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=CommPortIdentifier.getPortIdentifier("COM1"); }catch(NoSuchPortException ne) { System.out.println("ne"); ne.printStackTrace(); } try{ serialPort=(SerialPort) portId.open("TestComm", 5); OutputStream output = serialPort.getOutputStream(); doutput=new DataOutputStream(output); inputStream = serialPort.getInputStream(); }catch(PortInUseException ex) { System.out.println("ex"); ex.printStackTrace(); }catch(IOException ie) { System.out.println("ie"); ie.printStackTrace(); //serialPort.close(); } try { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} } try { doutput.write(messageString.getBytes()); } catch (lOException e) {} } 6、串口打开后,用InputStream和DataOutputStream读写就可以了。 7、由于串口为共享资源,所以在设计程序时应采用单例模式。 8、A PI 在https://www.360docs.net/doc/e52196937.html,m下有13个类和接口,分别是

java串口通信代码

利用java实现串口全双工通讯 (投稿) qingye jiang (john) smth id: qyjohn e-mail : qjiang@https://www.360docs.net/doc/e52196937.html, 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的java类库,该类库大大的简化了对串口进行操作的过程。 本类库主要包括:serialbean.java (与其他应用程序的接口), serialbuffer.java (用来保存从串口所接收数据的缓冲区), readserial.java (从串口读取数据的程序)。另外本类库还提供了一个例程serialexample.java 作为示范。在下面的内容中将逐一对这几个部分进行详细介绍。 1. serialbean serialbean是本类库与其他应用程序的接口。该类库中定义了serialbean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体介绍如下: public serialbean(int portid) 本函数构造一个指向特定串口的serialbean,该串口由参数portid所指定。 portid = 1 表示com1,portid = 2 表示com2,由此类推。 public int initialize() 本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否 则返回-1。初始化的结果是该串口被serialbean独占性使用,其参数被设置 为9600, n, 8, 1。如果串口被成功初始化,则打开一个进程读取从串口传 入的数据并将其保存在缓冲区中。 public string readport(int length) 本函数从串口(缓冲区)中读取指定长度的一个字符串。参数length指定所返 回字符串的长度。 public void writeport(string msg) 本函数向串口发送一个字符串。参数msg是需要发送的字符串。 public void closeport() 本函数停止串口检测进程并关闭串口。

Java串口通信

Java串口通信 1.Java串口通信实现 在Java中,利用Java Communication API可以操作计算机的串口,Jar包的名称为comm.jar,但是这个包只合适于Windows平台的操作系统,其它的操作系统需要其它的Jar包。Comm.jar包由Sun公司发布,分别提供了对常用的RS232串行端口和IEEE1284并行端口通信的支持。Java Communication API和环境变量配置所需要的文件我已经打包后放在同文档的目录下,名称为:javacomm20-win32.zip。 1.1.通信前的准备工作 在实现与计算机串口通信之前,需要对Java作一些相应的环境变量配置,配置步骤很简单,只需三步即可完成。 win32com.dll拷贝到{JAVA_HOME}\jre\bin 把comm.jar拷贝到{JAVA_HOME}\jre\lib 把https://www.360docs.net/doc/e52196937.html,m.properties拷贝到{JA V A_HOME}\jre\lib 说明:为什么这些文件都是放到jre路径下呢?这是因为通常运行“Java MyApp” 的时候,都是由JRE下的虚拟机启动的。只有放在“这里”,虚拟机才能顺利的找到相应的文件,不然可能会提示找不到串口的错误信息。 1.2.Java Communication API的大概认识 这里没有详细描述CommAPI每个类和接口的用法,只介绍案例代码中有用到的主要类和接口的用法,这也是CommAPI最基础的类结构。下面截图是CommAPI的所有类:

https://www.360docs.net/doc/e52196937.html,mPort 这是用于描述被底层系统支持的端口的抽象类,通常常用的端口有串口和并口,该抽象类包含了IO的控制方法,这些方法对于所有不同的通信端口来说都是通用的。 SerialPort和ParallelPort是它的两个子类,分别表示串口和并口。两都对于各自底层的物理端口有着不同的控制方法。这里暂时只关注SerialPort类。 https://www.360docs.net/doc/e52196937.html,mPortIdentifier 这个类主要用于对串口进行管理和设置,是对串口进行访问控制的核心类。常用的方法有: ◆确定是否有可用的通信端口 ◆为IO操作打开通信端口 ◆决定端口的所有权 ◆处理端口所有权的争用 ◆管理端口通信引发的事件(Event) https://www.360docs.net/doc/e52196937.html,m.SerialPort 这个类描述了RS-232串口通信端口的底层类,它定义了串口通信所需要的基本功能。例如,通过它,用户可以直接对串口进行读、写及参数设置的工作。一个SerialPort 对象对应着一个端口。 1.3.串口通信的实现过程 串口通信的主要步骤包括: ◆获得串口标识 ◆打开串口 ◆设置串行端口通讯参数 ◆获取输入(出)流 ◆进行读写操作

相关文档
最新文档