Windows:Anda dapat menarik informasi USB dari WMI, tetapi Anda harus menjadi administrator. Contohnya ada di .NET, tetapi Anda harus bisa menggunakan modul Python WMI. Ini akan memberi Anda akses ke string identifikasi USB, yang mungkin berisi informasi berguna. Untuk perangkat serial FTDI, ada jalan pintas menggunakan DLL FTDI, yang tidak memerlukan akses istimewa.
Linux:semua informasi yang tersedia ada di bawah /sys/bus/usb
, dan juga tersedia melalui udev. Sepertinya ini jawaban yang bagus.
Saya tahu ini adalah posting yang lebih lama, tetapi saya mengalami kesulitan hari ini. Akhirnya saya menggunakan perpustakaan wmi untuk python karena saya menggunakan mesin Windows (maaf, saya tahu jawaban saya hanya berlaku untuk Windows, tapi mungkin itu akan membantu seseorang).
Instal paket menggunakan pip terlebih dahulu:
pip install wmi
lalu
import wmi
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
print item.Dependent.Caption
Harus menghasilkan sesuatu seperti:
Hub Akar USB
Hub Akar USB
Port Komersial USB-ke-Serial (COM9) USB Root Hub yang produktif
Hub Akar USB
Perangkat Komposit USB
Perangkat Video USBPerangkat Audio USB
Hub Akar USB
...snip...
Dalam hal ini, Anda harus mengurai teks untuk menemukan port COM. Anda juga dapat melihat itemnya saja. Objek dependen untuk melihat atribut lain dari perangkat USB di samping Caption yang mungkin menurut Anda relevan:
instance of Win32_PnPEntity
{
Caption = "USB Root Hub";
ClassGuid = "{36fc9e60-c465-11cf-8056-444553540000}";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_PnPEntity";
Description = "USB Root Hub";
DeviceID = "USB\\ROOT_HUB\\4&32F13EF0&1";
HardwareID = {"USB\\ROOT_HUB&VID8086&PID3A36&REV0000",
"USB\\ROOT_HUB&VID8086&PID3A36", "USB\\ROOT_HUB"};
Manufacturer = "(Standard USB Host Controller)";
Name = "USB Root Hub";
PNPDeviceID = "USB\\ROOT_HUB\\4&32F13EF0&1";
Service = "usbhub";
Status = "OK";
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "001fbc0934d1";
};
Mengenai Linux, jika yang Anda butuhkan hanyalah menghitung perangkat, Anda bahkan dapat melewati ketergantungan pyudev untuk proyek Anda, dan cukup mengurai keluaran dari /sbin/udevadm info --export-db
perintah (tidak memerlukan hak akses root). Ini akan membuang semua informasi tentang perangkat dan kelas saat ini, termasuk ID produk USB untuk perangkat USB, yang seharusnya lebih dari cukup untuk mengidentifikasi adaptor USB-to-serial Anda. Tentu saja, Anda juga dapat melakukannya dengan pyudev.
Setidaknya untuk linux, Anda dapat menggunakan beberapa peretasan dummy untuk menentukan /dev node Anda, dengan memeriksa misalnya keluaran "ls /dev | grep ttyUSB" sebelum dan sesudah Anda memasang perangkat Anda. Ini entah bagaimana harus berlaku juga untuk kasus OSX. Ide yang bagus adalah memeriksa perintah tersebut menggunakan sesuatu seperti perintah subprocess.Popen() . Untuk windows, ini mungkin berguna.