如何将名称动态分配给RFID读卡器所连接的串行端口

2024-06-10 09:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从RFID阅读器读取数据,并通过Raspberry-Pi将数据存储在日志文件中。你知道吗

但有时会出现错误dev/ttyUSB0 not found,当我使用“dmesg | grep tty”命令检查分配给端口的名称时,名称会更改为“ttyUSB1或ttyUSB2”,因此每次都需要更改代码。你知道吗

有什么解决办法吗??你知道吗

提前谢谢。你知道吗


Tags: 文件数据dev名称错误pinot读取数据
1条回答
网友
1楼 · 发布于 2024-06-10 09:09:18

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

#!/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…),并用关键字搜索设备。你知道吗

相关问题 更多 >