Jest też http://sourceforge.net/projects/tty0tty/ tty0tty, który jest prawdziwym emulatorem null-modem dla Linuksa.
Jest to prosty moduł jądra - mały plik źródłowy. Nie wiem, dlaczego na SourceForge jest tylko kciuk w dół, ale dla mnie działa dobrze. Najlepsze jest to, że emuluje również piny sprzętowe (RTC / CTS DSR / DTR). Implementuje nawet polecenia iotcl TIOCMGET / TIOCMSET i TIOCMIWAIT!
Na ostatnim jądrze mogą pojawić się błędy kompilacji. To jest łatwe do naprawienia. Wystarczy wstawić kilka wierszy na górze źródła module / tty0tty.c (po dołączeniach):
#ifndef init_MUTEX
#define init_MUTEX(x) sema_init((x),1)
#endif
Po załadowaniu moduł tworzy 4 pary portów szeregowych. Urządzenia to / dev / tnt0 do / dev / tnt7, gdzie tnt0 jest podłączony do tnt1, tnt2 jest podłączony do tnt3 itd. Aby móc korzystać z urządzeń, może być konieczne poprawienie uprawnień do pliku.
edytować:
Myślę, że byłem trochę szybki z moim entuzjazmem. Chociaż sterownik wygląda obiecująco, wydaje się niestabilny. Nie wiem na pewno, ale wydaje mi się, że zepsuło to maszynę w biurze, nad którym pracowałem w domu. Nie mogę tego sprawdzić, dopóki nie wrócę do biura w poniedziałek.
Po drugie, TIOCMIWAIT nie działa. Kod wydaje się być skopiowany z jakiegoś przykładowego kodu „tiny tty”. Wydaje się, że obsługa TIOCMIWAIT jest na miejscu, ale nigdy się nie budzi, ponieważ brakuje odpowiedniego wywołania wake_up_interruptible ().
edytować:
Wypadek w biurze naprawdę był winą kierowcy. Brakowało inicjalizacji, a całkowicie niesprawdzony kod TIOCMIWAIT spowodował awarię maszyny.
Wczoraj i dziś spędziłem na przepisywaniu sterownika. Było wiele problemów, ale teraz działa dobrze dla mnie. Wciąż brakuje kodu do kontroli przepływu sprzętu zarządzanego przez sterownik, ale nie potrzebuję go, ponieważ będę zarządzał pinami samodzielnie za pomocą TIOCMGET / TIOCMSET / TIOCMIWAIT z kodu trybu użytkownika.
Jeśli ktoś jest zainteresowany moją wersją kodu, wyślij mi wiadomość, a wyślę ją do Ciebie.