Problém zobrazeni znaku v obsahu FRID (arduino, C) Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Mr_Egot
nováček
Příspěvky: 36
Registrován: září 19
Bydliště: Strasbourg
Pohlaví: Muž

Problém zobrazeni znaku v obsahu FRID (arduino, C)

Příspěvekod Mr_Egot » 26 zář 2019 17:50

Nazdar vlčáci !

[Pouzity material] :
- Arduino UNO
- RFID - RC522
(vyzkouseno na dvou modelech Fruiduino / FreeNove + ELEGOO)

- Muj problém spociva ve zobrazeném vysledném obsahu, ktery na misto zobrazeni spravnych znaku zobrazuje znaky jako "wׅa⸮⸮(⸮
" snad mi rozumite. Coz mi nasledovne vrati neco jako :
JGIE002⸮*&Iv⸮2⸮w
JGIE002⸮*&Iv⸮2⸮
atd. Jen ta prvni polovina JGIE002 se zda ze je zobrazena korektne.

V "seriovém monitoru" to pak vypada nejak nasledovne :
Obrázek

[Ucel]
- Ceho bych potreboval dosahnout, je prekopirovat mou klicenku k otvirani dveri, jelikoz jsem jednu jiz stratil, chtel bych si naklonovat tu jednu zbyvajici. Jde o takovou tu modrou placku nebo jak to nazvat k otvirani domovnich dveri (RFID cipova karta / klicenka). Problém je ale v tom, ze ji nedokazu korektne precist, jelikoz mi vraci ruzné 'chars'.
Obrázek

- Je-li potreba, dokladam i pouzity kod:

Kód: Vybrat vše

//Mr.Egot https://pc-help.cnews.cz
#include <SPI.h>
#include <RFID.h>
//D10: deklarace pin SDA. D9: pin RST
RFID rfid(10,9);   
//4-bytové sériové cislo karty -- paty  bajt je kontrolni bajt
unsigned char serNum[5];
unsigned char status;
unsigned char str[MAX_LEN];
unsigned char blockAddr; //Vybrat  adresu provozniho bloku: od 0 do 63     
 
unsigned char writeDate[16] = "Vytvorit promenou ktera ulozi predchozi nacteni karty cislo 1"
//16 sektoru - délka  v kazdém sektoru je 6 bajtu
unsigned char sectorKeyA[16][16] = {
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  {  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF  } ,
  };
void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();
}
void loop()
{
  rfid.findCard(PICC_REQIDL, str);
    if (rfid.anticoll(str) == MI_OK){     
      Serial.print("ID pouzité karty je:  ");
      for(int i = 0; i < 4; i++){
        Serial.print(0x0F & (str[i] >> 4),HEX);
        Serial.print(0x0F & str[i],HEX);
      }
      Serial.println("");
      memcpy(rfid.serNum,str,5);
    }
  rfid.selectTag(rfid.serNum);
  /*
  Zvolit zapis nebo cteni
  writeCard(4); //Zapis na ctecku karet
  */
  readCard(4); //Nacteni z ctectky karet
  rfid.halt(); //Prechod do stavu spanku
}
//Zapis na kartu
void writeCard(int blockAddr){ 
  if (rfid.auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], rfid.serNum) == MI_OK) 
  {
    //status = rfid.write((blockAddr/4 + 3*(blockAddr/4+1)), sectorKeyA[0]);
    Serial.print("Nastavit novy obsah karty / upravit data sektoru: ");
    Serial.println(blockAddr/4,DEC);
    if(rfid.write(blockAddr, writeDate) == MI_OK){
      Serial.println("Zapis na kartu OK!");
    }
  }
}
//Cteni z karty
void readCard(int blockAddr){
  if ( rfid.auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], rfid.serNum) == MI_OK) 
  {
    Serial.print("Nacteni block Addr chipu sektor cislo: ");
    Serial.println(blockAddr,DEC);
    if( rfid.read(blockAddr, str) == MI_OK){
      Serial.print("Zobrazeni ulozenych dat: ");
      Serial.println((char *)str);
    }
  }
}


Predem dekuji za mozné navrhy ci pomoc.

Mr.Egot



Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 6825
Registrován: prosinec 10
Pohlaví: Muž

Re: Problém zobrazeni znaku v obsahu FRID (arduino, C)

Příspěvekod faraon » 26 zář 2019 20:18

A jaké mají být ty "správné" znaky? Nepatří do jiné znakové sady?

Zkus místo řetězce vypsat ASCII kódy jednotlivých znaků, ať je vidět co to vlastně obsahuje.
GOTT is REAL, unless declared INTEGER

Uživatelský avatar
Mr_Egot
nováček
Příspěvky: 36
Registrován: září 19
Bydliště: Strasbourg
Pohlaví: Muž

Re: Problém zobrazeni znaku v obsahu FRID (arduino, C)

Příspěvekod Mr_Egot » 26 zář 2019 21:15

faraon píše:Zkus místo řetězce vypsat ASCII kódy jednotlivých znaků, ať je vidět co to vlastně obsahuje.


Dekuji.
Mate nejaky navrh, jak bych to mohl provést ?
Mozna je to tim, ze uz to dlouho zkousim, ale nejak se mi nedari.
Nebranim se tomu , kdyby to mohlo byt s mensi ukazkou (upravou) kodu :-)

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 6825
Registrován: prosinec 10
Pohlaví: Muž

Re: Problém zobrazeni znaku v obsahu FRID (arduino, C)  Vyřešeno

Příspěvekod faraon » 27 zář 2019 05:26

V normálním Céčku by to šlo takhle:

Kód: Vybrat vše

for (i=0; str[i]; ++i)
    printf("%d\t%c\n", str[i], str[i]);

Koukni do manuálu a najdi způsob, jak na tu sériovou linku vypsat číslo, hodnotu nějakého bajtu.
GOTT is REAL, unless declared INTEGER

Uživatelský avatar
Mr_Egot
nováček
Příspěvky: 36
Registrován: září 19
Bydliště: Strasbourg
Pohlaví: Muž

Re: Problém zobrazeni znaku v obsahu FRID (arduino, C)

Příspěvekod Mr_Egot » 27 zář 2019 17:20

Zabralo to !
Mockrat dekuji za pomoc s vyresenim mého problému.

Preji Vam pekny zbytek dne.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Prodám doménu včetně obsahu BezpecneSilnice.cz
    od strangereu » 29 kvě 2019 15:08 » v P: Vše ostatní
    1
    808
    od strangereu
    30 kvě 2019 20:13
  • [Excel] Poměr obsahů buněk v jednom sloupci
    od driticool » 22 úno 2019 22:59 » v Kancelářské balíky
    2
    567
    od driticool
    23 úno 2019 10:46
  • Word divné zobrazení
    od Emerin » 08 úno 2019 17:14 » v Kancelářské balíky
    2
    670
    od xlnc
    08 úno 2019 20:13
  • Thunderbird - zobrazení posledních zpráv
    od Kopusek » 01 srp 2019 09:03 » v Komunikace na internetu
    5
    1462
    od mmmartin
    01 srp 2019 10:17
  • Zobrazení nastavení BIOS z Windows
    od Petrfoo » 09 led 2019 17:40 » v Windows 10, 8, 7, Vista, XP…
    6
    573
    od Petrfoo
    09 led 2019 20:30

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 16 hostů