项目目标
主要用于测试单片机与python写的上位机联机问题。
项目任务
通过stm32采集电压数据并发送出来,动态绘图,已完成。
采用线程问题解决,同时用列表来保存数据,用matplotlab绘制动态图。
任务思路
用python做上位机数据采集,串口 一直进行检测,采集到数据之后,判断是否为空或者数据数据长度不够五位,采集完毕之后将数据类型转换为浮点型,放入列表里面,并动态绘制出来,代码如下所示,延时0.2是为了与下位机数据延时相同,尽量保证数据接收正常。
# 读取数据
def recv(serial):
while True:
data = serial.read_all()
if data == b'':
continue
else:
break
return data
#通过线程来管理数据读取功能
def data_processing_thread(serial):
while True:
sleep(0.2) # 模拟数据处理延时
data = recv(serial).decode('utf-8')
#限制数据位数小于5,数据取值范围在0-5
if data != '' and len(data) > 5 and 0 <= float(data) <= 5:
print("receive : ", data)
# 假设接收到的数据可以直接转换为float,并将其放入队列中
data_queue.put(float(data))
# list.append(float(data))
print(list)
if data == 'x':
print("exit")
break
下位机发送使用stm32f103zet6,板子采用野火指南者,通过DMA采集电压数据发送给串口。
我通过cmd命令行运行的,所以看到的数据是后面的样子。
源代码参考链接
https://download.csdn.net/download/lengxi1/88850819