与串行端口的数据通信

问题

你想通过串行端口读写数据,典型场景就是和一些硬件设备打交道 (比如一个机器人或传感器)。

解法

尽管你可以通过使用 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):与串行端口的数据通信相关推荐

  1. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  2. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  3. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  4. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  5. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  6. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  7. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  8. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

  9. 《Python Cookbook 3rd》笔记(2.20):字节字符串上的字符串操作

    字节字符串上的字符串操作 问题 你想在字节字(Byte String)符串上执行普通的文本操作 (比如移除,搜索和替换) 解法 字节字符串同样也支持大部分和文本字符串一样的内置操作.比如: >& ...

最新文章

  1. 「小程序JAVA实战」小程序的举报功能开发(68)
  2. 报告 | 中国科学院发布地球大数据报告
  3. DCMTK:测试衍生图像FG类
  4. MetaException(message:Hive Schema version 3.0.0 does not match metastore's schema version 1.2.0 Meta
  5. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)
  6. 中科大量子计算机科学家,中国科学院量子信息重点实验室
  7. WinForm C#全局错误捕捉处理【整理】
  8. LF 第一模块 考试总结
  9. python脚本-记录Python脚本的运行日志的方法
  10. 易语言linux登录器网关源码,Mir2源码详解之服务端-登录网关(LoginGate)
  11. Hibernate官网下载最新版jar包
  12. 红日安全ATT&CK靶机实战系列之vulnstack1
  13. python axes3d函数_python3D绘图Axes3D函数详解
  14. FreeRTOS 任务调度 系统节拍
  15. vmbox虚拟机Ubuntu通过桥接方式上网
  16. 未名企鹅极客 | 人机图灵测试中数字图像处理方法研究
  17. 基于Curator的Zookeeper操作实战
  18. 【小5聊】纯javascript实现图片放大镜效果
  19. flowable 多实例流程
  20. java_home的配置

热门文章

  1. WINCE 加入驱动DLL步骤
  2. java utf8 byte_byte以及UTF-8的转码规则
  3. mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???
  4. xxl-job 执行结果是空_xxljob dotnet core executor执行器开源
  5. 利用python爬取房价
  6. 【转】页(page),用户控件(userControl),窗口(window)区别
  7. allegro标注尺寸设置_标注新升级 | SOLIDWORKS 2020新功能揭秘
  8. 【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作
  9. 赢在CSDN —— 我们一起向前
  10. 【BZOJ - 3436】小K的农场(差分约束)