Strona 1 z 1

UART pod Linuxem w C

: poniedziałek 06 lut 2017, 11:42
autor: squeez
Zaczynam się za napisanie prostego programu do komunikacji poprzez port szeregowy w kompie COM z mikrokontrolerem.

Od strony uC jest zrobione, za program na PC zaczynam się zabierać. Znalazłem kilka opisów i przykładów mniej lub bardziej rozbudowanych.

Czy ktoś z szanownego grona pisał obsługę UARTa na Linuxie? wówczas miałbym kogo podpytać :)

Od tego zaczynam swoją edukację:
https://www.cmrr.umn.edu/~strupp/serial.html
http://tldp.org/HOWTO/Serial-Programmin ... /x115.html

Oraz coś co póki co wydaje się najlepszym zbiorem wiedzy: http://ep.com.pl/files/3151.pdf

Dodam, że wcześniej w C poza "Hello World" nie napisałem nic na PC :)

Póki co ogarnąłem w miarę sensowną obsługę parametrów przez getopt i szukam biblioteki do parsowania prostych plików konfiguracyjnych. W sumie to podstawy ale wolę skorzystać z gotowej sprawdzonej biblioteki niż pisać ją od nowa na takim etapie jakim jestem.

Stąd też moje pytanie dodatkowe, czy ktoś zna jakąś fajną prostą bibliotekę do obsługi plików konfiguracyjnych? wystarczy najprostsza składnia.

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 12:21
autor: tasza
to jest dość sympatyczne, a pliki konfiguracyjne są a'la windows - sekcje, w nich pary klucz=wartość, proste i czytelne
:arrow: https://www.compuphase.com/minini.htm

o, ta jest fajna, ale nieco bardziej skomplikowana, utf, wartości multiline etc
:arrow: https://github.com/benhoyt/inih

Przy pisaniu aplikacji dla Linux to C wybrałeś z jakiegoś konkretnego powodu?
Bo można mieć okienkową aplikację dla KDE/Gnome w parenaście minut, w Lazarus/FPC

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 12:41
autor: squeez
Program nie będzie okienkowy tylko konsolowy, a C ponieważ znam już je dosyć dobrze i uczenie się kolejnego języka mija mi się z celem tzn. wolę rozwinąć swoje C, niż poznać trochę kolejny język.

Do tego w linuxie C jest niemal od kopa :) korzystam z tego samego Eclipse co dla ARM czy AVR czyli nie muszę się uczyć kolejnych rzeczy a skupić się tylko na kodzie :)

Co do samej biblioteki, dzięki za link sprawdzę a sam na githubie znalazłem to: https://github.com/taneryilmaz/libconfigini

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 13:14
autor: tasza
squeez pisze:uczenie się kolejnego języka mija mi się z celem tzn. wolę rozwinąć swoje C, niż poznać trochę kolejny język

no to już jak wolisz, ja uważam, że lepiej spróbować czegoś obok , bo często nikt nie pyta w czym pani/pan pisze tylko pokazuje źródła potworka w jakimś języku i pyta - da z tym radę? jak nie to następna proszę


to co znalazłeś na github jest w miarę ok, tak naprawdę najważniejsze aby się ładnie wpasowało w to co już masz naklecone, pochwal się jak coś więcej zmajstrujesz

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 13:28
autor: inż.wielki
Generalnie, to ja jak mam robić jakąś aplikację na linucha współpracującą z np portem szeregowym, to staram się nie odkrywać koła na nowo i korzystam z funkcji systemowych. Czyli np, zamist programu piszę skrypt, który robi to samo co program a jest krótszy i prostszy. Ew. możesz wykorzystać w programowaniu skrypty i uruchamiać je jako nowe wątki. Jeżeli jednak chcesz wszystko programowo, to podejrzewam że możesz po prostu otworzyć uart'a jako plik w /dev/TTYUSB* i pisać oraz czytać z niego.

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 13:39
autor: tasza
w sumie racja, to testów "na kolanie" można i tak, o takie coś do poczytania:
:arrow: https://www.cyberciti.biz/hardware/5-li ... l-console/

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 13:56
autor: squeez
Programy do samej obsługi UARTA to mam i zazwyczaj korzystam z minicom ale sytuacja jest taka że program na PC będzie kontrolował pracę kilku sterowników po RS485.
Robienie tego na skryptach nie jest najleszym pomysłem, choćby dlatego że protokół komunikacji jaki napisałem ma sumę kontrolną a jej wartość może przyjmować różne wartości czyli potrzebuję komunikacji niejako RAW bez mapowania niektórych znaków itp. a to nie jest standardowy tryb.

Dlatego muszę skonfigurować port w tryb RAW, bez mapowania, kontroli przepływu i wykorzystać tylko TX, RX bez DTD, DTR itp. tak by wysyłanie i obieranie było poprawne.
Poza tym z tego co widzę to jakoś mocno skomplikowane to nie jest.

W podanych linkach jest to opisane, jak naskrobię coś już działającego to pewnie się pochwalę z tym, że na początek chcę zrobić wczytywanie konfiguracji z pliku bo takie parametry jak port, baudrate itp. można zaszyć tam zamiast na sztywno w programie albo wpisywać to za każdym razem jako parametry :)

A co do znajomości innych narzędzi to tak masz racje lepiej mieć szersze horyzonty niż klapki na oczach :) ale w chwili obecnej ja piszę dla siebie i wolę mocniej zgłębić C i potem z tym migrować np. aplikacji do Androida. Czyli mieć dobrze opanowany jeden język dzięki któremu zaprogramują AVR, ARM, PC, Androida itp. niż do każdego pisać w czymś innym.

Nawet przenoszenie obsługi protokołu będzie łatwiejsze bo teoretycznie ten sam język te same funkcje.

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 18:12
autor: Antystatyczny
Chętnie zapoznam się z efektami, bo i ja czasem coś dłubię w linuxie.

Re: UART pod Linuxem w C

: poniedziałek 06 lut 2017, 18:55
autor: tasza
:arrow: squeez no to masz kibiców, a to dodaje skrzydeł - wrzucaj postępy w pracach :!: , innym też się przyda :idea:

Re: UART pod Linuxem w C

: wtorek 07 lut 2017, 08:30
autor: squeez
No to nie pozostaje mi nic innego jak informować o postępach :) ale te za kilka dni, najpierw robotę należy ogarnąć :)

--- EDIT ---
Prace nieśmiało idą do przodu, jako bibliotekę do plików konfiguracyjnych wybrałem libconfuse prosta i łatwa implementacja. https://github.com/martinh/libconfuse