Ja jednak będę się upierał dalej przy swoim, to chyba system wymusza na nas takie ograniczenia i podchodzenie do tematu od d.. strony.
Weźmy na przykład taki prosty projekt, jakim jest PowerSwitch.
Przeglądając listing programu sterującego nie widzę tam nic skomplikowanego
usb_init();
usb_find_busses();
usb_find_devices();
for(bus=usb_busses; bus; bus=bus->next){
for(dev=bus->devices; dev; dev=dev->next){
if(dev->descriptor.idVendor == USBDEV_VENDOR && dev->descriptor.idProduct == USBDEV_PRODUCT)
break;
}
if(dev)
break;
}
if(!dev){
fprintf(stderr, "Could not find USB device vendor=0x%x product=0x%x\n", USBDEV_VENDOR, USBDEV_PRODUCT);
exit(1);
}
/* We have searched all devices on all busses for our USB device above. Now
* try to open it and perform the vendor specific control operations for the
* function requested by the user.
*/
handle = usb_open(dev);
if(!handle){
fprintf(stderr, "Error opening USB device PowerSwitch: %s\n", usb_strerror());
exit(1);
}
Widać jak na dłoni, co i w jakiej kolejności idzie, inicjacja usb, pobranie uchwytu do urządzenie na podstawie USBDEV_VENDOR oraz USBDEV_PRODUCT, wyświetlenie komunikatu, że nie znaleziono urządzenia, następnie otworzenie urządzenia komunikat, że nie udało się, dalej już nie wklejałem, bo to nie ma sensu napomnę tylko ze jest tam wysłanie odpowiedniego komunikatu i odebranie odpowiedzi i odpowiednio zareagowanie na to (zainteresowani zajrzą do źródła, jeśli będzie taka potrzeba).
I tego nam trzeba
A przeglądając przykłady projektów pod Windowsem to koszmar, ni ładu ni składu. Pełno jakiś bibliotek, driwerów, odwołanie się do innych plików itp.
Większości młodych elektroników zaczynających przygodę z programowaniem potrzebuje tylko ułamka możliwości, jakie oferuje złącze USB.
Nikt nie wymaga transferów nie wiadomo, jakich.
Wystarczy pobrać uchwyt do urządzenia i wysłać mu pojedyncze bajty.
Wiem, że to stwarza wiele problemów, bo zaraz ktoś będzie chciał, wysylac masę danych, to znowu transfer będzie za wolny itp. Takim osobom proponowałbym wczytanie się w dokumentacje i podpatrzenie jak inni to zrobili.
Ale większość na początek potrzebuje podpiąć diodę do mikrokontrolera a od strony peceta wstawić Checkbox i ją zapałać, a mikrokontroler ma w odpowiedni sposób zareagować.
Z wieloma osobami rozmawiałem na ten temat i każdy przyznaje mi racje, dziwie się ze nikt nie wpadł na ten pomysł, aby w tak prosty sposób wykorzystać ten typ złącza.
Nie wiem gdzie jest błąd w moim rozumowaniu, ale wydaje mi się, że nie powinno to być aż tak skomplikowane. Kwestia tego, aby mądrzy ludzie usiedli nad tym i wykrzesali z tych tysięcy stron dokumentacji parę linijek, jakich nam trzeba.