Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 30 kwi 2025, o 03:36


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
    Autor Wiadomość
    PostNapisane: 3 lis 2020, o 19:23 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    Witam.
    Z telefonu wysyłam do 4 modułów WiFi stringa, który ma trafić do każdego z mk podpiętych do modułów WiFi.
    Mk po odbiorze stringa ma odesłać również stringa do telefonu, a ten po odbiorze i identyfikacji który to mk odpowiedział ma zmienić kolor nazwy wyświetlanego w aplikacji modułu z szarego na zielony, potwierdzając tym samym użytkownikowi, że ma komunikację z każdym z 4 mk po wifi.
    Problem w tym, że tylko jeden ze stringów wychodzi z telefonu i trafia do mk. I jest to zawsze ten, który jest ostatni.
    Moduły pracują na tym samym porcie jako serwery udp ale każdy z nich ma inne ip statyczne. Także wysyłanie stringów do mk odbywa się za pomocą 4 instrukcji do każdego z osobna. Próbowałem konfigurować moduły tak żeby każdy pracował na innym porcie ale to tez nic nie dało. Myślałem, że może coś jest nie halo z odbiorem po stronie telefonu kiedy mk odpowiadają, ale raczej nie bo dołożyłem lcd do mk i cokolwiek przyleci jest wyświetlane na lcd.
    Ktoś wie w czym problem. Może jakieś delaye potrzebne brrrrrr.


    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język vb
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2020, o 22:03 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    A spróbuj dac opóźnienie przy wysyłaniu. Zrob jakiś timer i co kilka ms wysylaj. Przy odbiorze zrob Case msg . Trochę ładniej wygląda. No i wysylaj krótsze stringi zamiast drzwibalkonowe _ok to wystarczy "1-ok" "2-ok" masz duzo mniej bajtow do wysłania



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2020, o 23:03 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    Myślałem o timerze ale nie umiem tego zrobić. Próbowałem wzorować się na poradniku Mirka #0393 B4A MAP, aplikacja WakeOnLan, Magic Packets - Part1 , ale to nie to samo. Zrobić zdarzenie od timera i w zdarzeniu wysyłać stringa do jednego modułu a co z innymi. A poza tym jakie zdarzenie. Co miało by uruchamiać to zdarzenie. Nie potrafię przełożyć timerów programowych z c do B4A.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2020, o 23:34 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    Wystarczy jeden timer w B4A i w nim na zasadzie wyboru jednej z 4 opcji wysyłać 4 różne stringi a po wysłaniu ostatniego - zatrzymać timer.

    Sam proces wysyłania zawsze zaczynałby się odpaleniem timera ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2020, o 11:45 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    mirekk36 napisał(a):
    Wystarczy jeden timer w B4A i w nim na zasadzie wyboru jednej z 4 opcji wysyłać 4 różne stringi a po wysłaniu ostatniego - zatrzymać timer.


    No tak, ale o ile dobrze zrozumiałem to spowodowało by że stringi (w zasadzie jeden ten sam string tylko pod 4 różne ip) nie poszły by do wszystkich modułów automatycznie tylko użytkownik sam dokonywał by wyboru z którym chce gadać w danej chwili. A ja bym chciał żeby automatycznie po uruchomieniu aplikacji program sam odpytał wszystkie moduły czy są podłączone do sieci i gotowe do komunikacji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2020, o 11:58 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Robisz timer (50)
    w timerze
    opóźnienie = opóźnienie +1
    select case opóźnienie

    case 1
    1 moduł
    case 2
    drugi
    case 3
    trzeci
    case 4
    czwarty
    case 5
    opoznienie=0
    timer stop
    end select

    To tylko podpowiedz. Timer sobie dobierz doświadczalnie, ale 50ms powinno wystarczyć. Możesz sobie wyslac do pierwszego poczekac na jego odpowiedz i wyslac do drugiego itp jak nie odpowie to zaznaczyć error i odpytywać dalej. Tak czy inaczej musisz timer zrozumieć dosyc dobrze bo bez tego ani rusz. Komunikuje sie z dwoma urządzeniami i dziala to bez problemu. Do testów zobacz czy pomoże delay pomiędzy wysylaniem.
    No i tu wyższość pisania w Bascom nad C. B4a działa praktycznie tak samo jak bascom :).


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lis 2020, o 15:13 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    jaca napisał(a):
    nie poszły by do wszystkich modułów automatycznie

    wiesz co to są warunki IF i prosta maszynka stanów ? - ale już widzę że kolega wyżej podpowiedział ci ...

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2020, o 18:05 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    Dzięki za pomoc.
    Z timerem to jakoś nie mogę tego ogarnąć. Zrobiłem póki co inaczej. Przy starcie aplikacji program wysyła stringa do pierwszego modułu. Jeśli moduł odpowie to w procedurze odbioru jest wysyłany string do drugiego modułu, jeśli drugi odpowie to do trzeciego itd.
    Dalekie to od doskonałości ale co jest doskonałe ????? :lol:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2020, o 20:01 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    przecież wyżej kolega napisał ci PEŁNY pseudokod do timera bo ten twój sposób .... hmmm jeśli któryś nie odpowie moduł ;) to reszta leży rozłożona na łopatki

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2020, o 22:39 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    pozniej inicjujesz

    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    i to juz w programie
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2020, o 23:36 
    Offline
    Użytkownik

    Dołączył(a): 10 sty 2018
    Posty: 160
    Pomógł: 11

    grzeniu 73 napisał(a):
    Robisz timer (50)

    No i tu wyższość pisania w Bascom nad C. B4a działa praktycznie tak samo jak bascom :).


    Oj tu delikatnie z tego typu stwierdzeniami...Nie chcę wszczynać jakiejś ideologicznej wojny, bo sam robiłem dużo w Bascomie, ale uważam że zwykłe Arduino jest dzisiaj dużo lepsze. Poza tym Bascom nie działa tak samo jak B4A, ma tylko podobną składnie..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2020, o 23:48 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    tfosik napisał(a):
    ale uważam że zwykłe Arduino jest dzisiaj dużo lepsze

    jeszcze lepiej ! ;) ...


    wyższości Bascoma i Andruino nad pisaniem w C ;) no po prostu pomysły świata kosmosu ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2020, o 00:08 
    Offline
    Użytkownik

    Dołączył(a): 10 sty 2018
    Posty: 160
    Pomógł: 11

    mirekk36 napisał(a):
    tfosik napisał(a):
    ale uważam że zwykłe Arduino jest dzisiaj dużo lepsze

    jeszcze lepiej ! ;) ...


    wyższości Bascoma i Andruino nad pisaniem w C ;) no po prostu pomysły świata kosmosu ;)

    Drogi Mirosławie, ja napisałem tylko że zwykłe Arduino jest dziś lepsze od Bascoma...Nic nie pisałem o C..czy C++, które jest najlepsze...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2020, o 11:18 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    Cytuj:
    ="tfosik"Drogi Mirosławie, ja napisałem tylko że zwykłe Arduino jest dziś lepsze od Bascoma...Nic nie pisałem o C..czy C++, które jest najlepsze...


    Ok przepraszam

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2020, o 18:41 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    To tak specjalnie napisałem, żeby Was trochę pobudzić, bo mało cos postów:) Zawsze tak jest, że wystarczy cos o bascomie napisać i sie wrzawa robi :) .Bardzo wrażliwi jesteście :). I tak sorka chodziło o składnie



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2020, o 21:55 
    Offline
    Użytkownik

    Dołączył(a): 10 sty 2018
    Posty: 160
    Pomógł: 11

    @Grzesiu73, możesz jeszcze wypróbować B4R...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2020, o 23:00 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    No właśnie podchodziłem do tego i mi nie wyszło. Kupiłem tez książkę Mirka i tez leży. Jakoś nie mogłem sie wkręcić w to. Moze kiedyś. Ale przypomniało mi sie cos gdy byłem gowniazem. Moich dwóch kumpli miało samochody. Jeden jak na tamte czasy bardzo sportowy ,a drugi taki trochę zlomik. Ale jak to każdy musi udowodnić który lepszy, umówili sie na torze. No i na torze wyszło ,ze to nie samochód wygrywa ,tylko kierowca. Dlatego nie wdaje sie w dyskusje co lepsze. Dopóki realizuje wszystko to co sobie wymyśle dzięki bascomowi to po co mam kombinować? Pewnie dla kogoś kto zajmuje sie profesjonalnie programowaniem ( zapewne ci co pisali do pierwszych wypraw w kosmos , nasze języki wydaja sie przedszkolem, skoro oni programy zapisywali na kartach perforowanych . I tez dali rade na księżycu wylądować) ma to znaczenie, ale dla mnie nie ma żadnego oprócz efektu. A do brzegu jeszcze nie dopłynąłem. Ważne żeby myśleć i kombinować czego wszystkim tego życzę. A jak czegoś nie umie to poproszę o pomoc :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2020, o 20:43 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    grzeniu 73 napisał(a):
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    pozniej inicjujesz

    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    i to juz w programie
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    OK poszło na timerze, ale w taki sposób.

    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Nie Public tylko Dim.
    A w procedurze Timer1_Tic na końcu zamiast timer stop napisałem Timer1.Enabled = False.
    No ale to pewnie Wiesz. Zastanawia mnie tylko dlaczego zmiennej opoznienie nie mogłem zadeklarować w procedurze obsługi Timer1 tylko w Globals. Zadeklarowałem ja jako int.
    Póki co jest OK.
    Jeszcze raz dzięki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lis 2020, o 22:16 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Timer1.Enabled = False. no i tak ma byc. Tamto tylko tak jako wzór napisałem. Jak juz to działa to teraz zrób zabezpieczenie. Wyślij do jednego i włącz timer i czekaj na odpowiedz. Jesli przyjdzie w ciagu powiedzmy 1s to ustaw flage i zresetuj timer , a jeśli minie ustawiony czas to tez wyślij do następnego ( albo jeszcze raz odpytaj) ale flage zresetuj. Dzięki temu będziesz pewien ,ze ci się nic nie pokielbasi. Trochę chaotycznie pisze :) ale chyba skumasz o co chodzi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 lis 2020, o 21:47 
    Offline
    Użytkownik

    Dołączył(a): 10 sty 2018
    Posty: 160
    Pomógł: 11

    jaca napisał(a):
    grzeniu 73 napisał(a):
    [syntax=basic4gl]Sub Process_Globals
    Nie Public tylko Dim.
    A w procedurze Timer1_Tic na końcu zamiast timer stop napisałem Timer1.Enabled = False.
    No ale to pewnie Wiesz. Zastanawia mnie tylko dlaczego zmiennej opoznienie nie mogłem zadeklarować w procedurze obsługi Timer1 tylko w Globals. Zadeklarowałem ja jako int.


    Po co te zmienne deklarujesz w Sub Process_Globals powinieneś zadeklarować je w Sub Globals i nie Dim tylko Private...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2020, o 16:51 
    Offline
    Użytkownik

    Dołączył(a): 25 cze 2015
    Posty: 97
    Lokalizacja: Gdańsk
    Pomógł: 1

    Tak zrobiłem jak radzisz i też działa, ale... jest warning 13 że powinna być zadeklarowana w Process Sub Globals. Mowa o deklaracji licznika. Natomiast zmienną opoznienie mam zadeklarowana w Sub Globals i jest ok.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO