由於有個須要用有源RFID搞資產管理的項目,須要用python讀取讀卡器的串口內容。因而裝了pyserial模塊,用了下很方便,整理下經常使用功能 php
1、
爲了使用python操做串口,首先須要下載相關模塊:
1. pyserial (http://pyserial.wiki.sourceforge.net/pySerial)
2. pywin32 (http://sourceforge.net/projects/pywin32/) python
2,十六進制顯示 shell
十六進制顯示的實質是把接收到的字符諸葛轉換成其對應的ASCII碼,而後將ASCII碼值再轉換成十六進制數顯示出來,這樣就能夠顯示特殊字符了。 windows
在這裏定義了一個函數,如hexShow(argv),代碼以下: app
3,十六進制發送 ide
十六進制發送實質是發送十六進制格式的字符串,如'\xaa','\x0b'。重點在於怎麼樣把一個字符串轉換成十六進制的格式,有兩個誤區: svn
1)'\x'+'aa'是不能夠,涉及到轉義符反斜槓 函數
2)'\\x'+'aa'和r'\x'+'aa'也不能夠,這樣的打印結果雖然是\xaa,但賦給變量的值倒是'\\xaa' ui
這裏用到decode函數, this
須要注意一點,若是字符串list的長度爲奇數,則decode會報錯,能夠按照實際狀況,用字符串的切片操做,在字符串的開頭或結尾加一個'0'
假如在串口助手以十六進制發送字符串"abc",那麼你在python中則這樣操做「self.l_serial.write(」\x61\x62\x63") 」
固然,還有另一個方法:
一樣能夠達到相同目的。
那麼,串口方面的就整理完了
>>> 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 portOpen 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 bufferGet 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() FalseBe carefully when using "readline". Do specify a timeout when opening the serial port otherwise it could block forever if no newline character is received. Also note that "readlines" only works with a timeout. "readlines" depends on having a timeout and interprets that as EOF (end of file). It raises an exception if the port is not opened correctly.
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 xonxoff=0, # enable software flow control rtscts=0, # enable RTS/CTS flow control interCharTimeout=None # Inter-character timeout, None to disable )The port is immediately opened on object creation, if a port is given. It is not opened if port is None.
timeout=None # wait forever timeout=0 # non-blocking mode (return immediately on read) timeout=x # set timeout to x seconds (float allowed)
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
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 widthsNew values can be assigned to the following attributes, the port will be reconfigured, even if it's opened at that time:
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
serial.PARITY_NONE serial.PARITY_EVEN serial.PARITY_ODDstopbits:
serial.STOPBITS_ONE serial.STOPBITS_TWObytesize:
serial.FIVEBITS serial.SIXBITS serial.SEVENBITS serial.EIGHTBITS