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). 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? A może ktoś ma lepszy pomysł jak to zrobić , coś podpowie lub wytłumaczy .
|
|||
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.".
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.
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.".