W związku z projektem nad którym aktualnie pracuję, firma potrzebowała kupić mi konwerter sieci CAN na USB. Zdecydowaliśmy się na I-7565 takwańskiej firmy ICP-CON - bo dostarczają sterownik dla Linuxa. Sam produkt jest prosty - podejrzewam że nawet jacyś studenci na projekcie semestralnym zrobiliby coś porównywalnego - więc za taką cenę spodziewałem się produktu doskonale opracowanego. Jeśli chodzi o sprzęt - nie ma dwóch zdań, wygląda na solidny, i działa nieźle.
Przestaje być tak różowo kiedy zacznie się czytać dokumentację żeby napisać sterownik - po wielu stronach opisu klikania "next" w instalatorze dla Windows, następuje lakoniczny opis komend obsługiwanych przez urządzenie. To nic, że nie opisali jak wygląda odbieranie ramek, a jedynie nadawanie, ale dlaczego nie ma informacji o prędkości z jaką należy się łączyć z utworzonym wirtualnym portem szeregowym?
Jeszcze lepszy jest sterownik dla Linuxa. Dostarczony przez producenta nie kompiluje się jako moduł w miarę nowego kernela (2.6.24). W dokumentacji oczywiście o Linuxie ani słowa, więc ściągnąłem źródła jądra i zacząłem się rozglądać co i jak. Po dwóch godzinach okazało się, że sterowniki są standardowo dostępne w każdym jądrze, a to co dostarczyli to kilka plików z /drivers/usb/serial z dorobionym niedziałającym Makefile.
W każdym razie, sterownik (w wersji, powiedzmy, 0.2) udało się napisać - do ściągnięcia klasa C++ ze sterownikiem oraz uzupełnienie dokumentacji konwertera. Mam nadzieję że komuś się przyda, a leniwi Tajwańczycy będą się smażyć w piekle.