Minicom jako terminal szeregowy

Ostatnio dużo pracuję na porcie szeregowym RS-232, przez który obsługuję także linuksową powłokę. Niezbędny jest do tego emulator terminala szeregowego. Dotychczas korzystałem przede wszystkim z programu GTKTerm, znacznie rzadziej z CuteCom. Na dłuższą metę w GTKTermie doskwierają dwie niedogodności. Po pierwsze na moim systemie lubi on wstawiać od czasu puste linie, jest to jednak tylko pewien wizualny mankament. Po drugie GTKTerm nie radzi sobie z edycją już wydrukowanej linii tekstu, przez co przeglądanie historii poleceń powłoki owocuje ciągłym zadrukowywaniem ekranu, nie mówiąc już o różnej maści paskach postępu, które błyskawicznie zapełniają dostępną historię ekranu; w tych warunkach na vi w ogóle nie da się pracować. Po trzecie — aplikacja ma bardzo krótką historię ekranu, przez co zwykłego dmesg-a trudno obejrzeć w całości.

CuteCom w ogóle jest nieporozumieniem: nie obsługuje kolorów, wejście działa w trybie liniowym a nie znakowym, a jego log potrafi zapchać RAM, zwłaszcza jeżeli będzie monitorował port, na którym działa programator ISP (co ma miejsce w ATmedze128). W pewnych zastosowaniach mógłby się sprawdzić, ale na pewno nie jest to wygodny emulator terminala.

Oczywiście, oprócz tych dwóch programów, znałem też Minicoma, ale zawsze miałem go za program bardzo nieprzyjazny użytkownikowi i nadający się tylko do współpracy z modemami. Okazuje się jednak, że bardzo prosto jest zmusić go do pracy w roli pełnoprawnego terminala szeregowego. To tylko kwestia dodania kilku opcji w wierszu poleceń:

$ minicom -m -o -w -c on

lub krócej:

$ minicom -mowc on

Znaczenie poszczególnych opcji:

  • -m umożliwia korzystanie ze skrótów klawiaturowych z wykorzystaniem Alta (np. Alt+Q w celu wyjścia z programu),
  • -o wyłącza zupełnie w tym przypadku zbędną inicjalizację modemu,
  • -w zawija wiersze,
  • -c on włącza kolorki.

Jeżeli nie chcemy za każdym razem wpisywać wszystkich przełączników, wystarczy dopisać do ~/.bashrc:

export MINICOM="-m -o -w -c on"

i uruchamiać minicom bez ręcznego dopisywania tych opcji.

Minicom

Po starcie pod Alt+Z zobaczymy wykaz komend, z których najbardziej będzie nas interesować Alt+O, czyli konfiguracja. Należy pamiętać, by w ustawieniach portu szeregowego wyłączyć kontrolę przepływu, a w ustawieniach ekranu dobrać odpowiedni dla nas schemat kolorów (czerwony pasek stanu to moim zdaniem przesada).

Zdaje mi się, że podczas zmiany konfiguracji portu program lubi zawiesić połączenie. Na szczęście rzadko muszę zmieniać parametry portu, zresztą wystarczy wtedy ponownie uruchomić Minicoma. Inny problem, który zauważyłem, to nieprawidłowe wyświetlanie polskich znaków. Znaki dwubajtowe wprawdzie wyświetlają się, ale są poprzedzone znakiem zapytania. Próbowałem korzystać z opcji -L, -l, -8 i zmieniać tablicę znaków, ale nie udało mi się z tym uporać. Brakuje mi też trybu szesnastkowego, dlatego nie mogę całkowicie zrezygnować z GTKTerma.

Niemniej Minicom okazał się całkiem niezłą aplikacją, a jego zaletą jest popularność (nie powinno być problemów ze znalezieniem go w repozytorium) i możliwość pracy bez środowiska graficznego.

PS Miłośnikom programu PuTTY warto przypomnieć, że radzi on sobie całkiem nieźle także z RS-232!

Komentarzy: 1 do „Minicom jako terminal szeregowy“

  1. sadi komentuje:

    Ja używam od dłuższego czasu cutecom’a i faktycznie trzeba przyznać, że ma on swoje minusy. Przyznam, że zacząłem się zastanawiać nad napisaniem własnego programu do komunikacji przez port szeregowy. W Ruby, albo Pythonie to kwestia kilku wieczorów pracy…

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">