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的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
Python制作数据导入导出工具
Jul 31 Python
Python内建模块struct实例详解
Feb 02 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python可迭代对象操作示例
May 07 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
使用Python制作一个打字训练小工具
Oct 01 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Python实现Kerberos用户的增删改查操作
Dec 14 Python
Python如何把不同类型数据的json序列化
Apr 30 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
Display SQL Server Version Information
2007/06/21 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
Python实现完整的事务操作示例
2017/06/20 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
静态成员和非静态成员的区别
2012/05/12 面试题
英语专业毕业生自荐信范文
2013/12/31 职场文书
购房意向书范本
2014/04/01 职场文书
个人授权委托书范本
2014/04/03 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
演讲稿格式
2014/04/30 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
商务邀请函
2015/01/30 职场文书
撤诉申请怎么写
2015/05/19 职场文书
刑事法律意见书
2015/06/04 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL