#! python3
import serial #导入模块
import time
import sys
# 传入参数,当传入的参数只有命令时,默认测试超时为2秒
argvs = sys.argv[1:]
command = sys.argv[1] + "\r\n"
timeOut = 2
if len(argvs)>1:
timeOut = int(sys.argv[2])
try:
#端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
portx="/dev/cu.usbserial-Fixture"
#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200,230400
bps=115200
#超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
timex=5
# 打开串口,并得到串口对象
ser=serial.Serial(portx,bps,timeout=timex)
print("串口名称:",ser.port)#获取到当前打开的串口名
print("串口波特率:",ser.baudrate)#获取波特率
result=ser.write(command.encode("gbk"))#写数据
#print(ser.read())#读一个字节
# print(ser.read(10).decode("gbk"))#读十个字节
#print(ser.readline().decode("gbk"))#读一行
#print(ser.readlines())#读取多行,返回列表,必须匹配超时(timeout)使用
#print(ser.in_waiting)#获取输入缓冲区的剩余字节数
#print(ser.out_waiting)#获取输出缓冲区的字节数
result = ""
startTime = time.time()
while True:
endTime = time.time()
if endTime - startTime > timeOut: #超时时,测试结束
break
if ser.in_waiting:
str=ser.read(ser.in_waiting).decode("gbk")
if str.find(">>")>-1: #检测到“>>”时,测试结束
result = result + str
break
else:
result=result+str
print("读取串口数据:",result)
print("读取时间:",startTime-endTime)
print("------ end --------")
ser.close() #关闭串口
except Exception as e:
print("---异常---:",e)
终端中运行:1. cd到文件所在目录
2.python3 serialport.py 参数1 参数2