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时区设置方法与pytz查询时区教程
Nov 27 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
教你使用python画一朵花送女朋友
Mar 29 Python
python实现机器学习之多元线性回归
Sep 06 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
anaconda如何查看并管理python环境
Jul 05 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
Python3爬虫中pyspider的安装步骤
Jul 29 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
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python制作爬虫采集小说
2015/10/25 Python
python3大文件解压和基本操作
2017/12/15 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
一百行python代码将图片转成字符画
2021/02/19 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
个人找工作求职简历的自我评价
2013/10/20 职场文书
高三历史教学反思
2014/01/09 职场文书
报效祖国演讲稿
2014/09/15 职场文书
秦兵马俑导游词
2015/02/02 职场文书
远程教育学习心得体会
2016/01/23 职场文书
详解Python常用的魔法方法
2021/06/03 Python
OpenCV全景图像拼接的实现示例
2021/06/05 Python
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server