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