实现串口数据的接收功能、以及绘图工具进行数据显示
前言:这个小项目是自己的毕设,做的比较简单,之前记录是pyqt的环境配置,说实话,今天突然看到自己也都忘得差不多了,看来还是要好好记录一下自己的知识。
这个项目分为了两个部分,其中下位机的数据采集是使用STM32L0系列的开发板作为了主控器,温度采集模块是DB18B20,还有一个GSM模块,用于发送短信,比较简单的项目。上位机部分也就是使用pyserial模块来进行数据的接收,使用matplotlib模块来进行绘图。
下位机部分的代码还在,但是用于时间关系,开发板等东西已经送人了,所以这篇博客主要就讲一下上位机的程序开发,但是为了和上一篇博客中实现的效果一样,我去找到了一个软件模拟下位机向PC端发送数据。
1.模拟软件向PC端发送数据–VSPD软件
找了一篇博客,包含VSPD使用教程,放上链接如下:
https://blog.csdn.net/qq_34202873/article/details/88391265
2.串口接收数据
今天准备把之前的代码拿来跑一下,但是发现出了一些小问题,这里也记载一下,被自己蠢哭的问题。
问题1:
pyserial模块的安装问题,换了环境,但是使用pip安装,以及在pycharm中进行安装,都没有成功,下载的包都是空的文件夹,其截图如下:
解决办法,去官网下载压缩包,然后解压到你的解释器的Lib/site-packages目录下,然后运行命令进行安装;
https://pypi.org/project/pyserial/#files
命令行安装
综上问题1解决
问题2(自己犯低级错误):
a.串口初始化部分
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
### 1. 画图
self.my_graph_1 = MyMplCanvas()
self.left1.addWidget(self.my_graph_1)
self.t = [] ### 储存计数
self.m = [] ### 储存接收的数据
self.i = 0 ### 计数值
### 2. 串口部分
# 串口初始化为None
self.ser = None
# 设置窗口名称
self.setWindowTitle("Temperature--Serial")
# 刷新一下串口的列表
# self.refresh()
# 波特率
self.comboBox_2.addItem('115200')
self.comboBox_2.addItem('57600')
self.comboBox_2.addItem('9600')
self.comboBox_2.addItem('4800')
self.comboBox_2.addItem('2400')
self.comboBox_2.addItem('1200')
# 实例化一个定时器
self.timer = QTimer(self)
# 定时器调用读取串口接收数据
self.timer.timeout