import serial

API:pySerial API — pySerial 3.4 documentation

这次尝试适用PySerial库是为了从树莓派小车连接的UWB定位模块的串口中,获取与解析出串口所传输的定位信息。以下是在尝试过程中使用到的一些小代码段~希望记录下来可以帮到大家~


1、查看串口列表:serial.tools.list_ports.comports()

ports = serial.tools.list_ports.comports()
# 寻找名字"CH340 "的串口
for port, desc, hwid in sorted(ports):if "CH340 " in desc:self.UWB_port = portprint("INFO:UWB所占用串口为:{}: {} [{}]".format(port, desc, hwid))

可能遇到的问题1:串口名称不对

如果是在windos系统中查看UWB串口占用情况,可在“设备管理器”查看串口名称,通常名称中包含“CH340”之类的字符串。

如果是在树莓派的系统中查看UWB串口占用情况,发现在树莓派系统里面是不叫“CH340”的名字的。比如我的串口名叫"/dev/ttyUSB1",名字里面的数字可能和你插usb的顺序有关。

可以通过命令行查看一下:

树莓派系列(一)-——————树莓派usb串口的使用_由山的博客-CSDN博客_树莓派usb串口通信

可能遇到的问题2:提示AttributeError: module 'serial' has no attribute 'tools'

        解决方法:

如果已经安装好了serial和pyserial库,且查看过包是存在tools这个文件夹的,可以通过加入下面一行,可能可以解决。

2、打开串口:ser.Serial()

方法1:
ser = serial.Serial('/dev/ttyUSB0')方法2:
>>> ser = serial.Serial()
>>> ser.baudrate = 19200
>>> ser.port = 'COM1'
>>> ser
Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
>>> ser.open()
>>> ser.is_open # 判断串口是否打开 bool
True
>>> ser.close()
>>> ser.is_open
False

3、读串口信息

read(size=-1):size – Number of bytes to read.

readline():按顺序读取串口数据,当不指定timeout时,会一直等待读新的一行。

readlines():需要有timeout和EOF(end of file)

*不太理解:

Python file的flush()方法:用来刷新缓冲区。将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要被动等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

(缺点也很明显,读写磁盘都属于IO操作,那么这样频繁的写磁盘,就会导致大量IO,对系统的性能有影响)

*进度条

4、其他

inWaiting(): Get the number of bytes in the input buffer获取输入缓冲区中的字节数。

在实际操作中遇到的棘手问题:

  • 当串口数据传输速度较快,而处理速度跟不上的时候,就会出现实时性较差的情况。
  • 比如,在通过UWB室内定位,获取坐标的场景下,或者通过陀螺仪获取角度时,对实时性要求比较高,来计算小车旋转角度。
  • 如果实时性不强,会出现很大的偏差,导致小车行驶方向出现问题。

解决方法:目前是通过inWaiting()来进行处理(如下代码),在处理前先读取缓冲区所有数据,再读取想要的数据量。

count = ser.inWaiting()
if count>100:    ser.read(count)

5、关闭串口:ser.close()

PySerial库的简单用法相关推荐

  1. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

    文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...

  2. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

  3. QCustomPlot的简单用法总结

    QCustomPlot的简单用法总结 第一部分:QCustomPlot的下载与安装 第二部分:QCustomPlot在VS2013+QT下的使用 QCustomPlot的简单用法总结    写在前面, ...

  4. Android TabLayout(选项卡布局)简单用法实例分析

    本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...

  5. 状态模式的介绍及状态机模型的函数库javascript-state-machine的用法和源码解析

    文章大体就两部分: 状态模式 状态机模型的函数库javascript-state-machine的用法和源码解析 场景及问题背景: 我们平时开发时本质上就是对应用程序的各种状态进行切换并作出相应处理. ...

  6. Eigen: C++开源矩阵计算工具——Eigen的简单用法

    Eigen非常方便矩阵操作,当然它的功能不止如此,由于本人只用到了它的矩阵相关操作,所以这里只给出了它的一些矩阵相关的简单用法,以方便快速入门.矩阵操作在算法研究过程中,非常重要,例如在图像处理中二维 ...

  7. EMCA和EMCTL的简单用法

    背景 其实这两个完全是两回事,不过倒是有关系,emca就是建立的资料库,建立后就用emctl来管理服务了.oem有问题基本都是重建emca,然后用emctl来操作. 当时用emca感觉真是一阵空白,太 ...

  8. 五、Requests库详细的用法

    文章目录 Requests库介绍 Requests库安装 Requests库基本请求 get请求 post请求 自定义请求头部 设置超时时间 代理访问 重定向 ssl验证 获取响应信息 session ...

  9. Eigen C++开源矩阵计算工具——Eigen的简单用法

    Eigen非常方便矩阵操作,当然它的功能不止如此,由于本人只用到了它的矩阵相关操作,所以这里只给出了它的一些矩阵相关的简单用法,以方便快速入门.矩阵操作在算法研究过程中,非常重要,例如在图像处理中二维 ...

  10. Python 中拼音库 PyPinyin 的用法,没错见名知意它就是用来翻译汉字的

    最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基 ...

最新文章

  1. Github标星2.3k+!这个仓库提供了靠谱的入门人工智能的路线及资料!
  2. 闲鱼发布:十大无用商品、创业雷区、塌房明星,内容劲爆与扎心...
  3. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )
  4. mac上配置php开发环境,Mac配置PHP开发环境
  5. javaone_替代JavaOne 2013
  6. linux配置服务器超时退出,Linux下实现不活动用户登录超时后自动登出
  7. OpenCV与图像处理学习十六——模板匹配
  8. 商品详情页html,天天生鲜商品详情页HTML+css
  9. Oracle SQL存储过程结构、异常处理示例
  10. 2021华为杯数学建模获奖经验分享
  11. 「45课时热泵仿真」Excel热泵系统热力计算与仿真全课程
  12. Java面试八股文 2021年最新Java面试题及答案汇总
  13. 勒索病毒自救在线工具
  14. Google Chrome浏览器导入导出书签
  15. 安卓12使用VNET免ROOT抓包微信小程序
  16. antd 自定义表单验证 onBlur
  17. Python与MySQL交互——简易用户注册登录
  18. kafka的auto.offset.reset设置earliest和latest区别
  19. 传美云商系统软件方案详解
  20. [刷题]2017百度之星资格赛 - 度度熊与邪恶大魔王

热门文章

  1. [转]游戏多开的原理
  2. Android App开发常用尺寸规范
  3. FTL(闪存转换层)简单介绍
  4. 爬虫-将网页数据写入word中
  5. 1386 安排电影院座位(字典、位运算)
  6. 计算机房精密空调术语,机房空调常用单位及计算公式
  7. 深度卷积神经网络基本介绍
  8. 如何挑选蓝牙耳机,蓝牙参数说明
  9. 医疗器械信息系统分析
  10. java实现从浏览器读取Csv文件解析成 ListMap