Pyserial操作串口

pySerial

介绍

封装了串口通讯模块,支持Linux、Windows、BSD(可能支持所有支持POSIX的操作系统),支持Jython(Java)和IconPython(.NET and Mono).

首页 http://pyserial.sf.net/

特性
所有平台使用同样的类接口
端口号默认从0开始,程序中不需要知道端口名称
像文件读写一样的API,read、write(readline等也受支持)
所有程序全由Python完成,除了标准库外不依赖其他包,除了pywin32(windows)、JavaComm(Jython). POSIX(Linux, BSD) 只依赖Python标准库。
依赖环境
Python2.2或更新版本
windows 上的 pywin32扩展
Java/Jython上的 "Java Communications" (JavaComm)或者兼容包
安装
pip/easy_install

pip install pyserial

easy_install pyserial

windows

下载地址 : http://sourceforge.net/project/showfiles.php?group_id=46487

快速上手
Open port 0 at "9600,8,N,1", no timeout

>>> import serial
>>> ser = serial.Serial(0) # open first serial port
>>> print ser.portstr # check which port was really used
>>> ser.write("hello") # write a string
>>> ser.close() # close port

Open named port at "19200,8,N,1", 1s timeout

>>> ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
>>> x = ser.read() # read one byte
>>> s = ser.read(10) # read up to ten bytes (timeout)
>>> line = ser.readline() # read a '/n' terminated line
>>> ser.close()

Open second port at "38400,8,E,1", non blocking HW handshaking

>>> ser = serial.Serial(1, 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

Get a Serial instance and configure/open it later

>>> ser = serial.Serial()
>>> ser.baudrate = 19200
>>> ser.port = 0
>>> ser
Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
>>> ser.open()
>>> ser.isOpen()
True
>>> ser.close()
>>> ser.isOpen()
False

如果给定端口,端口将在创建对象之后立即打开,如果没有给定端口,可选timeout参数

timeout=None # wait forever
timeout=0 # non-blocking mode (return immediately on read)
timeout=x # set timeout to x seconds (float allowed)

Serial实例的可用方法
open() # 打开端口
close() # 立即关闭端口
setBaudrate(baudrate) # change baud rate on an open port
inWaiting() # return the number of chars in the receive buffer
read(size=1) # read "size" characters
write(s) # 把字符串s写到该端口
flushInput() # 清除输入缓存区,放弃所有内容
flushOutput() # 清除输出缓冲区,放弃输出
sendBreak() # 发送中断条件
setRTS(level=1) # set RTS line to specified logic level
setDTR(level=1) # set DTR line to specified logic level
getCTS() # return the state of the CTS line
getDSR() # return the state of the DSR line
getRI() # return the state of the RI line
getCD() # return the state of the CD line

Serial实例的属性
只读

portstr # 设备名称
BAUDRATES # list of valid baudrates
BYTESIZES # list of valid byte sizes
PARITIES # list of valid parities
STOPBITS # list of valid stop bit widths

下面属性值被更改后端口会重新配置,即使端口已经打开

port # port name/number as set by the user
baudrate # current baud rate setting
bytesize # byte size in bits
parity # parity setting
stopbits # stop bit with (1,2)
timeout # timeout setting
xonxoff # if Xon/Xoff flow control is enabled
rtscts # if hardware flow control is enabled

异常
serial.SerialException

常量
parity:

serial.PARITY_NONE
serial.PARITY_EVEN
serial.PARITY_ODD

stopbits

serial.STOPBITS_ONE
al.STOPBITS_TWO

bytesize:

serial.FIVEBITS
serial.SIXBITS
serial.SEVENBITS
serial.EIGHTBITS

翻译(有删减)仅供参考

原文地址:http://blog.csdn.net/dainiao01/article/details/5885122
官方文档:http://pyserial.sf.net/

更多相关文章
  • Raspberry pi 使用python+pySerial实现串口通信 转:http://blog.csdn.net/homeway999/article/details/8642353 目录(?)[+] Raspberry pi 使用pythonpySerial实现串口通信 Raspberry ...
  • 在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时,往往会涉及到串口编程.网上以及一些书籍上讲解windows下的串口编程知识也挺多的,但我个人觉得,看完书上的知识点有时依然不知道该如何下手开始自己的程序设计和代码编写,许多知识如果能结合着详细的例子往往能够帮助我们学习得更快, ...
  • 连载C#通讯串口和网络框架的设计与实现-6.通讯控制器的设计
    目       录 第六章           通讯控制器的设计... 2 6.1           控制器接口... 2 6.2           串口控制器... 3 6.3           网络控制器... 5 6.4           通讯控制管理器... 9 6.5        ...
  • 深入浅出串口编程(5)――基于第三方类的串口编程宋宝华 21cnbao@21cn.com1.串口类从本系列文章连载三.四可以看出,与通过WIN32 API进行串口访问相比,通过MScomm这个Activex控件进行串口访问要来的方便许多,它基本上可以向用户屏蔽多线程的细节,以事件(发出OnComm消 ...
  • 深入浅出串口编程(2)――基于DOS的串口编程宋宝华21cnbao@21cn.com在DOS平台下,操作串口主要有下列方式:通过BIOS调用.通过串口的硬件中断或通过对串口硬件进行轮询,本章将对以上三种方式进行具体的介绍并给出例子.1.BIOS中断在DOS操作系统下,IBM PC及其兼容机提供了一种 ...
  • .NET串口通信
    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通信. 串口通信,以前一直觉得神秘,没想到用起来却这么简单.当然,这样简单要归功于 .NET 对其操作 ...
  • 数据传输时要从支持那些相关的标准?传输的速度?什么时候开始?什么时候结束?传输的内容?怎样防止通信出错?数据量大的时候怎么弄?硬件怎么连接出发,当然对于stm32还要熟悉库函数的功能 具起来rs232和485电平的区别硬件外围芯片,波特率(反映传一位的时间),起始位和停止位,数据宽度,校验,硬件流控 ...
  • PC和FPGA间的串口通信实现
    应用笔记V1.0 2015/03/26PC和FPGA间的串口通信实现  概述  本文将介绍PC和FPGA间的串口通信实现的基本思路和Verilog代码,对于通信而言,收发双方都要有相应的控制.PC端采用MATLAB控制串口进行操作.本文档将详细介绍这一过程. 修订历史以下表格展示了本文档的修订过程 ...
一周排行
  •      老男孩培训高可用数据库架构技术沙龙活动分享为了回馈老男孩培训的内部学员以及满足广大朋友对数据库架构的需求,特组织一次高级别接地气的高可用数据库架构主题分享(老男孩架构师课程的核心部分),本次技术沙龙无需任何 ...
  • 作者:曲宝全1 / 18测试环境:CentOS 5.3x86_64 操作系统bind-9.3.2.tar.gzDNS 服务器IP:192.168.168.3模拟网通IP: 192.168.168.4模拟电信IP:19 ...
  • VPN第一话:12.3和12.4版本IOS下的ACL区别
     记得刚开始学VPN的时候,在书上看见要配一个允许ESP的访问控制列表,这个访问配不配都能 ...
  • 一次工程交付,软件环境为Solaris10U11+Cluster3.3U2+Oracle11g,最后建立数据库资源的时候,遇到一问题,原始命令如下:# clresource create -g oracleha-rg ...
  • Stp:生成树协议运行生成树协议的交换机上的端口,总是处于下面四个状态中的一个:1)阻塞:所有端口以阻塞状态启动以防止回路,由生成树确定哪个端口切换为转发状态,处于阻塞状态的端口不转发数据帧但可接受BPDU.2)监听 ...
  • 一个虚拟化的纪实派报告
    作者:娄辛研,本文摘自:[url]http://www.xuniji.com/xunihu ...
  • 我叫胡运佳,来自湖南省常德市.现在是北京工业大学耿丹学院计算机科学与技术大三学生.光阴荏荏,短短两年的大学生活已过去.在菁菁校园中,老师的教诲,同学的友爱以及各方面的熏陶,使我获得了许多知识,懂得了许多道理.在校期间 ...
  • 看起来你想要知道Symfony2是如何工作的,以及要如何对它进行扩展.这让我非常高兴.本节深入Symfony2内部,对其进行说明.如果你想了解Symfony2是如何工作的,或者你想扩展Symfony2的话,你只需要阅 ...
  •   今天看到一篇好的文章,是关于ospf配置的.刚好近期我也在学习ospf,感觉这篇文章有很大的概括性,特此分享:http://bailu.blog.51cto.com/190442/47150   具体自己上网查看 ...
  • linux下安装subversion测试环境是rh6.3 httpd-2.2.9.tar.gz subversion-1.6.20.tar.gz subversion-deps-1.6.20.tar.gz目录:一.安 ...