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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python基于Selenium的web自动化框架
Jul 14 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
python3实现高效的端口扫描
Aug 31 Python
Python图像处理模块ndimage用法实例分析
Sep 05 Python
python使用配置文件过程详解
Dec 28 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 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合并discuz用户脚本的方法
2015/08/04 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
DOM 基本方法
2009/07/18 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
python PIL模块与随机生成中文验证码
2016/02/27 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
演讲稿开场白
2014/01/13 职场文书
劳动模范事迹材料
2014/01/19 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
个人先进事迹总结
2015/02/26 职场文书
会计求职信怎么写
2015/03/20 职场文书
小组组名及励志口号
2015/12/24 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
java中如何截取字符串最后一位
2022/07/07 Java/Android