100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 上位机和MYSQL连接_上位机下位机串口通信设计详解

上位机和MYSQL连接_上位机下位机串口通信设计详解

时间:2023-09-16 00:46:52

相关推荐

上位机和MYSQL连接_上位机下位机串口通信设计详解

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。

串口通信结构

串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

串口通信

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

上位机与下位机设计

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

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

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

/files/Dreamer-1/mfz-rxtx-2.2-1207-win-x86.zip(32bit 下载地址)

/files/Dreamer-1/mfz-rxtx-2.2-1207-win-x64.zip (64位下载地址)

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

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

这个文件夹里面需要注意两点: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\12

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

step 3:RXTXComm Api如何使用

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

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

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

* 扫描获取可用的串口

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

*/

public staTIc final ArrayList《String》 uartPortUseAblefind()

{

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

//由CommPorTIdenTIfier类提供方法

Enumeration《CommPortIdentifier》 portList=CommPortIdentifier.getPortIdentifiers();

ArrayList《String》 portNameList=new ArrayList();

//添加并返回ArrayList

while(portList.hasMoreElements())

{

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

portNameList.add(portName);

}

return portNameList;

}123456789101112131415161718

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

ArrayList《String》 arraylist=UARTParameterSetup.uartPortUseAblefind();

int useAbleLen=arraylist.size();

if(useAbleLen==0)

{

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

}

else

{

System.out.println(

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。