Problem z zapisem do eeprom więcej niż 2 zmiennych

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: niveasoft » 15 mar 2017, 17:40

No więc mała podpowiedź z mojej strony.
Instrukcja INSTR zwraca miejsce gdzie zaczyna się poszukiwany znak w stringu.
Kiedy więc szukasz słowa "ATU" w dłuższym wyrażeniu (przykładowym) "BBBBBBATU:12:5:8<CR><LF>
to funkcja INSTR potrzebuje jakiejś zmiennej typu Byte lub Word do zapisania w którym miejscu zaczyna się to słowo.
Ważne jest też to że jeśli słowa nie znajdzie to zapisze tam zero (0)

Tak więc szukamy slowa ATU ....
Zmienna = Instr(string_w_którym_szukamy, "ATU")

Jeśli w "string_w_którym_szukamy" nie ma słowa "ATU" to Zmienna = 0 ..ale jeśli jest to w Zmienna = pozycja na której ATU się zaczyna czyli 6 :D

Teraz ciekawostka . Można po ATU szukać "=" lub "?" jak to robiłem w kodzie. Od tego miejsca można szukać kolejnego dwukropka :D

Może inaczej..

Znajduję ATU->Dodaję sobie długośc słowa ATU plus kolejne wyrażenie = lub ? wiec dodaję 4
Od miejsca ATU plus 4 szukam dwukropka. Kiedy znajduję dwukropek odejmuję miejsce gdzie zacząłem szukać. To da mi albo jedno albo dwa miejsca.

Może to i zagmatwanie opisałem, ale żeby to przedstawić prościej muszę pomyśleć :D
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: Michał6201 » 15 mar 2017, 21:49

Przyznaję się bez bicia, że nie wiem jak to napisać w Bascomie, ale za to poradziłem sobie z tym problemem w AppInventor :D

Tak na szybko dopisałem warunki i teraz aplikacja sprawdza warunek jeśli godzina < 10 to dopisuje przed godziną 0. To samo tyczy się minut. Sekundy z automatu przy aktualizacji czasu ustawiłem na 00.

To samo zrobiłem z dniami i miesiącami. Jeśli dzień lub miesiąc < 10, to dopisuje przed tymi wartościami 0.

Także zostawiłem automatyczną aktualizację czasu i daty w aplikacji (wydaje mi się to bardziej eleganckie). Teraz pięknie aktualizuje się czas i data na wyświetlaczu zegarka:)
Dzięki temu, że poprawiłeś kod, zniknął problem z zawieszaniem się programu po zerwaniu połączenia BT lub jego nawiązaniu. Także dwa problemy w jednym załatwione :D

Nie twierdzę, że nie warto spróbować teraz zmienić program w Bascom, tak aby wykrywał w którym miejscu nie ma zera i dopisywał w zależności od potrzeby. Ale to muszę nad tym posiedzieć, bo nie bardzo potrafię sobie to wyobrazić, a co mówić żeby to zapisać i żeby to działało, tak jak teraz po usprawnieniu apki.

download/file.php?mode=view&id=48
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 15 mar 2017, 22:08 przez Michał6201, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: niveasoft » 15 mar 2017, 22:05

Ciesze się że działa.
Te Forum mam po to by podyskutować i omówić czasem jakiś temat.
Chciałbym byś zwrócił uwagę na kilka rzeczy.
To co zrobiłeś w aplikacji na Android w ogóle procka telefonu nie męczy. To dla niego betka :D
Za to gdyby uczyć ośmiobitowy procek rozpoznawać każde przesłane do niego zdanie to byłoby flashochłonne :D
Tak więc jak w przypadku każdego urzadzenia sterowanego komendami AT powinna być ścisła instrukcja jak komenda powinna wyglądać.
Piszesz użytkownikowi że ma być osiem znaków i już, inaczej procek odpowie "ERROR" :D

Nie rozumie komendy to nic nie robi tylko odpisuje ERROR

Aplikacja ma się dostosować nie procek :D

..wiec jak będziesz zainteresowany to moge dopisać kawałek który będzie zwracał komendę ERROR jeśli procek nie rozumie komendy oraz, co wydaje mi się też ważne, potwierdzenie OK że zrozumiał i wykonał :D
..no chyba że to sam machniesz i się pochwalisz :D
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: Michał6201 » 15 mar 2017, 22:14

To pewnie też trzeba byłoby zapisać jako warunek i sprawdzenie poprawności - jeśli dobrze, to ok, a jeśli źle , to error prawda?

Podobnie zrobiłem w przypadku próby nawiązania połączenia aplikacji z prockiem przez BT. Jeśli nawiązała łączność z prockiem, bo ma wpisany na sztywno adres MAC, to wyświetla się komunikat, że nawiązano połączenie, a jak automatycznie nie uda mu się połączyć, to pojawia się komunikat o błędzie połączenia i daje możliwość ręcznego wyszukania zegarka na liście sparowanych urządzeń BT.

Powiem Ci, że rewelacyjnie zrobiłeś zapis i odczyt wszystkich danych przez komendy. Bardzo przejrzyście to wygląda i można by taki sposób komunikacji wykorzystać przy łączności GSM, wysłanie smsa z odpowiednią komendą zakończoną "?" powodowałoby, że procek wysyłałby odpowiedź na zadane pytanie smsem do mnie.
Ostatnio zmieniony 15 mar 2017, 22:32 przez Michał6201, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: niveasoft » 15 mar 2017, 22:31

Michał6201 pisze: ↑
15 mar 2017, 22:14
Powiem Ci, że rewelacyjnie zrobiłeś zapis i odczyt wszystkich danych przez komendy. Bardzo przejrzyście to wygląda i można by taki sposób komunikacji wykorzystać przy łączności GSM, wysłanie smsa z odpowiednią komendą zakończoną "?" powodowałoby, że procek wysyłałby odpowiedź na zadane pytanie smsem do mnie.
Co Ty nie powiesz :D Pisałem o Tym wcześniej żebyś myślał o innych przyszłych projektach.
Bez problemu i chętnie się podzielę wiedza z każdym o ile nie będę musiał się powtarzać bo to nudne tłumaczyć każdemu kto zapyta z osobna.
Po to mam Forum by dzielić się tym co wiem, ale nie klapać w email`ach wciąż o tym samym tylko nowym osobom.
Ten Sub Find można by trochę rozwinąć, ale tego nie robiłem by pokazać istotę sprawy :D
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: Michał6201 » 15 mar 2017, 22:41

Bardzo się cieszę :)
Ja ze swojej strony mogę wrzucić tu na forum jeśli wyrazisz zgodę, w całości aplikację na androida do tego mojego zegarka razem ze screenami i komentarzami co i jak.
Może komuś się przyda do innych układów elektronicznych sprawdzony sposób oprogramowania aplikacji, tak aby łączyła się z modułem Bluetooth po adresie MAC lub ręcznie, włącznie z rozwijanym menu itd. :D
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: niveasoft » 15 mar 2017, 22:59

O takie pozwolenia nie musi nikt pytać. Dbam tylko o to by nie było tu spamu i natrętnych reklam osób niezainteresowanych w ogóle tym o czym tu piszemy.
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: Michał6201 » 16 mar 2017, 22:19

Dziś postanowiłem przetestować kolejną funkcjonalność jaką jest zapis do pamięci eeprom daty przeglądu technicznego.
Klikając w przycisk w aplikacji, wysyłam do pamięci komendę: ATP=15-08-18
Następnie klikam przycisk do odczytu (wysyła komendę ATP?) i otrzymuję odpowiedź zwrotną: ATP=15-00-18

Więc tak jakby zapisywało całość, włączenie z komendą ATP. Ale dlaczego miesiąc nadpisuje zerami?
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: niveasoft » 16 mar 2017, 22:34

W wolnej chwili podłączę sobie taką pamiątkę i testnę to terminalem.

Co do komendy to jej nie zapisuje. String jest tak formatowny by odpowiedzieć zwracając najpierw nazwę i znak równości.

Przetestuj inne adresy czyli Ubezpieczenie i Olej. Może wszystkie tak kuleją to da coś do myślenia ;)
Awatar użytkownika
Michał6201
Posty: 165
Rejestracja: 03 paź 2015, 20:07

Re: Problem z zapisem do eeprom więcej niż 2 zmiennych

Post autor: Michał6201 » 16 mar 2017, 23:08

Odpaliłem terminal i wysłałem z terminala komendę do procka: ATP=12-12-12.

Potem wysłałem z terminala komendę: ATP? i otrzymałem odpowiedź na terminalu: ATP=12-00-12
ODPOWIEDZ