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文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python re模块findall()函数实例解析
Jan 19 Python
python中的随机函数小结
Jan 27 Python
Python KMeans聚类问题分析
Feb 23 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
详解python调用cmd命令三种方法
Jul 08 Python
Python求离散序列导数的示例
Jul 10 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
opencv读取视频并保存图像的方法
Jun 04 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也可以?成Shell Script
2006/10/09 PHP
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
event.X和event.clientX的区别分析
2011/10/06 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
Django ModelForm操作及验证方式
2020/03/30 Python
详解pandas赋值失败问题解决
2020/11/29 Python
python 爬取小说并下载的示例
2020/12/07 Python
PHP开发的一般流程
2013/08/13 面试题
儿媳婚宴答谢词
2014/01/14 职场文书
卖房协议书
2014/04/11 职场文书
高中生操行评语大全
2014/04/25 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
夏季药店促销方案
2014/08/22 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android