导航:首页 > 编程语言 > java串口程序

java串口程序

发布时间:2025-08-01 11:07:51

‘壹’ 如何在java中实现串口读写数据

实现Java串口读写数据,可以借助rxtx库的功能。在开始之前,需要确保计算机环境已正确配置,以避免执行过程中出现错误。配置环境相对简单,只需将rxtxSerial.dell和rxtxParallel.dell这两个扩展文件复制到C盘的System32文件夹中即可。

接下来,为了实现Java串口读写功能,可以利用RXTXComm的类库,包括SerialPort类进行串口通信操作。在进行串口读取操作时,首先需要创建一个SerialPort对象,并初始化该对象的属性,如波特率、数据位、停止位等。然后,调用该对象的read方法进行数据读取操作。

在实现串口写入数据时,同样需要创建SerialPort对象,并初始化其属性。之后,通过调用write方法将数据发送至串口。在发送数据前,务必确保串口已正确打开。否则,发送操作将失败。

在代码实现过程中,还需要注意对异常情况的处理。例如,当串口无法打开或读取数据失败时,应该抛出相应的异常并进行错误处理,以确保程序的稳定运行。

此外,为了提高串口通信的效率和可靠性,可以采用多线程的方式进行数据的并发读写操作。通过创建多个线程,分别负责串口的读取和写入任务,可以有效提升程序的响应速度和处理能力。

最后,编写完串口读写功能的代码后,不要忘记在程序的最后进行资源释放,包括关闭串口连接等操作,以避免资源泄漏问题。在进行串口读写数据时,遵循以上步骤和注意事项,可以实现Java中串口数据的有效读写。

‘贰’ Springboot+RXTX for JAVA 实现串口通信

下载RXTX可以从官网或者Fizzed网站,官网没有64位的支持,但在Fizzed中可以找到2.2版的64位和32位的Windows和linux版本。

1. Windows下的串口调试

将rxtxParallel.dll和rxtxSerial.dll复制到%JAVA_HOME%安装目录的bin目录下,同时也要复制到%JAVA_HOME%安装目录的jre/bin目录下(在eclipse开发时调用,减少麻烦)。然后将RXTXcomm.jar复制到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar(开发时直接导入)。

2. Linux下的串口调试

首先确定Linux处理器型号,然后选择对应的RXTX的Linux版本。

例如,如果处理器是i386,则将Linux i686版本中的两个os文件复制到系统%JAVA_HOME%/jre/lib/i386(即JDK目录中的系统文件夹)。将RXTXcomm.jar复制到%JAVA_HOME%/jre/lib/ext文件夹。代码不变,即可运行使用。

在实际开发中,由于使用树莓派测试,树莓派使用Raspbian系统(使用uname -a命令可查看系统内核信息)。Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux。处理器型号为armv6l,在下载的RXTX工具包中并没有这种系统版本,实际测试中,找到的RXTX工具包都不能使程序运行,均报出系统位数不符。

又找到另一种处理方法,可以直接在系统中make编译RXTX源码安装。

最新的RXTX稳定版本是rxtx 2.1-7r2。首先用wget获取源码包并解压

如果直接MAKE编译安装,可能会遇到以下两种错误:

错误1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:135: error: ‘UTS_RELEASE’ undeclared (first use in this function)

这是由于version.h中缺少’UTS_RELEASE’信息,需要手工添加。先获取当前系统的版本信息,然后在/usr/include/Linux/version.h中添加。

3.10.24+为上一步中获得的版本号

错误2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS485.la is not a directory

这个错误会出现在JDK1.6及以上的运行环境下,需要对configure文件进行修改。在configure文件中找到这一行,在后边添加上当前JDK的版本号即可,如

完成以上两项修改后,就可以正常编译安装了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-Oracle-armhf/jre/lib/arm 则说明RXTX安装已经成功。之后执行

注意:可能会有权限不足的情况,需要chmod 777 test.c操作

至此使用RXTX框架的串口编程代码就可以在树莓派使用了。

(这里需要注意的是,在Linux系统中,大部分的串口名称为/dev/ttyS*,但在特殊环境下如本次使用的raspberrypi,使用RXTX方法获得串口集合是不成功的,原因是RXTX本身源码问题,找了好久的原因,终于在RXTX官网上找到了解释:

即RXTX本身支持的Linux串口搜索只限制为/dev/ttyS*等,其他名称的并不能支持,而raspberrypi中的串口名称为/dev/ttyAMA*,故无法找到系统串口。这种情况下有两种解决方案:

1.修改源码:参考官网故障排除 rxtx.qbang.org/wiki/ind...

源码RXTXCommDriver.java文件中518行开始,为Linux系统环境下的串口名称查找,添加所需串口名即可(如ttyAMA)(此种方法需要重新编译安装)

2.将串口文件进行映射,即使用命令 ln -s /dev/ttyAMA0 /dev/ttyS0,即可找到/dev/ttyS0映射串口,也就对应了/dev/ttyAMA0实际串口。

‘叁’ java实现串口通信代码

在Java中实现串口通信涉及一系列步骤。首先,获取可用的串口列表,通过调用CommPortIdentifier.getPortIdentifiers()方法获取所有可用端口。接下来,遍历这些端口,检查每个端口的类型是否为串口。这里我们关注的是名为"COM1"的串口,因此如果发现此端口,将立即退出循环。对于其他串口,将忽略它们,设置portId为null。

一旦找到并确认了正确的串口,使用portId.open("Serial_Communication", 1000)方法以1000毫秒的超时时间打开串口。接着,通过调用setSerialPortParams方法,设置串口参数。具体参数包括波特率为9600,数据位为8位,停止位为1位,以及无奇偶校验。

打开串口后,可以通过serialPort.getInputStream()和serialPort.getOutputStream()分别获取串口的输入流和输出流。接下来,可以在此输入输出流上执行数据的读取和发送操作。

当通信操作完成后,需要关闭这些流和串口。具体操作包括关闭输入流in.close(),关闭输出流out.close(),以及最后关闭串口serialPort.close()。整个过程中,异常处理也非常重要,通过try-catch块来捕捉并处理可能出现的PortInUseException、和IOException等异常。

为了确保程序的健壮性和可靠性,合理地设置和处理这些异常是至关重要的。通过以上步骤,Java程序可以成功实现与串口设备的通信,从而进行数据的读取和发送。

‘肆’ 在java的web程序中怎么使用串口通讯

最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示 x0dx0a 思路: x0dx0a1.为了从RS485读取数据,由于暂时没有硬件设备,系统是win7,故采用Virtual Serial Port Drive(VSPD)这块虚拟串口软件代替。并下载sscom32.exe模拟串口通信软件。 x0dx0ax0dx0a2. 要想实现串口通信,用Java实现串口通信(windows系统下),需要用到sun提供的明散串javacomm20-win32.zip。其中要用到三个文件,配置如下: x0dx0acomm.jar放置虚段到 JAVA_HOME/jre/lib/ext; x0dx0awin32com.dll放置到 JAVA_HOME/bin; x0dx0ajavax.comm.properties 两个地方都要放 x0dx0ajre/lib(也就是在JAVA文件夹下的jre),JAVA_HOME/jre/lib下 x0dx0a这个配置在我电脑上测试成功,也许不需要这样麻烦。注意的是,如果你使用myeclipse,因为它自带jre,你需要在它所在的jre相应位置放dll以及properties文件。激誉氏 x0dx0ax0dx0a是不是感觉这个很麻烦,还有windows的限制。后来我们下载rxtx这款开源包代替了刚才的comm。不仅windows下可以,linux下也可以。使用方法很简单,配置如下: x0dx0ax0dx0aRXTXcomm.jar放到JAVA_HOME/jre/lib/ext x0dx0arxtxSerial.dll放到JAVA_HOME/bin x0dx0a如果你使用myeclipse工具,你需要把rxtxSerial.dll放到它自带的jre里。 x0dx0ax0dx0a3.新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因为javacomm20-win32.zip包里有样例SimpleRead.java,可以通过这个例子测试串口是否正确 x0dx0ax0dx0a4.接收数据正确后,根据传送接收双方的协议,采用CRC循环校验,根据传输的一方的校验函数判定是否是正确传输 x0dx0ax0dx0a5.把正确结束的数据解析,查看自己指定的通讯规则,然后解析 x0dx0ax0dx0a6.插入数据库,jdbc插入 x0dx0ax0dx0a7.数据统计,定时统计每小时,每天,每月,每年的平均值,采用quartz服务来实现。 x0dx0ax0dx0a8.建立web工程,采用hibernate3,spring3,dwr技术把数据库数据动态显示,图表采用jfreechart,以及AJAX的运用

‘伍’ java实现串口通信代码

public static void process() {
try {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)//如果端口类型是串口则判断名称
{
if(portId.getName().equals("COM1")){//如果是COM1端口则退出循环
break;
}else{
portId=null;
}
}
}
SerialPort serialPort = (SerialPort)portId.open("Serial_Communication", 1000);//打开串口的超时时间为1000ms
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//设置串口速率为9600,数据位8位,停止位1们,奇偶校验无
InputStream in = serialPort.getInputStream();//得到输入流
OutputStream out = serialPort.getOutputStream();//得到输出流

//进行输入输出操作

//操作结束后
in.close();
out.close();
serialPort.close();//关闭串口

} catch (PortInUseException e) {
e.printStackTrace();
} catch ( e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

‘陆’ 在java的web程序中怎么使用串口通讯

方法如下:

  1. 新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因为javacomm20-win32.zip包里有样例SimpleRead.java,可以通过这个例子测试串口是否正确。

  2. 接收数据正确后,根据传送接收双方的协议,采用CRC循环校验,根据传输的一方的校验函数判定是否是正确传输。

  3. 把正确结束的数据解析,查看自己指定的通讯规则,然后解析。

  4. 插入数据库,jdbc插入。

  5. 数据统计,定时统计每小时,每天,每月,每年的平均值,采用quartz服务来实现。

  6. 建立web工程,采用hibernate3,spring3,dwr技术把数据库数据动态显示,图表采用jfreechart,以及AJAX的运用

阅读全文

与java串口程序相关的资料

热点内容
vsstudio如何编写c语言程序并编译 浏览:391
服务器安装虚拟机怎么做 浏览:324
为什么苹果没有显示app 浏览:36
怎么样编译app 浏览:643
手机pdf文件怎么编辑 浏览:635
汽车换机油用什么app 浏览:295
包头养老保险在什么app缴费 浏览:850
程序员对语数英的要求 浏览:392
大蕃号app更新如何安装 浏览:352
为什么知乎网页版老是让我打开app 浏览:79
压缩袋团购 浏览:87
安徽省鸿申压缩机有限公司 浏览:840
有什么app可以远程操控手机 浏览:866
清史稿译pdf 浏览:955
你不知道程序员冷知识 浏览:215
海康威视摄像头你的视频已加密 浏览:98
程序员三年薪资 浏览:442
寻仙文字游戏源码 浏览:914
java编程方向 浏览:420
单行PDF 浏览:642