Programowanie przycisków pilota RC


Witam. Jestem początkującym w programowaniu Bascom. Mam taki mały problem i proszę Kolegów o doinformowanie mnie jak to działa. Chcę napisać uniwersalny skrypt obsługi pilota RC z programowaniem przycisków (wpisanie na sztywno adresu i komendy mam już opanowane).
Oto kawałek kodu z sieci:

 Sub Programowanie                                       'tryb programowania
   Set Ledred                                               'dioda  zał
   Set Ledgren                                              ' dioda  zał
 
   For I = 2 To 9                                           'kasowanie pamięci eprom
      Eeprom = 128
      Writeeeprom Eeprom , I                                'wpis  do 8 komórek wartości 128
         Next I
 
   For I = 2 To 9                                           'programowanie przycisków
      Do
 
         Getrc5(address , Command)                          'pobranie adresu i kodu przycisku
         Command = Command And &H7F
 
          If Address = 0 Then                               '?? adres przypisany na sztywno!
                                                              ' jak napisać by przypisywał dynamicznie
 
            For J = 2 To 9                                  'sprawdzanie czy dany przycisk nie jest użyty 2 raz
               Readeeprom Eeprom , J
               If Eeprom = Command Then
                  Goto Istnieje
               End If
            Next J
            Writeeeprom Command , I                         ' zapis kodu przycisku jesli brak powtórzenia
            Exit Do
 
            Istnieje:
         End If
      Loop
 
      Reset Ledoff                                          'dioda  wył
          Reset Ledon                                       'dioda  wył
 
      Waitms 150                                            'oczekiwanie zapis
 
      Set Ledred                                            'dioda  zał
      Set Ledgren                                           'dioda  zał
 
   Next I                                                   'następny przebieg
 
   Reset Ledred                                             'dioda  wył
   Set Ledgren                                              'dioda  zał
End Sub

1.Czy wszystko dobrze rozumuje?
2. Jak wpisać by przy programowaniu zapamiętał adres wprowadzanego pilota (z zakresu 0-5)- a nie na sztywno "0" ).

A może ktoś ma lepszy pomysł jak to zrobić , coś podpowie lub wytłumaczy .
Pozdrawiam.




Portret użytkownika kaktus

już się robi ;-)

Jeżeli analizowałeś sobie ten kod to zauważ co jest robione po funkcji GetRC5. Jest tam maskowanie pewnych bitów, w słowie command, po czym jest od razu test adresu i dalsze postępowanie w razie spełnienia warunku.

Zakładamy taką sytuację, że Twoje urządzenie jest załączone inicjacyjnie i ma nauczyć się rozpoznawać odpowiedni pilot.
Więc w takim przypadku możemy założyć że odebrany adres jest prawidłowy, bo z pilota który ma być rozpoznany i zapamiętany. Więc go zapamiętaj i po strachu ;-)
Natomiast co do kontroli czy ten odczytany przed momentem adres jest prawidłowy, dla przeprowadzenia dalszego postępowania, to już zupełnie inna sprawa - pozostawiam w Twojej ocenie czy owa kontrola jest niezbędna, a jeśli tak to dlaczego.

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".

Portret użytkownika Mirix

I tu się zapętliłem ;-(

właśnie z tym mam problem coś już przekombinowałem i jakiś twardy reset mózgu muszę zrobić. Jak zapisać ten adres ?gdzie zapisać ? coś nie mogę ruszyć od tygodnia. Kontrola po zapisie jest już zbędna. Będzie musiała być przy części programu odpowiadającej za odbiór przy normalnym sterowaniu z pilota urządzeniem.

Portret użytkownika kaktus

w takim wypadku

Powiem inaczej. odbierasz adres i numer rozkazu tak? I nie wiesz co masz zrobić? A w programie zapisujesz tylko numery rozkazów?

W takiej sytuacji proponuję:
1. przy pierwszym złapanym odbiorze zapisz na początek do nowej zmiennej (nie do eeprom) ten adres, po czym rozkaz, jak już opanujesz ten krok to na sam koniec zrobisz zapis do eeprom
2. rozważ czy warto zrobić kontrolę adresu gdy będzie łapany kolejny odbiór, po czym zapisuj tylko rozkazy, lub i nie jak tam uważasz w takim wypadku rozważ konsekwencje i oprogramuj je stosownie.

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".