|
|
|
|
Strumenti |
17-06-2020, 19:38 | #1 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
[C++] gestire la porta USB
ho già scritto tempo fa un software per la gestione della porta RS232 e pensavo fosse un sistema simile ma sembrerebbe non proprio così.
Da quel che ho letto si deve cercare il path del dispositivo e da questo con la CreateFile() aprire il device. Da gestione del computer ho trovato un nome tipo Codice:
"USB\VID_0582&PID_.......", Se avete esperienze in merito. Ultima modifica di misterx : 17-06-2020 alle 20:03. |
18-06-2020, 08:06 | #2 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
ok,
sto scoprendo che esistono diverse strade per risolvere il problema, attraverso un driver virtuale che emula la porta RS232, oppure attraverso librerie. Dato che non so minimamente se ad esempio un emulatore può abbattere le prestazioni sulla porta USB, ma credo di si in quanto anche l'emulatore credo debba scrivere leggere al posto mio, leggevo in merito a WinUSB che si appoggia al file di sistema winusb.sys: ho scritto cavolate? |
18-06-2020, 15:15 | #3 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
aggiungo qualche codice trovato in giro, casomai a qualcuno venisse la voglia di intromettersi in questa discussione
Codice:
unsigned index; HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; TCHAR HardwareID[1024]; // List all connected USB devices hDevInfo = SetupDiGetClassDevs(NULL, TEXT("USB"), NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES); for (index = 0; ; index++) { DeviceInfoData.cbSize = sizeof(DeviceInfoData); if (!SetupDiEnumDeviceInfo(hDevInfo, index, &DeviceInfoData)) { return false; // no match } SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_HARDWAREID, NULL, (BYTE*)HardwareID, sizeof(HardwareID), NULL); if (_tcsstr(HardwareID, _T("VID_1234&PID_5678"))) { return true; // match } } |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:14.