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之变量和参数
Oct 10 Python
Python对数据库操作
Mar 28 Python
简单学习Python time模块
Apr 29 Python
详解Python装饰器由浅入深
Dec 09 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
快速了解Python相对导入
Jan 12 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
Python for循环及基础用法详解
Nov 08 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
Python内置函数的用法实例教程
2014/09/08 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python 如何停止一个死循环的线程
2020/11/24 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
社区志愿者活动总结
2014/06/26 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
高中生逃课检讨书
2014/10/10 职场文书
学校端午节活动总结
2015/02/11 职场文书
介绍信范文大全
2015/05/07 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL