python 中Arduino串口传输数据到电脑并保存至excel表格


Posted in Python onOctober 14, 2019

起因:学校运河杯报了个项目,制作一个天气预测的装置。我用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文件。

代码的运行效果:

python 中Arduino串口传输数据到电脑并保存至excel表格

python 中Arduino串口传输数据到电脑并保存至excel表格

 需要注意的是:

  1. 串口和波特率根据电脑上显示的COM口和设置的arduino波特率决定
  2. arduino是通过串口发送字节串到电脑,需要编码成utf-8再对字符串进行处理
  3. 每一次接受完数据要清楚数据缓存

总结

以上所述是小编给大家介绍的python Arduino串口传输数据到电脑并保存至excel表格,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python执行get提交的方法
Apr 29 Python
详解python时间模块中的datetime模块
Jan 13 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
详解Python多线程
Nov 14 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
python实现各进制转换的总结大全
Jun 18 Python
Python处理Excel文件实例代码
Jun 20 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
python程序变成软件的实操方法
Jun 24 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python计算IV值的示例讲解
Feb 28 Python
python实现文件批量编码转换及注意事项
Oct 14 #Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 #Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 #Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 #Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 #Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 #Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 #Python
You might like
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
js post提交调用方法
2014/02/12 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python获取系统默认字符编码的方法
2015/06/04 Python
Python正规则表达式学习指南
2016/08/02 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
党员教师工作决心书
2014/03/13 职场文书
鉴定评语大全
2014/05/05 职场文书
新闻学专业求职信
2014/07/28 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript