由于项目需求,需要从传感器节点和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/)
下载直接安装
先看一个例子:
import serial
ser = serial.Serial('/dev/ttyTX0', 9600, timeout=1)
while True:
data = ser.read(100)
print repr(data)
1、读串口步骤:
实例化 --> 设置 (当然可以一步完成)
2、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
rtscts=0, # enable RTS/CTS flow control
interCharTimeout=None # Inter-character timeout, None to disable
)
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
BAUDRATES # list of valid baudrates
BYTESIZES # list of valid byte sizes
PARITIES # list of valid parities
STOPBITS # list of valid stop bit widths
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.简单实例
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)
执行结果如图: