一、概述

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实例

}

Pyserial 实例教程详细用法相关推荐

  1. pgp解密 java_Java PGP加密解密实例教程详细操作步骤

    本文将一步步告诉大家PGP的使用步骤,看完大家就立马可以在项目及工作环境中使用起来,so easy!!! 1,首先了解什么是PGP,PGP的工作原理是什么?这个直接百度百科,我不啰嗦. PGP是英文 ...

  2. Unity3D RectTransform中文教程详细用法分析

    Chinar blog :www.chinar.xin RectTransform类解析 本文提供全流程,中文翻译. Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Ch ...

  3. Java PGP加密解密实例教程详细操作步骤

    本文将一步步告诉大家PGP的使用步骤,看完大家就立马可以在项目及工作环境中使用起来,so easy!!! 1,首先了解什么是PGP,PGP的工作原理是什么?这个直接百度百科,我不啰嗦. PGP是英文P ...

  4. 原生js日历选择器插件开发实例教程

    在web开发过程中经常会碰到需要选择日期的功能,一般的操作都是在文本框点击,然后弹出日历选择框,直接选择日期就可以在文本框显示选择的日期.开发好之后给用户使用是很方便,但如果每一个日历选择器都要临时开 ...

  5. python sort怎么用,Linux Sort命令详细用法(有实例)

    Linux Sort命令详细用法(有实例) sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! Linux sort命令进阶: 1 sort的工作原理 so ...

  6. zip在python中的用法_Python中zip()函数用法实例教程

    本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一.定义: zip([iterable, ...])zip()是Python的一个内建函 ...

  7. WPS表格COUNTIF函数用法实例教程

    WPS表格COUNTIF函数用法实例教程 WPS表格的COUNTIF函数作用是:计算单元格区域中满足给定条件的单元格个数,COUNTIF函数也是单条件,函数语法:COUNTIF(区域,条件) 第一个参 ...

  8. Loadrunner 详细实例教程

    Loadrunner 详细实例教程 1. 了解LoadRunner 1.1 Loadrunner简介 过去的 20 年里,各公司一直致力于开发自动化操作软件.一直以来,通过软件应用程序,我们获得了巨大 ...

  9. matlab实例 pdf,matlab65实例教程(含语句注释).pdf

    matlab65实例教程(含语句注释).pdf 1 2. 基础准备及入门基础准备及入门 2.1 MATLAB 5.x 版对外部系统的要求版对外部系统的要求 2.2 MATLAB 的安装的安装 2.3 ...

最新文章

  1. sql_INSERT DELETE
  2. Python之创建单元素tuple
  3. 重叠IO模型-异步IO
  4. redis3.0 java spring_spring整合redis以及使用RedisTemplate的方法
  5. 漫画版:如何学习单片机?
  6. BeanUtils自定义转换器
  7. java安全(二):JDBC|sql注入|预编译
  8. leetcode —— 面试题 16.19. 水域大小
  9. allegro中焊盘的设置
  10. Netty之大名鼎鼎的EventLoop
  11. 照片放大不清晰怎么处理?用嗨格式图片无损放大器
  12. 【STM32F407的DSP教程】第13章 DSP快速计算函数-三角函数和平方根
  13. pic12f1823单片机入门_PIC单片机入门教程V1.1
  14. 软件开发常用图标网址大全
  15. nodejs 点击按钮下载_从服务器下载文件使用NodeJS表达
  16. 三维电子沙盘数字沙盘虚拟现实无人机倾斜摄影三维全景建模卫星图片矢量
  17. 参加PHPCONChina 2016大会
  18. Android UI 设计规范,Android高分面试指南
  19. MTK Camera 基础知识
  20. 推荐 8 个优质的公众号

热门文章

  1. java读取txt文件出现中文乱码
  2. 梦幻西游手游排队显示服务器已满,梦幻西游手游排队进不去 一直排队解决方法...
  3. 一个好的 ERP 系统需要具备哪些功能模块?
  4. SDNU1129.多度人脉
  5. #define可能是个“渣男”
  6. 微信小程序wxss公共样式
  7. 麻省理工的服务器位置,麻省理工学院的地理位置是怎样的?
  8. xss文件上传下载学习完毕(自用总结)
  9. 基于java调用adb命令安卓shell里面Read-only file system 问题解决
  10. Kali Linux 2020.1a 下载及安装(超详细)