1. 程式人生 > >pySerial -- Python的串列埠通訊模組

pySerial -- Python的串列埠通訊模組


pySerial -- Python的串列埠通訊模組

介紹

pySerial

封裝了串列埠通訊模組,支援Linux、Windows、BSD(可能支援所有支援POSIX的作業系統),支援Jython(Java)和IconPython(.NET and Mono).

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

特性

  • 所有平臺使用同樣的類介面
  • 埠號預設從0開始,程式中不需要知道埠名稱
  • 像檔案讀寫一樣的API,readwritereadline等也受支援)
  • 所有程式全由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/