全国咨询热线

400-888-85638

上位机下位机串nb88新博注册口通信设计详解

2021-04-03 15:00:25 浏览次数:

  串行接口是一种可以将接管来自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包,这里给出下载地点:

  (32bit 下载地点)

   (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工程内里就是较量简朴的操纵,可以参考:TIcle/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(“已查询到该计较机上有以下端口可以利用:”);

  for(int index=0;index《arraylist.size();index++)

  {

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

  //测试串口设置的相关要领

  }

  } 123456789101112131415

400-888-85638