java 上位机_java实现上位机与下位机串口通信

本文介绍了如何使用Java实现上位机与下位机之间的RS485串口通信。首先,解释了上位机和下位机的概念,然后详细阐述了通过Java进行串口通信的步骤,包括下载支持串口通信的jar包,配置串口参数,以及实现串口的打开、设置和数据的发送与接收。此外,还提供了关键代码示例和注意事项,如检查可用串口、设置波特率、数据位、停止位和校验位。最后,提出了程序改进的方向,如添加界面、使用线程和数据存储等。
摘要由CSDN通过智能技术生成

串口通信是在工程应用中很常见。在上位机与下位机通讯过程中常通过有线的串口进行通信,在低速传输模式下串口通信得到广泛使用。在说个之前先来简单解释一下上位机与下位机的概念。

上位机与下位机

通常上位机指的是PC,下位机指的是单片机或者带微处理器的系统。下位机一般是将模拟信号经过AD采集将模拟量转换为数字量,下位机再经过数字信号处理以后将数字信号通过串口发送到上位机,相反上位机可以给下位机发送一些指令或者信息。常见的通信串口包括RS232、RS485、RS422等。这些串口只是在电平特性有所不同,在上位机与下位机进行数据通信时可以不考虑电平特性,而且现在在硬件上有各种转接接口,使用起来也很方便。

当然在通常做简单的串口UART实验时我们可以使用各种各样的串口助手小软件,但是这些串口小工具有时候并不能很好满足需求,那就尝试着自己写一套属于自己的串口助手?接下来说说如何使用java实现上位机与下位机之间的RS485串口通信。

step 1: 下载支持java串口通信的jar包,这里给出下载地址:

http://files.cnblogs.com/files/Dreamer-1/mfz-rxtx-2.2-20081207-win-x86.zip(32bit 下载地址)

http://files.cnblogs.com/files/Dreamer-1/mfz-rxtx-2.2-20081207-win-x64.zip (64位下载地址)

对以上的版本解释一下,因为本人在这里踩了一个坑,32位或者64位是与ecplise/myecplise一致,要是版本弄错了会报错。

step2:下载了那个jar包解压后会出现一下内容:

157e14396f3b?from=singlemessage

这个文件夹里面需要注意两点:jar包RXTXcomm需要导入到java工程里面去。另外就是需要将rxtxParallel.dll与rxtxSerial.dll复制在安转JDK的bin文件下和jre的bin文件夹下面,这样才能保证能够正常使用这个jar包。以下是将两个dll文件复制的位置:

C:\Program Files (x86)\Java\jdk1.8.0_25\bin\

C:\Program Files (x86)\Java\jdk1.8.0_25\jre\bin\

怎么讲jar包导入java工程里面就是比较简单的操作,可以参考:http://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html

step 3:RXTXComm Api如何使用

接下来就是使用该导入jar包进行编码实现串口通信的功能了。在编码之前先来理一理串口通信的主要环节,本人总结主要分为以下几点:

1)计算机首先需要进行硬件check,查找是否有可用的COM端口,并对该对端口进行简要判断,包括这些端口是否是串口,是否正在使用。以下是部分主要代码:

/*类方法 不可改变 不接受继承

* 扫描获取可用的串口

* 将可用串口添加至list并保存至list

*/

public static final ArrayList uartPortUseAblefind()

{

//获取当前所有可用串口

//由CommPortIdentifier类提供方法

Enumeration portList=CommPortIdentifier.getPortIdentifiers();

ArrayList portNameList=new ArrayList();

//添加并返回ArrayList

while(portList.hasMoreElements())

{

String portName=portList.nextElement().getName();

portNameList.add(portName);

}

return portNameList;

}

以下是测试类的测试实例:

ArrayList arraylist=UARTParameterSetup.uartPortUseAblefind();

int useAbleLen=arraylist.size();

if(useAbleLen==0)

{

System.out.println("没有找到可用的串口端口,请check设备!");

}

else

{

System.out.println("已查询到该计算机上有以下端口可以使用:");

for(int index=0;index

{

System.out.println("该COM端口名称:"+arraylist.get(index));

//测试串口配置的相关方法

}

}

2)通过计算机对串口的自检后,可以对串口参数进行简单的配置。常见的配置可以从常见的串口助手中得到启发。以下是一个串口助手的人机交互界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值