Java上位机编程总结

一、准备工作

1、开发工具:

eclipse(注意JDK环境配置:不会的百度;还有有的实验室电脑是32位系统,千万不要安装错)

JavaWin32位安装包:解压后配置环境变量即可使用,里面自带eclipse软件中文版

链接:https://download.csdn.net/download/geyou4444/10279754

https://download.csdn.net/download/geyou4444/10279756

https://download.csdn.net/download/geyou4444/10279759

另外给大家推荐一个模拟串口工具:在自己电脑上可以虚拟窗口,方便调试程序(是否能够检测到串口)(链接:https://download.csdn.net/download/geyou4444/10278579)

2、使用工具:

1)Java串口通信依赖的jar包RXTXcomm.jar(链接:https://download.csdn.net/download/geyou4444/10278576)
使用方法: 
拷贝 RXTXcomm.jar 到 JAVA_HOME\jre\lib\ext目录中; 
拷贝 rxtxSerial.dll 到 JAVA_HOME\jre\bin目录中; 
拷贝 rxtxParallel.dll 到 JAVA_HOME\jre\bin目录中; 
JAVA_HOME为jdk安装路径,若没有JAVA_HOME,则一般是拷贝到Java\jdk1.8.0_161目录中

3、新建工程

新建一个Java工程,不想新建的可以从网上寻找相关的开源代码。

上述步骤进行完,就可以开始进行Java的编程工作了

二、课设要求

2.扩展功能:

(1)下位机扩展为采集2路模拟量数据;

(2) 上位机发送选择命令来决定下位机采集哪一路模拟量,并且上位机把收到的一路模拟量数值减半后实时回送给下位机;下位机把收到的回送来的数据进行数模转换后用万用表或示波器显示。

(3)如果上位机收到的数据大于某个阈值(该值自己设定),则以某种方式报警,并通知下位机点亮某个LED灯。

3. 发挥功能:

上位机以图形化的方式(含动态曲线)显示模拟信号和对应的开关量信号;

PS:辛苦两周,就完成上述功能。。。

三、编程实现

1、串口通信管理SerialPortManager.java
SerialPortManager实现了对串口通信的管理,包括查找可用端口、打开关闭串口、发送接收数据。

这部分Java代码是实现串口通信的基础,这个文件在论坛里用心很容易找到,要理解看懂即可。

2、异常处理package serialport.exception;
每个自定义的Exception类都重写了它的 toString() 方法,便于主程序捕捉到该Exception后打印对应的错误信息。看懂理解即可。
3、主界面main class:MainFrame.Java
界面设计,自己自由发挥吧(附上我们设计的界面)

1) 查找可用串口
2) 打开关闭串口
通过用户界面的“打开串口”、“关闭串口”控制串口的开和闭。
3)接收发送数据

发送数据时我们希望通过特定字符串的发送来控制数据发送的开始和结束。因此我们在Java程序中将数据格式改成String类型。

String data =dataInput.getText().toString();

SerialPortManager.sendToPort(serialport,data.getBytes());

而对于接收数据来说,我们使用字节型数组byte[] bytes存放从串口中读取到的数据,方便与下位机发送的数据实现对接。

此外,我们希望接收到的数据是16进制格式。

data = SerialPortManager.readFromPort(serialport);

dataView.append(ByteUtils.byteArrayToHexString(data,true) + "\r\n");

4)拓展功能:模拟量数据减半

在本Java程序中,上位机是通过字节型数组byte[] bytes存放从串口中读取到的,对于把收到的模拟量数值减半,我们先将收到的数据转换为int类型,然后进行减半操作,并在界面上实时显示。

5)拓展功能:阈值处理(上位机程序不难,但是让下位机接收着实费了很长时间)

当上位机收到阈值数据时,在Java程序中,我们决定使用if判断语句,当收到的数据超过阈值时,便进行处理。

6)发挥功能:实时显示模拟量数据

若想要画实时曲线,则需要下载jfreechart-1.0.19(链接:https://download.csdn.net/download/geyou4444/10278578)不考虑发挥功能的可以忽略这个

如何将模拟量数据显示在纵坐标上,这是重点。

我们将模拟量数据设置为全局变量,这样他值Sdata的改变可以不断传送给定义的方法

然后图像绘制的方法放在主界面函数中

然后

DMU——上位机串口通信相关推荐

  1. react android 串口,Maix Bit(K210) 与上位机串口通信

    串口通信 1.K210 UART 1.1 .串口通信函数 1.2 .常用函数 3.代码 4.效果展示 准备工具 K210开发板 USB转TTL串口 (俗称ISP烧录器) 串口助手 其实Maix Bit ...

  2. Labview上位机串口通信-读写

    使用VISA进行串口通信: (1)相关配置:串口资源(波特率等设置).VISA的打开.配置(接收和发送缓冲区).调用属性结点(一有字节出现就马上接收,或者发送) (2)读取部分:首先依据协议进行包头的 ...

  3. matlab上位机串口通信,MATLAB GUIDE 上位机串口通信开发 绘制图形

    本人因项目需求,需要开发这个串口通信上位机界面,用于实时绘制串口发送过来的数据.本人之前基本没使用过MATLAB,也就知道个zeros(100)这种在命令行窗口中输入的函数.至于MATLAB能开发图形 ...

  4. 用python做一个上位机串口通信_【教程】简易Python上位机之LED控制

    电子爱好者应该不会对"上位机"这个词感到陌生,毕竟或多或少有过接触.但若是说到上位机的开发的话,大家就不一定熟悉了.很多电子爱好者完全没有接触过上位机的开发工作,他们真的没有相应的 ...

  5. matlab上位机串口通信中如何发送16进制数,而不是当做ASCII字符发送(已实测成功)

    转载 (找了很长时间,朋友帮忙找到了发送方法) https://zhidao.baidu.com/question/383761631.html 用matlab发送16进制数据,可以用fwrite直接 ...

  6. 用python做一个上位机串口通信_PYTHON制作画加书法源程序

    from turtle import * from random import * from math import * def tree(n,l): pd()#下笔 #阴影效果 t = cos(ra ...

  7. 易语言和c51通信,51单片机与PC上位机串口通信之LED控制

    #include #define uint8 unsigned char #define uint16 unsigned int uint8 receive_buffer[6];            ...

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

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

  9. 单片机 多机通讯c语言,单片机多机串口通信.doc

    单片机多机串口通信 摘要 本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理.实现方法和相应的通信硬件.软件设计.该设计是由单片机与单片机组成的主从控制系统,其中单片 关键词: 单 ...

最新文章

  1. mysql设置约束l命令_mysql建表约束,sql
  2. json execel xml 互转
  3. 带命令行参数的main函数的误解[到处转载的垃圾]
  4. NYOJ 558 一二三
  5. [C#] - 从 HTML 代码中 转换 / 提取 可读文字(PlainText)的方法
  6. javaweb登录系统账号密码验证等
  7. linux编码 form表单,Linux curl 模拟form表单提交信息和文件
  8. 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
  9. linux编辑音频文件,Linux 上的最佳音频编辑工具推荐
  10. MATLAB提取 .fig 文件中的数据
  11. 类似于talkingdata的灵动功能的实现
  12. micropython 固件编译关于 spi psram opi qspi 的设置
  13. matlab pinv 实现_matlab:inv,pinv逆与伪逆
  14. c和c++(c whith class)的相互调用引用
  15. 2021-05-12 MongoDB面试题 MongoDB适合应用在那些场景
  16. 音视频开发系列(24)使用FFmpeg添加、删除、替换和提取视频中的音频
  17. 如何用python计算函数的值域_(完整版)求函数定义域及值域方法及典型题归纳
  18. WebAssembly js性能对比
  19. bootstrap table合并单元格mergeCell
  20. Android SDK环境变量配置及连接真机

热门文章

  1. 气质联用(GCMS)
  2. PotPlayer缺少TrueHD的解决办法
  3. 使用电脑小贴士:电脑使用的几个基本技巧
  4. Request共享数据
  5. Delph7 在WINDOWS7连接64位ODBC的问题
  6. ERM LABS 与 The Sandbox 战略合作,将真人密室逃脱游戏引进元宇宙
  7. 项目人力资源管理 教材精选
  8. nginx简单配置代理服务器
  9. uniapp + vue 2.0 + uView form带验证的表单模板
  10. 关于正则表达式的简单记忆