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基础教程之常用运算符
Aug 29 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python 不以科学计数法输出的方法
Jul 16 Python
Django model序列化为json的方法示例
Oct 16 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
python通过tcp发送xml报文的方法
Dec 28 Python
python日志logging模块使用方法分析
May 23 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Pytorch中的数据集划分&正则化方法
May 27 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 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简单系统查询模块代码打包下载
2008/06/07 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
php操作redis缓存方法分享
2015/06/03 PHP
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
使用python绘制二元函数图像的实例
2019/02/12 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
Django视图类型总结
2021/02/17 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
SQL面试题
2013/12/09 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript