一、概述

pyserial模块封装了对串口的访问。

二、特性

在支持的平台上有统一的接口。

通过python属性访问串口设置。

支持不同的字节大小、停止位、校验位和流控设置。

可以有或者没有接收超时。

类似文件的API,例如read和write,也支持readline等。

支持二进制传输,没有null消除,没有cr-lf转换。

三、系统要求

python 2.3及以上版本,包括py3k。

四、使用方法和实例

1、导入pyserial模块

import serial

2、打开串行口

// 打开串口0, 9600,8N1,连接超时0.5秒

import serial

ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5)

#使用USB连接串行口

ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)

#使用树莓派的GPIO口连接串行口

ser=serial.Serial(1,9600,timeout=0.5)

#winsows系统使用com1口连接串行口

ser=serial.Serial("com1",9600,timeout=0.5)

#winsows系统使用com1口连接串行口

ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)

#Linux系统使用com1口连接串行口

print ser.name#打印设备名称

print ser.port#打印设备名

ser.open()#打开端口

s = ser.read(10)#从端口读10个字节

ser.write("hello")#向端口些数据

ser.close()#关闭端口

data = ser.read(20)

#是读20个字符

data = ser.readline() #是读一行,以/n结束,要是没有/n就一直读,阻塞。

data = ser.readlines()和ser.xreadlines()#都需要设置超时时间

ser.baudrate = 9600 #设置波特率

ser.isOpen() #看看这个串口是否已经被打开

3、获得串行口状态

串行口的属性:

name:设备名字

portstr:已废弃,用name代替

port:读或者写端口

baudrate:波特率

bytesize:字节大小

parity:校验位

stopbits:停止位

timeout:读超时设置

writeTimeout:写超时

xonxoff:软件流控

rtscts:硬件流控

dsrdtr:硬件流控

interCharTimeout:字符间隔超时

属性的使用方法:

ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)

ser.open()

print ser.name

print ser.port

print ser.baudrate#波特率

print ser.bytesize#字节大小

print ser.parity#校验位N-无校验,E-偶校验,O-奇校验

print ser.stopbits#停止位

print ser.timeout#读超时设置

print ser.writeTimeout#写超时

print ser.xonxoff#软件流控

print ser.rtscts#硬件流控

print ser.dsrdtr#硬件流控

print ser.interCharTimeout#字符间隔超时

ser.close()

4、设置串行口状态

需要用的常量

bytesize:FIVE BITS、SIXBITS、SEVENBITS、EIGHTBITS

parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE

stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO

异常:

ValueError:参数错误

SerialException:找不到设备或不能配置

ser.baudrate=9600#设置波特率

ser.bytesize=8#字节大小

ser.bytesize=serial.EiGHTBITS#8位数据位

ser.parity=serial.PARITY_EVEN#偶校验

ser.parity=serial.PARITY_NONE#无校验

ser.parity=serial.PARITY_ODD#奇校验

ser.stopbits=1#停止位

ser.timeout=0.5#读超时设置

ser.writeTimeout=0.5#写超时

ser.xonxoff#软件流控

ser.rtscts#硬件流控

ser.dsrdtr#硬件流控

ser.interCharTimeout#字符间隔超时

5、Readline方法的使用

是读一行,以/n结束,要是没有/n就一直读,阻塞。

使用readline()时应该注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。如果没有超时,readline会报异常。

6、serial.Serial类——原生端口

class serial.Serial

{

__init__(port=None, baudrate=9600, bytesize=EIGHTBITS,parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None)

#其中:

#bytesize:FIVEBITS、SIXBITS、SEVENBITS、EIGHTBITS

#parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE

#stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO

#异常:

#ValueError:参数错误

#SerialException:找不到设备或不能配置

open():打开串口

close():立即关闭串口

__del__():析构函数

read(size=1):从串口读size个字节。如果指定超时,则可能在超时后返回较少的字节;如果没有指定超时,则会一直等到收完指定的字节数。

write(data):发送data,并返回发送字节数。如果bytes和bytearray可用(python 2.6以上),则接受其作为参数;否则接受str作为参数。

#异常:SerialTimeoutException——配置了写超时并发生超时时发生此异常。

inWaiting():返回接收缓存中的字节数

flush():等待所有数据写出。

flushInput():丢弃接收缓存中的所有数据

flushOutput():终止当前写操作,并丢弃发送缓存中的数据。

sendBreadk(duration=0.25):发送BREAK条件,并于duration时间之后返回IDLE

setBreak(level=True):根据level设置break条件。

setRTS(level=True)

setDTR(level=True)

getCTS()

getDSR()

getRI()

getCD()

#只读属性:

name:设备名字

portstr:已废弃,用name代替

port:读或者写端口

baudrate:波特率

bytesize:字节大小

parity:校验位

stopbits:停止位

timeout:读超时设置

writeTimeout:写超时

xonxoff:软件流控

rtscts:硬件流控

dsrdtr:硬件流控

interCharTimeout:字符间隔超时

#端口设置可以被读入字典,也可从字典加载设置:

getSettingDict():返回当前串口设置的字典

applySettingDict(d):应用字典到串口设置

#对提供io库的系统(python 2.6或以上),Serial从io.RawIOBase派生。对其它系统,从FileLike派生。

#异常:

exception serial.SerialException

exception serial.SerialTimeoutException

#常量:

serial.VERSION:pyserial版本

#模块函数和属性:

serial.device(number)

serial.serial_for_url(url, *args, **kwargs)

serial.protocol_handler_packages()

serial.to_bytes(sequence):接收一个字符串或整数列表sequence,返回bytes实例

}

python中serial模块的使用_python中pyserial模块使用方法相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  3. python中yaml模块的使用_Python中Pyyaml模块的使用

    一.yaml是什么 yaml是专门用来写配置文件的语言,远比json格式方便. yaml语言的设计目标,就是方便人类读写. yaml是一种比xml和json更轻的文件格式,也更简单更强大,它可以通过缩 ...

  4. python中模块和函数_Python中函数和模块的体验与使用

    函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...

  5. python中导入模块的方式_Python中几种导入模块的方式总结

    模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入.常见的方式有如下几种: 1 . import >>> import sys >>> sys.path ...

  6. python中path语句什么意思_python中jsonpath模块有何用法?

    小编做项目的时候,遇到一个问题,虽然解决了,但是也是深入的思考的一番,遇到问题是这样的,我们返回的基本格式都是json,但是json都是层层递进的,如果想审核json中心找到字符串等内容,要一层一层的 ...

  7. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  8. python中docx模块的使用_python使用docx模块读写docx文件的方法与docx模块常用方法详解...

    一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...

  9. python中导入模块有哪些_python有三种导入模块的方法

    原博文 2011-05-24 10:54 − python有三种导入模块的方法 其一, import modname : 模块是指一个可以交互使用,或者从另一Python 程序访问的代码段.只要导入了 ...

最新文章

  1. 15年!NumPy论文终出炉,还登上了Nature
  2. java 媒体播放器_Java多媒体播放器(三)
  3. getchar getche getch的区别
  4. vivado中交织模块_搞定Markdown中的图片,一劳永逸的方法!
  5. java compliance_java complier compliance level问题引发的思考
  6. React 第十章 状态提升
  7. Hibernate常见面试题
  8. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)
  9. Linux 权限设置
  10. python glob用法_python glob的安装和使用
  11. LuoguP2764 最小路径覆盖问题(最大流)
  12. c语言输出100以内的素数存放数组中,c语言素数(c语言输出100以内素数)
  13. 数据盘点各城市公积金排名,你能拿多少?
  14. ARM处理器开发详解(一)
  15. 从零开始学WEB前端——网页的骨架——HTML理论讲解
  16. 【超级表格创业谱】王庆刚:你的岗位有没有辜负你的才华?
  17. html只能有一对body,一个HTML文档只能含有一对body标记,且body标记必须在html标记内。...
  18. 数据库笔记 NO.1 ------------2020.03.26
  19. L2正则化和collection,tf.GraphKeys
  20. 啃完这本阿里手册,应届七面进阿里

热门文章

  1. 2018年1月问答系统综述
  2. 【QCustomPlot】1.1 - Qt .qch帮助文档导入使用
  3. Linux下压缩、解压缩、效率,linux tar bz、bz2、gz、zip
  4. 集合 (二) ----- Map集合详解
  5. oracle中的存储过程
  6. 点击startup.bat启动tomcat出现乱码
  7. 15.5.1【Task实现细节】 生成的代码
  8. 关于PyQt5,在pycharm上的安装步骤及使用技巧
  9. 放弃用你的InnerHTML来输出HTML吧,jQuery Tmpl不详细讲解
  10. python制动化之路