Arduino schéma - arduino.sk

Konverzia zo string na unsigned char

Vaše nápady a pomoc s Vašimi projektami
Príspevky: 5
Registrovaný: Pia 22. Aug 2014 11:30:20

Konverzia zo string na unsigned char

Poslaťod zozo58 » Sob 14. Júl 2018 18:21:44

Ahojte, vedel by mi niekto poradit ako mam skonvertovat string na unsigned char?

Jedna sa o to, ze potrebujem zapisat do PROGMEM 16 hodnot v tvare

0x89 0x1d 0x32 0xf6 0xdd 0x5b 0x52 0x18 0x58 0xcc 0xcc 0x75 0xa5 0x6a 0x41 0xb3

Ked to zadam rucne takto
Kód: Vybrať všetko
const PROGMEM unsigned char informacia[] = {0x89, 0x1d, 0x32, 0xf6, 0xdd, 0x5b, 0x52, 0x18, 0x58, 0xcc, 0xcc, 0x75, 0xa5, 0x6a, 0x41, 0xb3};

tak mi to pekne funguje. Ja to ale potrebujem nacitat z EEPROM

Tuto hodnotu ukladam do EEPROM ako byte a to po 1 pismene na kazdu poziciu v EEPROM a zadavana hodnota nema 0x cize je ulozena takto

Kód: Vybrať všetko
8
9
1
d
3
2
atd...

EEPROM.write(adresa + i, (byte)text[i]);


ulozenie aj nacitanie prebehne v poriadku, problem nastane ak ju potrebujem implementovat do kodu

Kód: Vybrať všetko
String premenna[16] = "";
int slucka;

    for (int i = 0;i < 32;i++)
      {
        char znak = (char)EEPROM.read(1 + i);
        char znak2 = (char)EEPROM.read(1 + i + 1);
       
        String TextFromEEPROM = "";
        TextFromEEPROM = "0x" + TextFromEEPROM;
        TextFromEEPROM = TextFromEEPROM + znak + znak2;
        (unsigned char)premenna[slucka] = TextFromEEPROM;               //<-- invalid cast from type 'String' to type 'unsigned char'

        Serial.println(premenna[slucka]);
        i = i + 1;
        slucka++;     
      }


znak prevezme prve pismeno z retazca
8
znak2 prevezme 2 pismeno z retazca
9
pred to sa pripise 0x a mam
0x89
hodnota je char a ta sa neda implementovat do

Kód: Vybrať všetko
const PROGMEM unsigned char informacia[] = {SEM};


Najde sa niekto kto by vedel poskytnut nejake riesenie? Dakujem.

Príspevky: 78
Registrovaný: Štv 04. Dec 2014 22:15:58
Bydlisko: Banská Bystrica

Re: Konverzia zo string na unsigned char

Poslaťod Robo Ulbricht » Str 18. Júl 2018 15:36:37

Povedal by som podľa kódu, že nechápeš, ako sa používa trieda String. Hneď v prvom riadku deklaruješ pole 16 Stringov, čo si asi nechcel. Nastaviť počet znakov môžeš cez funkciu reserve. A potom do vzniknutého priestoru načítaj z eeprom tých 16 znakov.

https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/reserve/
https://www.arduino.cc/reference/en/language/variables/data-types/string/operators/elementaccess/

Späť na Projekty vo fáze vývoja