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.
UART pod Linuxem w C
Re: UART pod Linuxem w C
to jest dość sympatyczne, a pliki konfiguracyjne są a'la windows - sekcje, w nich pary klucz=wartość, proste i czytelne
https://www.compuphase.com/minini.htm
o, ta jest fajna, ale nieco bardziej skomplikowana, utf, wartości multiline etc
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
https://www.compuphase.com/minini.htm
o, ta jest fajna, ale nieco bardziej skomplikowana, utf, wartości multiline etc
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ć)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: UART pod Linuxem w C
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
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
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ć)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
- inż.wielki
- User
- Posty: 307
- Rejestracja: niedziela 20 gru 2015, 23:11
Re: UART pod Linuxem w C
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
w sumie racja, to testów "na kolanie" można i tak, o takie coś do poczytania:
https://www.cyberciti.biz/hardware/5-li ... l-console/
https://www.cyberciti.biz/hardware/5-li ... l-console/
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: UART pod Linuxem w C
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.
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.
- Antystatyczny
- Geek
- Posty: 1168
- Rejestracja: czwartek 03 wrz 2015, 22:02
Re: UART pod Linuxem w C
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.
Re: UART pod Linuxem w C
squeez no to masz kibiców, a to dodaje skrzydeł - wrzucaj postępy w pracach , innym też się przyda
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: UART pod Linuxem w C
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
--- 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 1 gość