Stránka 1 z 1

Tvorba řetězce

Napsal: 29 úno 2020, 17:24
od Ludek
Tak jsem zase na mrtvém bodě. Poslat a analyzovat řetězec už umím. Teď pro změnu ho potřebuju vytvořit.
Posílám, "msg" s libovolnou hodnotou a jde to. Ale teď potřebuji do toho řetězce dostat ísto toho dvě proměnné.
Jedna bude proměnná A - tam bude písmenko, a druhá proměnná bude třeba D- a tam bude číslo 0-99.
To znamená, jak tyto dvě proměnné dostanu do toho msg a pošlu?
A jde ten zápis změnit bez "const" a bez hvězdiček?
díky za radu

Kód: Vybrat vše

void loop()
{
    const char *msg = "A123";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(10000);
}

Re: Tvorba řetězce

Napsal: 29 úno 2020, 17:39
od gilhad
Fungovalo by toto? Vadilo by, ze by to posilalo napriklad X01 ?

Kód: Vybrat vše

void loop()
{
    char msg[] = "A99";
    char pismrno='D';
    int cislo=56;
    //
    msg[0]=pismeno;
    msg[1]='0'+(cislo/10);
    msg[2]='0'+(cislo%10);
    driver.send((uint8_t *)&msg, strlen(&msg));
    driver.waitPacketSent();
    delay(10000);
}

Re: Tvorba řetězce

Napsal: 29 úno 2020, 18:03
od Ludek
No paráda, jsi borec... funguje to. Jen dotaz :
Jakou funkci tam má řádek :
char msg[] = "A99";

Re: Tvorba řetězce

Napsal: 29 úno 2020, 18:41
od gilhad
Deklaruje promennou msg v potrebne delce a ukoncenou znakem \0. Navic zvysuje citelnost.

Samozrejme by tam mohlo byt

Kód: Vybrat vše

char msg[4];
msg[3]=0; // tohle tu musi byt a nelze spolehnout na to, ze RAM je inicializovana nulama, protoze to alokujeme na stacku a tam uz muze byt neco z predchoziho pouziti
Ale to by asi nebylo tak hezke a ocividne

Re: Tvorba řetězce

Napsal: 29 úno 2020, 18:50
od Ludek
Super, tak ještě jednou díky.