前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python serial读串口

python serial读串口

作者头像
py3study
发布2020-01-08 18:20:13
5.9K0
发布2020-01-08 18:20:13
举报
文章被收录于专栏:python3python3

由于项目需求,需要从传感器节点和GPS中读取数据,所以学习了如何用python读串口。

python提供了pySerial,Linux和windows下有相应的模块

linux版本: pyserial (http://pyserial.wiki.sourceforge.net/pySerial)   (在我的虚拟机中Ubuntu 12.04 LTS 版本中好像已经自带) windows版本: pywin32 (http://sourceforge.net/projects/pywin32/) 下载直接安装

先看一个例子:

代码语言:javascript
复制
import serial
ser = serial.Serial('/dev/ttyTX0', 9600, timeout=1)
while True:
    data = ser.read(100)
    print repr(data)

1、读串口步骤:

实例化 --> 设置 (当然可以一步完成)

2、serial详解

2.1 serial类原型

ser = serial.Serial( port=None,              # number of device, numbering starts at # zero. if everything fails, the user # can specify a device string, note # that this isn't portable anymore # if no port is specified an unconfigured # an closed serial port object is created baudrate=9600,          # baud rate bytesize=EIGHTBITS,     # number of databits parity=PARITY_NONE,     # enable parity checking stopbits=STOPBITS_ONE,  # number of stopbits timeout=None,           # set a timeout value, None for waiting forever

                              #zero, non-blocking mode, return immediately on read 

xonxoff=0,              # enable software flow control rtscts=0,               # enable RTS/CTS flow control interCharTimeout=None   # Inter-character timeout, None to disable )

注;Port可以用数字表示。COM1为 0,COM2为1 .......

也可以实用绝对路径:ser.port = '/dev/ttySAc2' 

timeout说明(None和 0不同):

timeout = None: 长时间等待

timeout = 0: 不阻塞形式 (读完之后就返回)

timeout = x: x秒后超时 (float allowed)

2.2 Serial方法:

open()                  # open port close()                 # close port immediately 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)                # write the string s to the port flushInput()            # flush input buffer, discarding all it's contents flushOutput()           # flush output buffer, abort output sendBreak()             # send break condition 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

2.3 Serial 实例属性

portstr                 # device name 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

3.简单实例

代码语言:javascript
复制
import serial
ser = serial.Serial()
def hexShow(argv):
    result = ''
    hLen = len(argv)
    for i in xrange(hLen):
        hvol = ord(argv[i])
        hhex = '%02x'%hvol
        result += hhex+' '
        print 'hexShow:',result
ser.baudrate = 57600
ser.port = '/dev/ttySAC2'

ser.open()
readstr = ser.read(20)
print ser.portstr
hexShow(readstr)

执行结果如图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档