Stránka 1 z 1
Buffer, řetězec a proměnné
Napsal: 27 úno 2020, 19:02
od Ludek
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);
} }
Re: Buffer, řetězec a proměnné
Napsal: 27 úno 2020, 19:13
od KamilV
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ý.
Re: Buffer, řetězec a proměnné
Napsal: 28 úno 2020, 10:07
od Ludek

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 ...
Re: Buffer, řetězec a proměnné
Napsal: 28 úno 2020, 10:41
od KamilV
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.
Re: Buffer, řetězec a proměnné
Napsal: 28 úno 2020, 12:58
od Ludek
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
Re: Buffer, řetězec a proměnné
Napsal: 28 úno 2020, 14:05
od Ludek
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);