Strony

środa, 1 maja 2013

Terminal jako kolorowy wyświetlacz LCD ? (alfanumeryczny) ;)

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 ;)

28 komentarzy:

  1. Jak zwykle genialna robota w wykonaniu Pana Mirka. Na prawdę zadziwiające wsparcie i nie spotykana chęć przekazania wiedzy.

    OdpowiedzUsuń
  2. podstawka pod płytkę ATB wygląda znajomo :) pierwszy raz ją widziałem u kolegi SUN'a.
    I to jest to czego szukałem od dawna Mirek jesteś WIELKI. dzięki :)

    OdpowiedzUsuń
  3. Witam! jedno słowo mi się nasuwa REWELACJA!

    OdpowiedzUsuń
  4. 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.
    Traci się polskie znaki ale można za to tabele budować... Ile ja się tego kiedyś naszukałem ;)

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
    2. Poprawiam się - domyślne kodowanie używane w MS-DOS to CP437 i takie należy wpisać :)
      http://en.wikipedia.org/wiki/Code_page_437

      Usuń
    3. Kodowanie CP852 powinno działać z polskimi znakami.

      Usuń
  5. Autor w main.c został nie poprawiony :)

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
    2. A ja właśnie kupiłem taką samą klawiature . Mam nadzieje że nie bedę miał takich numerów....
      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:)

      Usuń
  6. 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ń
    Odpowiedzi
    1. 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ń
  7. Witam.
    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 :)))

    OdpowiedzUsuń
  8. A ja mam jeden problem.
    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.

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ć.

      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

      Usuń
    2. u mnie MkAvrCalculator nie pokazuje na którym porcie COM działa.
      Czy to zależy od programatora czy sterowników do niego?

      Usuń
    3. 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 :(

      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ś ?

      Usuń
  9. 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ń
    Odpowiedzi
    1. 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ń
  10. Świetny poradnik, dziękuje bardzo mi się przydał do wizualizacji pomiarów temperatury.
    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

    OdpowiedzUsuń
  11. WItam. Świetne poradniki, pierwszy raz spotkałem osobę, która tak entuzjastycznie i bezinteresownie przekazuję swoją wiedzę. Pozdrawiam.

    OdpowiedzUsuń
  12. Witam,
    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

    OdpowiedzUsuń
    Odpowiedzi
    1. Projekt bardzo fajny ;) ... ale chyba widzę go teraz pierwszy raz na oczy...

      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

      Usuń
    2. 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 :-)
      pozdrawiam

      vayo

      Usuń
    3. 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 ;) ...

      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 ;)

      Usuń
  13. 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
    działało poprawnie pozycjonowanie, kolorki, czyszczenie ektanu. I oto smartfon stał się platformą komunikacyjną ...

    OdpowiedzUsuń
  14. Jakieś błąd pojawia się, co mogłem źle skonfigurować?
    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.

    OdpowiedzUsuń
    Odpowiedzi
    1. A mówię w poradniku że trzeba sobie wgrać bibliotekę do UART z niebieskiej książki z Bluebooka - widać nie wgrałeś

      Usuń