Stránka 1 z 1

Čtečka RFID-RC522, přepis hodnot

Napsal: 12 kvě 2019, 12:59
od onlyvikastar
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.

Re: Čtečka RFID-RC522, přepis hodnot

Napsal: 30 kvě 2019, 14:59
od zbysek
Dobrý den, při zběžném prohlédnutí vidím následující problém:

Kód: Vybrat vše

dataBlock[0, HEX] = Serial.read();
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:

Kód: Vybrat vše

byte a;
a = 1, 2;
dopadne tak, že a bude mít hodnotu 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();

Takže se do pole dataBlock vždy zapíše na index 16, což není chování, kterého chcete dosáhnout :)