Dobrý den, již několik dní laboruji s přepisem hodnot na kartě/tagu. Ke komunikaci používám čtečku RFID-RC522. Bohužel jsem zatím nebyl úspěšný.
Jde mi o to, abych dosáhl stavu, kdy budu za pomoci sériové linky měnit čtyři hodnoty (formát: h h h h ) na tagu. Sektor, na který budu ukládat, mám samozřejmě definován. Využívám program z již před vytvořených programu Arduina ReadAndWrite.
Problém je, že pokud zadávám hodnoty přímo v programu je vše v pořádku. Ovšem pokud data zadávám za pomoci příkazu Serial.read(), pak vždy dojde k ''zmizeni hodnoty'' a je zobrazena stará hodnota. Což nechci, a proto se obracím na místní komunitu s žádostí o pomoc.
Předem děkuji.
Čtečka RFID-RC522, přepis hodnot
-
- Příspěvky: 2
- Registrován: 12 kvě 2019, 12:34
- Reputation: 0
Re: Čtečka RFID-RC522, přepis hodnot
Dobrý den, při zběžném prohlédnutí vidím následující problém:
To HEX je tam nejenom zbytečné, ale hlavně na škodu
Co se tedy ve vašem programu děje:
a) HEX je konstanta, která je nastavená na hodnotu 16.
b) V C/C++ existuje operátor , (čárka). Ten funguje tak, že se postupně vyhodnocuje výraz a má hodnotu, která je za čárkou.
Třeba:
dopadne tak, že a bude mít hodnotu 2.
U vás tedy dojde k následujícímu:
Takže se do pole dataBlock vždy zapíše na index 16, což není chování, kterého chcete dosáhnout
Kód: Vybrat vše
dataBlock[0, HEX] = Serial.read();
Co se tedy ve vašem programu děje:
a) HEX je konstanta, která je nastavená na hodnotu 16.
b) V C/C++ existuje operátor , (čárka). Ten funguje tak, že se postupně vyhodnocuje výraz a má hodnotu, která je za čárkou.
Třeba:
Kód: Vybrat vše
byte a;
a = 1, 2;
U vás tedy dojde k následujícímu:
Kód: Vybrat vše
dataBlock[0, HEX] = Serial.read();
se dá přepsat jako
dataBlock[0, 16] = Serial.read();
a to se dá dále přepsat jako
dataBlock[16]= Serial.read();
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti