我正在尝试读取Python中访问控制脚本的两个串行端口。 一个串口有一个RFID阅读器,另一个有一个条形码阅读器。 我希望用户出示他的卡,无论是条形码还是RFID,以及验证访问权限的脚本。你知道吗
serRFID = serial.Serial(
port = '/dev/ttyUSB0',
baudrate = 9600,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS,
timeout = 10)
serBARC = serial.Serial(
port = '/dev/ttyACM0',
baudrate = 38400,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS,
timeout = None)
def readtag():
global tag_inp
serBARC.reset_input_buffer()
tag_inp = ""
while tag_inp == "":
read_byte1 = serBARC.read(11)
if len(read_byte1) == 11:
tag_inp = read_byte1
上面的工作,但显然只有条形码阅读器。如果我在“readtag”定义中改为serRFID而不是serBARC,它也可以工作,但我希望两者都被读取,并且只有返回数据(RFID或条形码)的一个被存储为“tag\u inp”
这是一个阻塞调用,将无限期地等待,直到从端口读取11位。 您可以改为添加一个超时,然后对另一个端口执行相同的操作:
或者,您可以在创建两个串行对象时指定超时,就像您已经为RFID端口所做的那样。然后您可以在循环中调用read,正如我上面所示,但不需要指定超时。你知道吗
然后可以继续检查
read_byte1
和read_byte2
中的哪一个具有所需的长度。你知道吗相关问题 更多 >
编程相关推荐