《Python Cookbook 3rd》笔记(5.20):与串行端口的数据通信
与串行端口的数据通信
问题
你想通过串行端口读写数据,典型场景就是和一些硬件设备打交道 (比如一个机器人或传感器)。
解法
尽管你可以通过使用 Python 内置的 I/O 模块来完成这个任务,但对于串行通信最好的选择是使用 pySerial 包 。这个包的使用非常简单,先安装 pySerial,使用类似下面这样的代码就能很容易的打开一个串行端口:
import serial
ser = serial.Serial('/dev/tty.usbmodem641', # Device name variesbaudrate=9600,bytesize=8,parity='N',stopbits=1)
设备名对于不同的设备和操作系统是不一样的。比如,在 Windows 系统上,你可以使用 0, 1 等表示的一个设备来打开通信端口”COM0” 和”COM1”。一旦端口打开,那就可以使用 read(), readline() 和 write() 函数读写数据了。例如:
ser.write(b'G1 X50 Y50\r\n')
resp = ser.readline()
大多数情况下,简单的串口通信从此变得十分简单。
讨论
尽管表面上看起来很简单,其实串口通信有时候也是挺麻烦的。推荐你使用第三方包如 pySerial 的一个原因是它提供了对高级特性的支持 (比如超时,控制流,缓冲区刷新,握手协议等等)。举个例子,如果你想启用 RTS-CTS 握手协议,你只需要给Serial() 传递一个 rtscts=True 的参数即可。其官方文档非常完善,因此我在这里极力推荐这个包。
时刻记住所有涉及到串口的 I/O 都是二进制模式的。因此,确保你的代码使用的是字节而不是文本 (或有时候执行文本的编码/解码操作)。另外当你需要创建二进制编码的指令或数据包的时候, struct 模块也是非常有用的。
《Python Cookbook 3rd》笔记(5.20):与串行端口的数据通信相关推荐
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python cookbook》笔记一
<Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...
- 《Python Cookbook 3rd》笔记(2.20):字节字符串上的字符串操作
字节字符串上的字符串操作 问题 你想在字节字(Byte String)符串上执行普通的文本操作 (比如移除,搜索和替换) 解法 字节字符串同样也支持大部分和文本字符串一样的内置操作.比如: >& ...
最新文章
- 「小程序JAVA实战」小程序的举报功能开发(68)
- 报告 | 中国科学院发布地球大数据报告
- DCMTK:测试衍生图像FG类
- MetaException(message:Hive Schema version 3.0.0 does not match metastore's schema version 1.2.0 Meta
- 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
- 中科大量子计算机科学家,中国科学院量子信息重点实验室
- WinForm C#全局错误捕捉处理【整理】
- LF 第一模块 考试总结
- python脚本-记录Python脚本的运行日志的方法
- 易语言linux登录器网关源码,Mir2源码详解之服务端-登录网关(LoginGate)
- Hibernate官网下载最新版jar包
- 红日安全ATT&CK靶机实战系列之vulnstack1
- python axes3d函数_python3D绘图Axes3D函数详解
- FreeRTOS 任务调度 系统节拍
- vmbox虚拟机Ubuntu通过桥接方式上网
- 未名企鹅极客 | 人机图灵测试中数字图像处理方法研究
- 基于Curator的Zookeeper操作实战
- 【小5聊】纯javascript实现图片放大镜效果
- flowable 多实例流程
- java_home的配置
热门文章
- WINCE 加入驱动DLL步骤
- java utf8 byte_byte以及UTF-8的转码规则
- mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???
- xxl-job 执行结果是空_xxljob dotnet core executor执行器开源
- 利用python爬取房价
- 【转】页(page),用户控件(userControl),窗口(window)区别
- allegro标注尺寸设置_标注新升级 | SOLIDWORKS 2020新功能揭秘
- 【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作
- 赢在CSDN —— 我们一起向前
- 【BZOJ - 3436】小K的农场(差分约束)