python 中Arduino串口传输数据到电脑并保存至excel表格
作者:昊宇方 发布时间:2022-05-17 05:41:11
标签:python,arduino,串口,传输数据
起因:学校运河杯报了个项目,制作一个天气预测的装置。我用arduino跑了BME280模块,用蓝牙模块实现两块arduino主从机透传。但是为了分析,还需要提取出数据。因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。
import xlwt
import time
import serial
#设置表格样式
def set_style(name,height,bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = name
font.bold = bold
font.color_index = 4
font.height = height
style.font = font
return style
#写Excel
def write_excel():
if serial.isOpen():
print ('串口已打开\n')
f = xlwt.Workbook()
sheet1 = f.add_sheet('arduino_data',cell_overwrite_ok=True)
row0 = ["temp","pres","hum"]
time1=time.localtime(time.time())
#写第一行
for i in range(len(row0)):
sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
i=1
time.sleep(5)
serial.flushInput()
while True:
try:
size = serial.inWaiting()
if size != 0:
response = serial.read(size) # 读取内容并显示
s=response.decode('utf-8').rstrip('\r\n').split('\t')
if len(s)!=3:
serial.flushInput()
continue
else:
try:
for j in range(len(s)):
sheet1.write(i,j,int(s[j]),set_style('Times New Roman',220,False))
print(s)
serial.flushInput() # 清空接收缓存区
i = i+1
time.sleep(0.5)
except ValueError:
serial.flushInput()
continue
except KeyboardInterrupt:
time2=time.localtime(time.time())
f.save(r'C:\Users\10020\Desktop\arduino_data\{0}.{1}_{2:0>2d}.{3:0>2d}.{4:0>2d}-{5}.{6}_{7:0>2d}.{8:0>2d}.{9:0>2d}.xls'.format\
(time1[1],time1[2],time1[3],time1[4],time1[5],
time2[1],time2[2],time2[3],time2[4],time2[5]))
serial.close()
print(time1)
print(time2)
quit()
if __name__ == '__main__':
serial = serial.Serial('COM3',9600,timeout=2)
write_excel()
运行代码后会一直从串口读取arduino的数据,然后写入excel。按Ctrl+c来中止代码进程,此时会在C:\Users\10020\Desktop\arduino_data\这个文件夹下生成以“开始运行时间-结束运行时间”为名称的xls文件。
代码的运行效果:
需要注意的是:
串口和波特率根据电脑上显示的COM口和设置的arduino波特率决定
arduino是通过串口发送字节串到电脑,需要编码成utf-8再对字符串进行处理
每一次接受完数据要清楚数据缓存
总结
以上所述是小编给大家介绍的python Arduino串口传输数据到电脑并保存至excel表格,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/haoyufang/archive/2019/10/14/11671075.html


猜你喜欢
- 相关文章推荐:各种北京2008奥运会倒计时Flash2008北京奥运会倒计时js代码 全套北京2008奥运会倒计时屏保<!DOCTYP
- PHP html_entity_decode() 函数实例把 HTML 实体转换为字符:<?php $str = "&
- 在上一篇用JS实现图片轮播效果代码(一)的基础上,增加了左右箭头的响应事件,实现了点击左右箭头也可以让图片滚动:js代码如下:window.
- 首先,我们需要在vue工程中安装video.js相关依赖。npm install --save video.jsnpm install --
- 前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是在处理一些复杂背景问题的时候,还是容易出现错漏检的问
- 以下示例显示如何在 XPath 查询中指定轴。这些示例中的 XPath 查询都在 SampleSchema1.xml 中所包含的映射架构上指
- 1.电脑已经搭建python环境2.深入到需要传输的文件目录下,此处以分享 nemo-huiyuanfei 文件为例3.在路径栏输入 cmd
- 本文实例为大家分享了python微信跳一跳的具体代码,供大家参考,具体内容如下部分代码分享:wechat_jump.pyfrom __fut
- 1.保存变量先创建(在tf.Session()之前)saversaver = tf.train.Saver(tf.global_variab
- 第一种:.py文件直接封装成exe1.cmd进入py文件所在的目录备注:在py文件所在的目录下,按住shift+鼠标右击,然后找到&
- 在软件开发过程中经常会遇到数据库升迁的问题,原因比较多,如acsess访问速度比sql server慢、删除数据记录后access会留下空档
- 本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我3
- 一个线上项目报的死锁,简要说明一下产生原因、处理方案和相关的一些点.1、背景这是一个类似数据分析的项目,数据完全通过LOAD DATA语句导
- 实例如下:var aaa = { "0":"a", "1"
- 作者:bencalie 整理日期:2004年6月15日<xml id="users"> <u
- 概述bootstrap开发标签页时,标签页显示正常,但点击时候对应内容区域没有变化。具体症状与解决方案1.标签页UI出现,但点击无反应,标签
- 首先,建立一个Conn的连接对象,然后连接到数据库data.mdb中,取得连接句柄后,把它保存在session("conn&quo
- 简介 本次项目登录注册验证是对之前学习知识点的加深学习,这次项目的练习的知识点有函数、判断语句、循环语句、文件操作等。项目流程 运行代码之后
- 本文实例讲述了python 装饰器功能与用法。分享给大家供大家参考,具体如下:1、必备#### 第一波 ####def foo(): &nb
- 本文实例讲述了javascript限制用户只能输汉字中文的方法。分享给大家供大家参考。具体实现方法如下:要验证函数时我们必须明白,如果是汉字