logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak użyć: 'strcmp_P' w instrukcji switch? Potrzebuję przykładowy kod.

Bluzman 27 Sty 2021 18:10 354 2
REKLAMA
  • #1 19214250
    Bluzman
    Poziom 4  
    Witam
    Mój projekt polega na komunikacji przez moduły NRF24L01 podłączone do dwóch Atmeg (16 i 32). Nadajnik wysyła z tablicy np.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    odbiornik odbiera taką funkcją, która jest częścią biblioteki
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Wszystko działa, tylko takich warunków if będzie więcej, więc postawiłem na switch. Teraz pytanie, jak napisać kod żeby użyć w switch "strcmp_P" który odczyta z pamięci flash dane i dalej będzie włączał odpowiednie rzeczy (case) np. jak wyżej - stan wysoki na jakimś pinie.
    Prosiłbym może o jakiś przykładowy kod jak tam należy prawidłowo wrzucić strcmp_P
  • REKLAMA
  • #2 19214639
    tmf
    VIP Zasłużony dla elektroda
    Bluzman napisał:
    Teraz pytanie, jak napisać kod żeby użyć w switch "strcmp_P" który odczyta z pamięci flash dane i dalej będzie włączał odpowiednie rzeczy (case) np. jak wyżej - stan wysoki na jakimś pinie.

    Bezpośrednio tego do switch nie wrzucisz - natomiast możesz zrobić pętlę w której porównujesz otrzymaną zawartość z kolejnymi pozycjami tablicy, a potem otrzymany indeks do tablicy porównujesz z użyciem switch. Można to zrobić też tak, że robisz tablicę zawierającą literały do porównania oraz wskaźnik na funkcję realizującą określone zadanie. W pętli przemiatasz tablicę przy pomocy strcmp_P i jak znajdziesz pasującą pozycję to wywołujesz wskaźnik na funkcję.
  • #3 19214733
    excray
    Poziom 41  
    Stringa nie da się użyć jako argumentu dla Switch, ale skoro komunikacja przebiega na zasadzie "sam do siebie nadajesz", to po prostu ja uprość. Można też się pokusić o wyliczenie np. 16-32 bitowej sumy kontrolnej dla każdej komendy i operowanie w switch właśnie tą sumą. Oczywiście w tym drugim przypadku istnieje ryzyko, że jakiś inny ciąg znaków uzyska taką samą sumę kontrolną i zostanie mylnie zinterpretowany.
REKLAMA