如何在连接的RFID阅读器上动态地为串行端口分配名称

问题描述 投票:0回答:1

我试图从RFID阅读器读取数据并通过Raspberry Pi将数据存储在日志文件中。

但有时会发现dev / ttyUSB0没有找到错误,当我使用“dmesg | grep tty”命令检查名称分配给端口时,名称会更改为“ttyUSB1或ttyUSB2”,所以我每次都需要更改代码。

这有什么解决方案?

提前致谢。

python raspberry-pi port rfid
1个回答
0
投票

您可以使用类似这样的代码来了解哪个设备连接到哪个端口:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import subprocess, os

def getUSBName(devSerial):
   if(os.path.exists(devSerial)==False):
       return "No USB"
   dataAttributes = subprocess.Popen("udevadm info --name=" + devSerial + " --attribute-walk", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').split('\n')

    for at in dataAttributes:
        if(at.find("busnum")!=-1):
            bus = at.replace(" ", "")[-2].zfill(3)
            #print("bus = " + bus);
            break

    for at in dataAttributes:
        if(at.find("devnum")!=-1):
            device = at.replace(" ", "")[-2].zfill(3)
            #print("device = " + device)
            break

    dataUSB = subprocess.Popen("lsusb", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').split('\n')

    searchline = "Bus " + bus + " Device " + device + ":"

    for usb in dataUSB:
        if usb.find(searchline)!=-1:
            return usb



devSerial = "/dev/ttyUSB0"

print(getUSBName(devSerial))

然后你可以扫描一些端口(/ dev / ttyUSB0,/ dev / ttyUSB1,/ dev / ttyUSB2 ...)并使用关键字搜索你的设备。

© www.soinside.com 2019 - 2024. All rights reserved.