www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Terminalski ukazi - preprost interpreter (HOWTO)

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70795.75

PrispevekObjavljeno: Čet Dec 29, 2005 10:28 pm    Naslov sporočila:  Terminalski ukazi - preprost interpreter (HOWTO) Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 327
Aktiv.: 1.38
Kraj: Vransko

PrispevekObjavljeno: Čet Dec 29, 2005 11:32 pm    Naslov sporočila:   Odgovori s citatom

Zelo zanimiva in uporabna resitev!
Sam uporabljam malo bol poenostavljen sistem, ki v UART Rx interruptu lovi karakterje in jih zlaga v nek message buffer. Ko ujame znak ENTER (0x0D) postavi en globalni flag na 1. Ta flag potem gledam v glavni zanki...in ko je 1 izvedem rutino parseMessage, ki pogleda kaj se nahaja v bufferju. In ce je kaj legalnega po potrebi izlusci se parametre in izvede ukaz/poklice rutino z danimi parametri. Hiter in enostaven sistem za nastavljenja/branje parametrov ali pa samo za debugiranje.

Trenutno pa se matram z enim "scroll meni" sistemom za graficni LCD. Je kdo ze pocel kaj takega?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70795.75

PrispevekObjavljeno: Čet Dec 29, 2005 11:54 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70795.75

PrispevekObjavljeno: Pet Dec 30, 2005 12:07 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 327
Aktiv.: 1.38
Kraj: Vransko

PrispevekObjavljeno: Pet Dec 30, 2005 12:57 am    Naslov sporočila:   Odgovori s citatom

Mogoce sem malo nerodno napisal. V bistvu ne rabim grafike kot take. Osnova je lcd 128x64, ki je razdeljen na osem vrstic. Torej ima meni na enem screenu osem moznosti izbire. Izbira je lahko drug podmenu ali pa vnos parametra ali kaj drugega. Problem se pojavi, ce ima meni vec kot osem vrstic. Potem je treba scrollat vrstice gor in dol. Zraven sem si pa omislil se invertiranje aktivne vrstice.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Pet Dec 30, 2005 8:45 am    Naslov sporočila:   Odgovori s citatom

Mogoče pa je to prava stvar za tebe: easyGUI
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.20

PrispevekObjavljeno: Pet Dec 30, 2005 11:25 am    Naslov sporočila:   Odgovori s citatom

Sam imam za dostop do CPU-ja malce drugačen pristop, ki pa omogoča nekatere dodatne dobrote n.pr. tudi komunikacijo preko radijskih postaj itd...
Klasičen terminalski dostop se mi zdi malce omejujoč, res pa je, da na strani PC-ja rabiš samo konzolo in ne dodatnega SW.
Sprejemanje in oddajanje podatkov je izvedeno preko telegramov, vse se odvija neodvisno preko serijskega interapta.
Vmesnik do aplikacije je samo bafer s podatki in par zastavic.

Oddaja poteka:
Podatke vpišem v bafer in sprožim oddajanje. Funkcija v interaptu sama doda glavo, noge in 16 bitni crc.

Sprejem poteka:
Podatki pridejo po serijskem portu, če je sekvenca podatkov ustrezna (glava, številka naprave, dolžina, crc in noge) potem so podatki v baferju veljavni, kar signaliziram z ustrezno zastavico "novi podatki v baferju".

V telegramu (sedaj podatki v baferju) določim en byte kot tip telegrama, ki ga potem z običajnim "case" stavkom obdelujem na različne načine.

Citiram:
bray: "scroll meni"

Kaj je tukaj nejasno?
Če se že znaš pomikat po eni strani (kar je bilo nekako razvidno iz tvojega sporočila) res ne vidim problema da izvedeš tudi scroll.
Imaš pač polje z napisi menija in poleg še:
- kazalec na izbrani zapis (tu poudariš/označiš napis) in
- dodaten kazalec, ki kaže katera vrstica se bo prva prikazala na zaslonu.
Ko prideš navzdol do zadnje vrstice na zaslonu, pomikaš oba kazalca navzdol.
Ko prideš navzgor do prve vrstice na zaslonu, pomikaš oba kazalca navzgor.
Vmes pomikaš gor/dol samo kazalec za izbiro.
Istočasno preverjaš še omejitve glede na dolžino polja in število prikazanih vrstic.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 327
Aktiv.: 1.38
Kraj: Vransko

PrispevekObjavljeno: Pet Dec 30, 2005 12:04 pm    Naslov sporočila:   Odgovori s citatom

igor k. je napisal/a:
Mogoče pa je to prava stvar za tebe: [url=h**p://www.easygui.com/] easyGUI[/url]


Tale easyGUI sem enkrat ze gledal in kolikor sem videl dela z "narisanimi" screeni, kar pa pri meni ne pride v postev, ker je to prevec potratno (en tak screen zavzame 1kByte pri resoluciji 128x64).

Proteus je napisal/a:
Kaj je tukaj nejasno?


Teorija je tudi meni jasna ze od samega zacetka. Smile Ko pa potem dodas vse pogoje in varjante izpisa/vnosa pa hitro nastane "spageti koda". Ampak zdaj dela....and nothing else matters...dokler je se flasha in rama kej. Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.20

PrispevekObjavljeno: Pet Dec 30, 2005 12:23 pm    Naslov sporočila:   Odgovori s citatom

To je segment moje kode, ki počne to, kar sem napisal.
Ne vidim prav nobenih špagetov. Vsa umetnost je v tem, da kodo razbiješ na smiselne segmente oz. funkcije.
Funkcija ShowMenu() ne naredi nič drugega, kot smiselno izpiše tekst na ekranu z ozirom na oba kazalca.
Koda:

/**********************************************************/
/*  Opis: Funkcija se izvaja ciklično v glavni zanki      */
/*        fModeMeni preklaplja tipke "gor"/"dol" med      */
/*        editiranjem in pomikanjem po menuju             */
/**********************************************************/
void MMI(unsigned char nKey)
{
   if (fModeMeni == 1)
   {
      switch (nKey)
      {
         case 'U':
            if (MNUptr > MNUmin) MNUptr--;
            if (MNUptr < MNUwin) MNUwin--;
            ShowMenu();
         break;

         case 'D':
            if (MNUptr < MNUmax) MNUptr++;
            if (MNUptr > (MNUwin + 2))  MNUwin++;
            ShowMenu();
         break;
      }
   }

   aMenu[MNUptr].fM(nKey);
}
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 327
Aktiv.: 1.38
Kraj: Vransko

PrispevekObjavljeno: Pet Dec 30, 2005 2:46 pm    Naslov sporočila:   Odgovori s citatom

Ko sem govoril o spagetih nisem mel v mislih tvoje kode. Tale tvoja rutinica res lepo zgleda ampak manjka se precej tistega kar imam jaz v mislih in kar rabim. Predvsem to, kaj se zgodi, ko potrdis/izberes neko vrstico.
Drugace si pa tole ze zasluzi svojo temo, ker sva cist posvinjala maretovo temo. Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Proteus
Član
Član



Pridružen-a: Sre 15 Jun 2005 10:03
Prispevkov: 1943
Aktiv.: 8.20

PrispevekObjavljeno: Pet Dec 30, 2005 7:41 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
bray: Predvsem to, kaj se zgodi, ko potrdis/izberes neko vrstico.

Odgovor se skriva v zadnji vrstici: aMenu[MNUptr].fM(nKey);

Izgled menija enostavno konfiguriraš s poljem, ki vsebuje tekst menija in funkcijo, ki se izvaja ob potrditvi (sledi del kode iz aplikacije):
Koda:

struct sMeni code aMenu[] =
{
   _TXT_KONTINUIRANO,  (void *)Run,   
   _TXT_dP_ODVISEN,    (void *)Run,   
   _TXT_dP_DINAMICEN,  (void *)Run,   
   _TXT_ROCNO_IMPULZ,  (void *)SetMenu,
   _TXT_NASTAVITVE,    (void *)SetMenu,
   _TXT_T1,            (void *)Edit,
   _TXT_T2,            (void *)Edit,
   _TXT_T3,            (void *)Edit,
   itd...
   itd...
        itd...
   _TXT_IZHOD,         (void *)SetMenu
};

Polje je določeno tako, da levo pišeš tekst, ki se izpisuje v meniju, desno pa funkcija, ki se izvaja ob izbiri.
Tako n.pr. funkcija Run() predstavlja določen režim delovanja, funkcija SetMenu() je namenjena izbiri podmenijev, Funkcija Edit() pa spreminjanju parametrov.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
BorutS
Član
Član



Pridružen-a: Pet 09 Jun 2006 16:25
Prispevkov: 107
Aktiv.: 0.46
Kraj: Cerklje na Gorenjskem

PrispevekObjavljeno: Sre Avg 30, 2006 9:35 am    Naslov sporočila:   Odgovori s citatom

MarE69 tale tvoj preprost ukazni interpreter je zelo uporaben in dejansko preprost. Ga že veselo uporabljam. Vse pohvale!

LP
Borut
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bostjang
Član
Član



Pridružen-a: Tor 03 Jan 2006 15:29
Prispevkov: 3469
Aktiv.: 14.64
Kraj: Postojna

PrispevekObjavljeno: Sre Avg 30, 2006 11:22 am    Naslov sporočila:   Odgovori s citatom

Zdi se mi primerno, da na tem mestu objavim svoj interpreter, ki sem si ga pripravil za test periferije. Narejen je podobno kot debug.exe v DOS-u, omogoča pa pisanje in branje z določenega naslova, 8, 16 ali 32 bitno. Seveda vse v hex. Mišljen pa je za ARM.


debug.c
 Opis:
Interpreter za pisanje/branje spomina preko RS-232.

Download
 Ime datoteke:  debug.c
 Velikost datoteke:  3.75 KB
 Downloadano:  19 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group