Pular para o conteúdo

Manipulando as informações do USBfs no Linux

Para quem pretende tratar com USB em Linux, é necessário trabalhar com o USBfs e com os arquivos sob /proc/bus/usb. As três classes que disponibilizo são parte do programa USB Show (http://usbpy.sf.net) e retornam a quantidade de dispositivos no bus USB (incluindo controladores e hubs!), quais eles são e os drivers que eles carregam.
Cesar Cardoso cesarcardoso
Hits: 6.935 Categoria: Python Subcategoria: Manipulação de arquivos
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Para quem pretende tratar com USB em Linux, é necessário trabalhar com o USBfs e com os arquivos sob /proc/bus/usb. As três classes que disponibilizo são parte do programa USB Show (http://usbpy.sf.net) e retornam a quantidade de dispositivos no bus USB (incluindo controladores e hubs!), quais eles são e os drivers que eles carregam.
Download usbutils.zip Enviar nova versão

Esconder código-fonte

# USB handling classes
"""Classes and methods that our usbpy program need
"""
class Drivers:
   """Handling the /proc/bus/usb/drivers file
   """
   def __init__(self):
      self.drivers=open("/proc/bus/usb/drivers").read()
   def listDrivers(self):
      return self.drivers

class DeviceUSB:
   """Handling the /proc/bus/usb/devices file
   """
   def __init__(self):
      self.descfile=open("/proc/bus/usb/devices").read()
   def getAllDisps(self):
      """Separating devices
      """
      return self.descfile.split("T: ")

class Device:
   """Treating each device separately
   """ 
   def __init__(self,descricao):
      self.descricao=descricao
   def __firstLine(self):
      templine=self.descricao.split("D: ")
      return templine[0]
   def __secondLine(self):
      templine=self.descricao.split("I: ")
      return templine
   def __secondLineClasse(self):
      l2=self.__secondLine()
      tempclass=l2[1].split("E: ")[0]
      return tempclass
   def __SLines(self):
      templine=self.descricao.split("S: ")
      return templine
   def __thirdLineClasse(self):
      l3=self.__SLines()
      tempclass=l3[2][9:].split("12")
      return tempclass
   def __divideHub(self):
      ls=self.__SLines()
      ls=ls[1][9:].split("12")
      return ls[0]
   def __countSLines(self):
      ls=self.__SLines()
      return len(ls)
   def __getManufacturer(self,line):
      manuf=line[1][14:].split("12")
      return manuf
   def __getProduct(self,line):
      produ=line[2][9:].split("12")
      return produ
   def __getClasse(self):
      """The class of the device
      """
      tempclass=self.__secondLineClasse()
      return tempclass[30:35]
   def __showHub(self):
      """What kind of hub is this: an USB root or an USB normal hub
      """
      lh=self.__divideHub()
      tempsaida=r"USB Hub - "+lh
      return tempsaida
   def __showStorage(self):
      """Gather information about USB Mass Storage devices
      """
      nums=self.__countSLines()
      if nums!=1:
         tempmanuf=self.__getManufacturer(self.__SLines())
         tempprod=self.__getProduct(self.__SLines())
         tempsaida=r"USB Mass Storage - "+tempmanuf[0]+r" "+tempprod[0]
         return tempsaida
      else:
         return r"USB Mass Storage"
   def __showOthers(self):
      """All devices, except hubs and storage, are treated here
      """
      nums=self.__countSLines()
      if nums==1:
         tempsaida=r"Unknown device"
      else:
         nclasse=self.__thirdLineClasse()
         tipoClasse=self.__getClasse()
         if tipoClasse=="HID  ":
            tempsaida=r"Mouse/joystick/keyboard - "+nclasse[0]
         elif tipoClasse==">ifc ":
            tempsaida=r"USB legacy interface - "+nclasse[0]
         else:
            tempsaida=r"Unknown class - "+nclasse[0]
      return tempsaida
   def showFirstLine(self):
      """All the important information: bus, number of the device in the bus, device speed
      """
      l1=self.__firstLine()
      tempsaida=r"Bus "+l1[5:6]+r", device #"+l1[43:46]+r" - Speed "+l1[51:54]+r"Mbps"
      return tempsaida
   def showSecondLine(self):
      tipoClasse=self.__getClasse()
      if tipoClasse=="hub  ":
         tempsaida=self.__showHub()
      elif tipoClasse=="stor.":
         tempsaida=self.__showStorage()
      else:
         tempsaida=self.__showOthers()
      return tempsaida

Gerador de senhas Passrap

Organizando suas músicas com Python

backup all files

Gerenciador de músicas

Gerando PDF de imagens

#1 Comentário enviado por renato_pacheco em 29/09/2005 - 23:50h
Cara... tô tentando compilar o arquivo em python (usbutils.py), mas não tô conseguindo. O q faço? Obrigado!

Contribuir com comentário

Entre na sua conta para comentar.