Python串口模块pySerial
来源:互联网 发布:影视vip软件下载 编辑:程序博客网 时间:2024/06/01 07:50
Python串口模块pySerial - 简短的介绍
2017-3-2
这一篇的教程好简陋,作者有在认真写吗。。。。。。为了方便理解,我在翻译过程中加了点说明。原味教程
打开串口
我们打开一个串口,配置为“9600,8,N,1”(波特率,字节位数,是否有奇偶校验,),没有设置超时:
>>> import serial>>> ser = serial.Serial('/dev/ttyUSB0') # open serial port>>> print(ser.name) # check which port was really used>>> ser.write(b'hello') # write a string>>> ser.close() # close port
打开一个串口,配置为“19200,8,N,1”, 1s timeout:
>>> with serial.Serial('/dev/ttyS1', 19200, timeout=1) as ser:... x = ser.read() # read one byte... s = ser.read(10) # read up to ten bytes (timeout)... line = ser.readline() # read a '\n' terminated line
打开一个串口,配置为“38400,8,E,1”, non blocking HW handshaking:
>>> ser = serial.Serial('COM3', 38400, timeout=0,... parity=serial.PARITY_EVEN, rtscts=1)>>> s = ser.read(100) # read up to one hundred bytes... # or as much is in the buffer
之后再配置端口
在配置或打开一个串口后,获得该串口的实例:
>>> ser = serial.Serial()>>> ser.baudrate = 19200>>> ser.port = 'COM1'>>> serSerial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)>>> ser.open()>>> ser.is_openTrue>>> ser.close()>>> ser.is_openFalse
同样也受到context管理器的支持:
serial.Serial() as ser: ser.baudrate = 19200 ser.port = 'COM1' ser.open() ser.write(b'hello')
Readline
到我们在使用readline()的时候需要小心谨慎。在打开串口时要配置超时时间,否则如果没有新的一行数据输入,他可能会一直等待(原文说的是阻塞,都一样)。readline()依赖于超时时间和EOF引发的中断。如果串口没有正确打开的话,它会抛出一个异常。
可以参考源代码压缩包中或在线的examples文件夹下的例程文件。
注意:Python2.6及其以上版本中,当io模块可用时,EOF不再被readline()支持(也就是说必须依赖超时才能结束readline()的等待)。
EOL
为readline()指定EOL字符或者使用通用的’\n’字符,建议使用io.TextIOWrapper:
import serialimport ioser = serial.serial_for_url('loop://', timeout=1)sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))sio.write(unicode("hello\n"))sio.flush() # it is buffering. required to get the data out *now*hello = sio.readline()print(hello == unicode("hello\n"))
测试端口
列出端口
python -m serial.tools.list_ports将会打印出当前可用的端口。它也可以加一个正则表达式作为第一个参数,这样的话输出的列表只包含匹配到的端口。
注意:这个枚举不能在所有的操作系统上起作用。他可能没被实现,列出不可用的端口或者缺失了端口的细节描述。(第一个和第三个我还能忍,“列出不可用的端口”这个算BUG么)
访问端口
pySerial包含了一个小型的console(基于名为serial.tools.miniterm的终端程序)。它能使用“python -m serial.tools.miniterm < port_name >”命令启动(使用-h可以列出所有选项)。
0 0
- Python串口模块pySerial
- Python串口模块pySerial
- python串口通信模块——pySerial
- pySerial -- Python的串口通讯模块
- pySerial -- Python的串口通讯模块
- python串口通讯模块pySerial使用随笔
- python pyserial 串口
- 串口通讯的python模块——pySerial
- 串口通讯的python模块——pySerial
- 串口通讯的python模块——pySerial
- 【Python入门】 使用 pip 安装 pySerial 串口通讯模块
- Python3.2----串口模块Pyserial
- python串口通信,pyserial安装
- python中pyserial模块使用方法
- 树莓派+Python+pyserial 2.7实现串口通信
- Python通过pyserial控制串口操作
- Python使用pyserial进行串口通信
- 树莓派+Python+pyserial 2.7实现串口通信
- python 列表
- 算法训练 特殊的数字四十
- saltstack-本地安装rpm方式
- 小白学python
- 支付宝接口原理和流程 使用TP框架
- Python串口模块pySerial
- oj3096: 老王的鱼塘
- java学习日志(二)-- 循环Loop实验
- 源码安装Git2.12.0
- Foundation of Machine Learning 笔记第一部分——PAC学习框架
- 《Effective C++》要点摘录
- python学习之argparse模块
- Qt读写Mysql
- python内置数据类型:list,tuple,dict比较