UART pod Linuxem w C

W tym miejscu zadajemy pytania na temat języka C, dzielimy się swoją wiedzą, udzielamy wsparcia, rozwiązujemy problemy programistyczne.
Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

UART pod Linuxem w C

Postautor: squeez » poniedziałek 06 lut 2017, 11:42

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.

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: UART pod Linuxem w C

Postautor: tasza » poniedziałek 06 lut 2017, 12:21

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
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: UART pod Linuxem w C

Postautor: squeez » poniedziałek 06 lut 2017, 12:41

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

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: UART pod Linuxem w C

Postautor: tasza » poniedziałek 06 lut 2017, 13:14

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
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
inż.wielki
User
User
Posty: 307
Rejestracja: niedziela 20 gru 2015, 23:11

Re: UART pod Linuxem w C

Postautor: inż.wielki » poniedziałek 06 lut 2017, 13:28

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.

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: UART pod Linuxem w C

Postautor: tasza » poniedziałek 06 lut 2017, 13:39

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/
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: UART pod Linuxem w C

Postautor: squeez » poniedziałek 06 lut 2017, 13:56

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.

Awatar użytkownika
Antystatyczny
Geek
Geek
Posty: 1168
Rejestracja: czwartek 03 wrz 2015, 22:02

Re: UART pod Linuxem w C

Postautor: Antystatyczny » poniedziałek 06 lut 2017, 18:12

Chętnie zapoznam się z efektami, bo i ja czasem coś dłubię w linuxie.
"The true sign of intelligence is not knowledge but imagination" Albert Einstein.

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: UART pod Linuxem w C

Postautor: tasza » poniedziałek 06 lut 2017, 18:55

:arrow: squeez no to masz kibiców, a to dodaje skrzydeł - wrzucaj postępy w pracach :!: , innym też się przyda :idea:
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
squeez
User
User
Posty: 211
Rejestracja: czwartek 04 lut 2016, 10:13

Re: UART pod Linuxem w C

Postautor: squeez » wtorek 07 lut 2017, 08:30

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


Wróć do „Pisanie programów w C”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości