Witam,
Tym razem pragnę zwrócić waszą uwagę na pewne być może drobne, może mało ważne ale arcyciekawe zagadnienie związane z takim jakby niestandardowym wykorzystaniem terminali wszelkiej maści, które przecież często używamy czy to do debugowania, czy prezentacji wyników naszych układów z mikrokontrolerami czy też wreszcie prezentacji danych dla klienta jeśli chodzi o urządzenia które tworzymy, budujemy. Tym bardziej jest to istotne, wziąwszy pod uwagę fakt, że np wiele osób na tym etapie jeszcze nie potrafi np posługiwać się jakimś językiem programowania na PC, i cierpi ponieważ nie może zbudować jakiejś wygodnej aplikacji dla klienta - żeby mógł z poziomu komputera, wygodniej konfigurować nasze urządzenie. I tu z pomocą przychodzi nam zapomniany jakoś ostatnio bodaj najpopularniejszy standard sterowania terminalami VT100 ! Praktycznie każdy terminal to obsługuje albo powinien obsługiwać. Na końcu poradnika dowiecie się dokładnie o co chodzi i o jakich efektach mówię. Tym poradnikiem chciałbym więc odkurzyć niejako to zagadnienie i je ponownie spopularyzować - wierzę, że mi się uda z uwagi na prostotę wykorzystania we własnych dowolnych aplikacjach dzięki zaprezentowanej tu super prostej bibliotece, którą na dodatek możesz sam łatwo rozbudować o dodatkowe funkcjonalności. A jeśli to zrobisz - to proszę pochwal się tutaj co udało ci się osiągnąć ;)
Zapraszam więc do poradnika Video w rozdzielczości HD i posłuchania dobrej muzyki na początku ale szczególnie na końcu. Tytuł utworu: PAIO - FATHER'S DREAM ;)
Poniżej można pobrać kod źródłowy poradnika:
powodzenia ;)
Jak zwykle genialna robota w wykonaniu Pana Mirka. Na prawdę zadziwiające wsparcie i nie spotykana chęć przekazania wiedzy.
OdpowiedzUsuńpodstawka pod płytkę ATB wygląda znajomo :) pierwszy raz ją widziałem u kolegi SUN'a.
OdpowiedzUsuńI to jest to czego szukałem od dawna Mirek jesteś WIELKI. dzięki :)
Witam! jedno słowo mi się nasuwa REWELACJA!
OdpowiedzUsuńDla tych którzy by chcieli zaprojektować interfejs na styl NortonCommandera, to by dobrze wyświetlić znaki z zakresów kodów ASCII (szczególnie znaki z których można zbudować tabele) należy wpisać w PuTTy z ręki kodowanie CP866.
OdpowiedzUsuńTraci się polskie znaki ale można za to tabele budować... Ile ja się tego kiedyś naszukałem ;)
O! bardzo cenna podpowiedź - to tak jak ja szukałem tych komend do chowania i pokazywania kursora ;) ... a do znalezienia sposobu na ramki już mi sił zabrakło - a tu proszę fajny hint. Dzięki ;)
UsuńPoprawiam się - domyślne kodowanie używane w MS-DOS to CP437 i takie należy wpisać :)
Usuńhttp://en.wikipedia.org/wiki/Code_page_437
Kodowanie CP852 powinno działać z polskimi znakami.
UsuńAutor w main.c został nie poprawiony :)
OdpowiedzUsuńA bo mi ta moja durna klawiatura literki d często nie przepuszcza ;) do wymiany .... a taka miała być niby hamerykancka ... ale dzięki za uwagę już poprawiłem Karasia na Kardasia ;)
UsuńA ja właśnie kupiłem taką samą klawiature . Mam nadzieje że nie bedę miał takich numerów....
UsuńChoc wczrsniej mialem tez logitecha niby super klawiaturevale transceiver cos mi zakłócało i nie łaczyła dobrze....może drivery.
tobtak na marginesie:)
W "starożytności", kiedy jeszcze pisałem w pascalu pod dosem, używałem podobnego rozwiązania. Miałem monitor VGA i Hercules, na VGA uruchamiałem program, a na Herculesie pisałem sobie debugowanie, wrzucając dane bezpośrednio do pamięci karty. Poza tym Borlad pascal i Borland C++ umożliwiały prace w trybie dwumonitorowym. Z tego co słyszałem to były też debugery do Windowsa, "plujące" danymi na Herculesa.
OdpowiedzUsuńNo właśnie a mi z tej "starożytności" do dzisiaj zostało i wciąż po uszy siedzę i piszę na PC w Borland Delphi tyle że ostatnio w Delphi 2006 ;)
UsuńWitam.
OdpowiedzUsuńBardzo mi się podoba ten pomysł z terminalem.
Ja jako mój terminal wykorzystuję Androida z aplikacją BlueTerm. Łącze się przez bluetooth z prockiem i wyniki mam na tablecie :)))
A ja mam jeden problem.
OdpowiedzUsuńPodłączył Pan Putty na porcie COM118.
Ale skąd wiadomo jaki to ma być port? W managerze urządzeń programator występuje jako ECA Multiple USB Programmer.
I nie ma żadnych informacji o porcie COM.
A powiedz mi skąd ja mam wiedzieć jaką ty masz przejściówkę USB/RS232 czy tam programator z taką opcją ? :( ... z tym to musisz się do producenta swojego urządzenia zwrócić.
UsuńJa tam korzystam z takiej niezawodnej przejściówki ;)
http://atnel.pl/atb-usb-rs232.html
a program MkAvrCalculator sam pokazuje mi na którym porcie COM pojawia się ona gdy jest podłączona do kompa ;) ... w ogóle wykrywa gdy ją podłączam albo odłączam ... i jeszcze ładnie numerek portu COM ;)
zobacz tutaj:
http://mirekk36.blogspot.com/2013/10/atb-usb-rs232-w-koncu-jest.html
i tutaj:
http://mirekk36.blogspot.com/2013/10/rewolucja-w-mkavrcalculatorze.html
u mnie MkAvrCalculator nie pokazuje na którym porcie COM działa.
UsuńCzy to zależy od programatora czy sterowników do niego?
No nie dziwię się że ci nie pokazuje na jakim porcie skoro nie masz przejściówki USB/RS232 na scalaku FT232R - tylko na jakimś tam programatorze - do którego jak widzę nie masz za bardzo wsparcia technicznego od producenta :(
UsuńU mnie każdy produkt ma pod tym względem porządne wsparcie jak widzisz w tych poradnikach VIDEO .... o ile je w ogóle oglądałeś ?
Super poradnik ,nie miałem pojęcia że można tak używać terminala. Zawsze bałem się tego całego RS232, transmisji ,itp. (czarna magia) ,a tu okazało się to takie proste ,wielkie dzięki!!! ,a i dodam też że można używać tych kodów ANSI również bez problemu w Bascomie. Piszę o tym dlatego ,że jestem początkujący w C. (coś tam płodzę ,ale narazie to tylko proste programiki ,choć przyznam że powoli przekonuję się do C).
OdpowiedzUsuńale ja właśnie mówię o tym , że ten sposób nie jest zależny od języka programowania ;) więc nie ważne czy Bascom czy C czy pascal czy cokolwiek innego. Ot po prostu przypomniałem wszystkim standard VT100 taki trochę zapomniany ostatnio ;)
UsuńŚwietny poradnik, dziękuje bardzo mi się przydał do wizualizacji pomiarów temperatury.
OdpowiedzUsuńProponuje też od siebie taką dodatkową funkcję do biblioteki uart(z niebieskiej książki) do wysyłania float'ów:
void uart_putfloat(float value, int dokl) //dokl to dokładność pomiaru, ilosc miejsc po //przecinku
{
char string[17];
dtostrf(value,1,dokl,string);
uart_puts(string);
}
Pozdrawiam Piotrek
WItam. Świetne poradniki, pierwszy raz spotkałem osobę, która tak entuzjastycznie i bezinteresownie przekazuję swoją wiedzę. Pozdrawiam.
OdpowiedzUsuńWitam,
OdpowiedzUsuńtrafiłem dzisiaj na ten art i tak się zastanawiam, czy przypadkiem nie byłem (a raczej mój projekt opublikowany w kwietniu 2013 na elektrodzie: http://www.elektroda.pl/rtvforum/topic2540281.html ) inspiracją do powstania tej biblioteki i tym samym tego artykułu? :-)
pozdrawiam
vayo
Projekt bardzo fajny ;) ... ale chyba widzę go teraz pierwszy raz na oczy...
UsuńStandardu VT100 to ja używałem panie kolego jeszcze w czasach gdy programowałem procki 8051 używając starych EPROM'ów kasowanych ultrafioletem gdy jeszcze nie było na świecie takich wynalazków jak Bascom czy język C dla mikrokontrolerów ;) .... tak więc moja inspiracja sięga duuuużo dużo wcześniej
Ja też korzystam z terminala od wielu lat (niestety nie urodziłem się wczoraj :-) ), ale jakoś nie spotkałem do tej pory projektu elektronicznego wykorzystującego terminal w taki sposób. Dlatego też śmiałem pomyśleć, że mój projekt natchnął Cię, aby wrócić po latach do tego tematu, bo napisałeś swoją bibliotekę kilka dni po publikacji mojego projektu. Skoro to czysty zbieg okoliczności, to tylko się cieszyć, że nie tylko ja mam sentyment do takich staroci :-)
Usuńpozdrawiam
vayo
No właśnie .... ja też niby myślę o VT 100 jako "starociu" .... ale z drugiej strony - to właśnie w pewnym momencie gdy coś robiłem - i potrzebowałem w jakiś sposób uporządkować wyniki na terminalu - przypomniał mi się dawno nie używany i wręcz jakby zakopany pod ziemię VT100, jak internet długi i szeroki nikt od wielu lat go nie używał, wszędzie widać było tylko czarne ekraniki terminalów na przykładach ;) ...
UsuńTy w swoim projekcie to już w ogóle zrobiłeś FULL WYPAS, że tak powiem, to wygląda jak jakiś Total Comander na terminalu linuxa albo i lepiej ;)
Zamiast Putty - smartfon z Androidem. Okazało się że w Google Play jest kilka Bluetooth Terminali. Najlepiej zadziałał mi niejaki BlueTerm 2. Z wyjątkiem polskich znaków które wcinało
OdpowiedzUsuńdziałało poprawnie pozycjonowanie, kolorki, czyszczenie ektanu. I oto smartfon stał się platformą komunikacyjną ...
Jakieś błąd pojawia się, co mogłem źle skonfigurować?
OdpowiedzUsuńPrzecież kompiluje gotowy projekt.
16:28:21 **** Build of configuration Release for project TERMINAL ****
make all
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
../main.c: In function 'main':
../main.c:25:2: warning: implicit declaration of function 'USART_Init' [-Wimplicit-function-declaration]
../main.c:25:14: error: '__UBRR' undeclared (first use in this function)
../main.c:25:14: note: each undeclared identifier is reported only once for each function it appears in
../main.c:30:2: warning: implicit declaration of function 'uart_puts' [-Wimplicit-function-declaration]
../main.c:38:3: warning: implicit declaration of function 'uart_getc' [-Wimplicit-function-declaration]
../main.c: In function 'show_counter':
../main.c:123:3: warning: implicit declaration of function 'uart_putint' [-Wimplicit-function-declaration]
make: *** [main.o] Błąd 1
16:28:21 Build Finished (took 686ms)
Proszę o pomoc bo chciałbym się połączyć z terminalem.
A mówię w poradniku że trzeba sobie wgrać bibliotekę do UART z niebieskiej książki z Bluebooka - widać nie wgrałeś
Usuń