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读写串⼝数据你了解多少⽬录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串⼝通信,由于没有相应的串⼝硬件,选了⼀款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串口通信详解序言说到开源,恐怕很少有人不挑大指称赞。
学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。
然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。
这也难怪,毕竟就像某个著名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开发的一种实用串行通信程序

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 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串口通信为题的案例,介绍其实现方法和应用场景。
1. 串口读取数据通过Java编程语言实现串口读取数据的功能,可以使用Java的串口通信库,如RXTX、JavaComm等。
首先需要打开串口,并设置串口参数,然后通过监听串口数据的方式实时读取串口传入的数据。
这个案例适用于需要实时监控串口设备数据的应用场景,比如环境监测。
2. 串口发送数据通过Java编程语言实现串口发送数据的功能,可以使用Java的串口通信库。
首先需要打开串口,并设置串口参数,然后通过写入数据的方式将数据发送到串口设备。
这个案例适用于需要向串口设备发送指令或数据的应用场景,比如控制外部设备。
3. 串口数据解析通过Java编程语言实现串口数据解析的功能,可以将从串口读取的原始数据进行解析,提取出有用的信息。
可以根据数据格式进行解析,比如按照特定的协议解析数据。
这个案例适用于需要对串口设备传输的数据进行处理和分析的应用场景。
4. 串口数据存储通过Java编程语言实现串口数据存储的功能,可以将从串口读取的数据保存到本地文件或数据库中。
可以根据需求选择适当的存储方式,比如文本文件、二进制文件或数据库。
这个案例适用于需要对串口设备传输的数据进行长期存储和分析的应用场景。
5. 串口数据转发通过Java编程语言实现串口数据转发的功能,可以将从一个串口读取的数据转发到另一个串口。
可以实现串口设备之间的数据交互,比如串口设备之间的数据通信或设备之间的数据同步。
这个案例适用于需要多个串口设备之间进行数据交互的应用场景。
6. 串口数据监控通过Java编程语言实现串口数据监控的功能,可以监控串口设备的状态和传输数据。
可以实时显示串口设备的连接状态、波特率、数据位、停止位等信息,并实时显示串口传输的数据。
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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驱动程序不允许指定操作时抛出。