http://www.cnblogs.com/pied/p/4175641.html 2014 串口模块的波特率比较特别,找了几个串口工具都不支持。。。所以,干脆用python自己来写了,其实已经好奇好久了,别人的工具各种不顺手。 需要pyserial的支持,兼容各种平台,不需要新编译二进制文件。
先贴一个定时发送的代码: import serial import time ser = serial.Serial('/dev/ttyUSB0', 250000, timeout=1) print ser.isOpen() words="gggggggggggggggg" while (1): print "send 256x\""+words+"\" to remotes" startTime = time.time() times = 256 while (times): times -= 1 s = ser.write(words) endTime = time.time() print "use time: "+str(endTime-startTime) print "" time.sleep(5) ser.close() 然后是一些其它的方法: 1. 使用序号打开串口:ser = serial.Serial(0) 。but,怎么确定串口的序号??? 2. 查看串口的名称,啊哈,用1的方法打开串口后,你可以产看串口的名字:print ser.portstr 3. 先例化一个实体,再打开: >>> 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 4. 读取数据的集中方式 >>> 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() 其中,如果只是串口调试,直接ser.read(1000),这样会把读到的值直接打印到屏幕上。 5.所有参数 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 ) 6. exception:serial.SerialException
另一个完整收发的例子,单片机数据以TLV(Type,Length,Value)格式发上来 #!/usr/bin/env python
|
|