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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
python模拟Django框架实例
May 17 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
python opencv调用笔记本摄像头
Aug 28 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
利用python绘制数据曲线图的实现
Apr 09 Python
Python求解排列中的逆序数个数实例
May 03 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
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
vue组件学习教程
2017/09/09 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python else语句在循环中的运用详解
2020/07/06 Python
Python基于template实现字符串替换
2020/11/27 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
python实现图片转字符画
2021/02/19 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
护士自我介绍信
2014/01/13 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
企业党员一句话承诺
2014/05/30 职场文书
经营理念口号
2014/06/21 职场文书
公司领导班子对照材料
2014/08/18 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
python图像处理 PIL Image操作实例
2022/04/09 Python