Przypisanie danych do tablicy

User avatar
shimano73
Posts: 2110
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Post

Hej, pracuje nad pewnym projektem i mam problem z przypisaniem wartości do tablicy.
Część kodu wygląda tak

Code: Select all


 uint8_t buffer_char[8] = { 0x00, 0x6B, 0x5E, 0x37, 0x00, 0x00, 0x00, 0x00} ; //0x6B,0x5E,0x37,0x0E,0x77,0x00
 Send(true);
 delay(tdelay); // to tylko do testu :)

 buffer_char[8] = { 0x6B, 0x5E, 0x37, 0x0E, 0x00, 0x00, 0x00, 0x00} ;//0x6B,0x5E,0x37,0x0E,0x77,0x00
 Send(true);
 delay(tdelay);

 buffer_char[8] = { 0x5E,0x37,0x0E,0x77,0x00,0x00,0x00,0x00} ;//0x6B,0x5E,0x37,0x0E,0x77,0x00
 Send(true);
 delay(tdelay);
niestety nie jest to poprawna składnia bo kompilator zgłasza błąd, tylko w tym miejscu jest przesuwanie wartości w innym są zupełnie różne, nie chciałbym wpisywać wartości do każdej komórki tablicy z osobna bardzo to utrudnia pracę.

Code: Select all

C:\Users\user\OneDrive\Dokumenty\Arduino\tm_my\tm_my.ino:391:67: error: cannot convert '<brace-enclosed initializer list>' to 'uint8_t' {aka 'unsigned char'} in assignment
  buffer_char[8] = { 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x00} ;//0x6B,0x5E,0x37,0x0E,0x77,0x00
  
Jak to powinno wyglądać ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 11254
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Tak się nie da robić.

Ta konstrukcja z " = { ... }" to przekazanie listy inicjalizującej do obiektu i można to zrobić tylko przy jego tworzeniu.
Później piszesz:

Code: Select all

buffer_char[8] = ...
czyli próbujesz przypisać wartość do dziewiątego elementu tablicy...

Najprościej będzie chyba dodać metodę:

Code: Select all

void setBuf(uint8_t *buf, uint8_t value_0, value_1, itd...) {
  buf[0] = value_0;
  buf[1] = value_1;
  itd
Wtedy w kodzie masz po prostu:

Code: Select all

setBuf(buffer_char, 1, 2, 3, 4, 5, 6, 7, 8);
Supla: bo GPIO to dopiero początek.
User avatar
vajera
Posts: 2121
Joined: Wed Oct 31, 2018 7:58 am

Post

Skoro znasz te wartości na etapie kompilacji to szkoda RAMu na takie zabiegi.

Nie możesz zrobić tak?

Code: Select all

const static char[8] buffer_char8 PROGMEM = { 0x22, 0x33...};


i później w kodzie odwołujesz się do tej zmiennej.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127

Return to “Pomoc”