Terminalovy jazyk - nastavovani parametru
Richard Kaliciak
hw.kaliciak na stonline.sk
Čtvrtek Srpen 28 10:59:41 CEST 2014
Dobry den,
ja na podobne ucely pouzivam z avrlib moduly
cmdline.c
cmdline.h
cmdlineconf.h
+ main z examples
potom mozete pouzit prikazy
GET r100
SET r100 12500
Tu je este moj priklad (skrateny):
/**
* Implementovane prikazy:
* printled <text> - vypis textu na 16-seg. displeji
* set led on - zapne led displej
* set led off - vypne led displej
* set dcf on - zapne prijem casu a aktualizuje cas
* set dcf off - vypne -"-
* set time on - zapne zobrazovanie casu na led displeji
* set time off - vypne zobrazovanie casu na led displeji
* set temp on/off - zapne/vypne zobrazovanie teploty na led displeji
* set power <hodnota> - nastavi vykon od 0 do 100
* time - vypise aktualny cas
* date - vypise aktualny datum
* temp - vypise aktualnu teplotu
* temp1m - vypise aktualnu priemernu teplotu za 1 minutu
* show - vypise nastavenia
* pid k_p <hodnota> - nastavi P-faktor regulatora (zosilnenie)
* pid k_i <hodnota> - nasatvi I-faktor regulatora (integracna konstanta)
* pid k_d <hodnota> - nasatvi D-faktor regulatora (derivacna konstanta)
*/
#include "avrlib/cmdline.h" // include cmdline function library
...
/**
* interpreter prikazoveho riadku
*/
void goCmdline(void)
{
u08 c;
// print welcome message
vt100ClearScreen();
vt100SetCursorPos(1,0);
rprintfProgStrM("\r\nWelcome to the ATMega Command Line!\r\n");
rprintfProgStrM("Version ");
rprintfProgStrM( __DATE__ );
rprintfProgStrM(" ");
rprintfProgStrM( __TIME__ );
rprintfCRLF();
// initialize cmdline system
cmdlineInit();
// direct cmdline output to uart (serial port)
cmdlineSetOutputFunc(uartSendByte);
// add commands to the command database
cmdlineAddCommand("exit", exitFunction);
cmdlineAddCommand("help", helpFunction);
cmdlineAddCommand("dumpargs1", dumpArgsStr);
cmdlineAddCommand("dumpargs2", dumpArgsInt);
cmdlineAddCommand("dumpargs3", dumpArgsHex);
cmdlineAddCommand("st2", cmdSet );
cmdlineAddCommand("set", cmdSet );
cmdlineAddCommand("show", showOptions );
cmdlineAddCommand("pid", cmdPid );
// send a CR to cmdline input to stimulate a prompt
cmdlineInputFunc('\r');
// set state to run
Run = TRUE;
// main loop
while(Run)
{
// pass characters received on the uart (serial port)
// into the cmdline processor
while(uartReceiveByte(&c)) cmdlineInputFunc(c);
// run the cmdline execution functions
cmdlineMainLoop();
}
rprintfCRLF();
rprintf("Exited program!\r\n");
}
Richard Kaliciak
Am 28.08.2014 09:42, schrieb RV:
> Zdravim,
>
> blizi se zase podzim a zima a tim padem vic casu na "hrani si". Chtel
> bych dotahnout ten solarni regulator co se tyka ovladani.
>
> Vzhledem k tomu, ze uvnitr regulatoru je pomerne dost promennych a
> dost konstant, ktere spolu souvisi a je treba aby se zmenily najednou
> jsem si vymyslel dve banky registru - jednu pracovni a druhou
> nastavovaci - zmeny se budou moci delat pouze do te nastavovaci a pak
> se nejakym prikazem provede prepsani do te pracovni.
>
> zacal jsem na tom uz pracovat loni:
>
> http://www.cncnet.info/galery/mppt/vypis_serial.gif
>
> jen premyslim jak by ty prikazy mely vypadat - zatim jsem uvazoval
> necem takovem:
>
> r100*; ....vypise obsah obou bank registru r100
> r100#12500; ....zapise do nastavovaciho banky registru r100 hodnotu 12500
>
> apod.
>
> r000-099 - by byly vyhrazeny pro prikazy takze treba
>
> r000*; .....zapne/vypne vypis hodnot
>
> jen je to pomerne pracne (myslim to napsat) a premyslim o necem
> jednodussim - nejake nahrani CFG souboru
>
> respektive regl je pripojen v rezimu klient na server - slo by mu
> prikazem rict aby si stahnul ze serveru soubor s konfiguraci
>
> mate nejake jine napady/inspiraci?
>
>
Další informace o konferenci Hw-list