Buffer, řetězec a proměnné

Odpovědět
Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Buffer, řetězec a proměnné

Příspěvek od Ludek » 27 úno 2020, 19:02

Zdravím, mohl by mi někdo pomoci s tím, jak vyndat z řetězce nebo bufferu proměnné?
Asi to špatně nazývám, ale jde mi o data z přenosu dat z přijímače 433MHz.
Použil jsem toto :
https://randomnerdtutorials.com/rf-433m ... h-arduino/
Šlape to, mohu posílat i číst cokoli, ale potřebuji poslat data - např. B136 - prostě písmenko a proměnnou 0-200
Ať dělám, co dělám jsem mimo mísu. Jako Mesage to přijmu ale nedekoduju to na proměnné.

Kód: Vybrat vše

void loop()
{
    uint8_t buf[4];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen))
    { int i;
      Serial.print("Message: ");
      Serial.println((char*)buf);
    } }

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Buffer, řetězec a proměnné

Příspěvek od KamilV » 27 úno 2020, 19:13

https://www.arduino-forum.cz/viewtopic. ... 7&start=20

Ve vedlejším vlákně se parsuje string ze Serial, Ty budeš parsovat string z 433MHz. Princip je totožný.

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Buffer, řetězec a proměnné

Příspěvek od Ludek » 28 úno 2020, 10:07

:-(
Tak jsem tam koukal a i tak nic nenašel... Na straně vysílače napíšu "AHOJ" a na straně přijímače to za tím slovem Message to napíše Ahoj.
Stejně tak když napíšu AHOJ123. Omezil jsem délku buf na 3 znaky a tak potřebuju poslat třeba A12 a já teď přečtu A12, ale nedokážu to dostat
do proměnných ...

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Buffer, řetězec a proměnné

Příspěvek od KamilV » 28 úno 2020, 10:41

Nerozumím. Uveď příklad stringu, který dostaneš z rádia. Ukaž definici proměnných, do kterých to chceš nacpat. Napiš, co bys v které proměnné chtěl mít.

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Buffer, řetězec a proměnné

Příspěvek od Ludek » 28 úno 2020, 12:58

No nevím, jak Ti to popsat. Tady nehraje roli Rx a Tx - jde to i pouhým propojením Arduin.
takže vysílám :

Kód: Vybrat vše

#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile
RH_ASK driver;   // output je pin12
void setup()
{
    Serial.begin(9600);    // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}
void loop()
{
    const char *msg = "A123";
    driver.send((uint8_t *)msg, strlen(msg));
    driver.waitPacketSent();
    delay(10000);
}
a přijímám :

Kód: Vybrat vše

#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
RH_ASK driver;            // pin 11
void setup()
{
    Serial.begin(9600);  // Debugging only
    if (!driver.init())
         Serial.println("init failed");
}
void loop()
{
    uint8_t buf[4];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen))
    { int i;
      Serial.print("Message: ");
      Serial.println((char*)buf);
    } }

 // a na monitoru vidím : Message: A123

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Buffer, řetězec a proměnné

Příspěvek od Ludek » 28 úno 2020, 14:05

Tak jsem to nějak nabastlil, nevím, jestli to je "profi" ale šlape to.
Potřebuji první znak-písmeno do proměnné=kod a další znaky-čísla do proměnné=hodnota

Kód: Vybrat vše

String retezec=((char*)buf);
  char kod = retezec[0];
  int hodnota = retezec.substring(1).toInt();
  Serial.print(kod);
  Serial.print(" ");
  Serial.println(hodnota);

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů