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



Teraz jest 25 kwi 2024, o 13:12


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 ]
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: 759
Pomógł: 37

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: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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: 759
Pomógł: 37

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: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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: 759
Pomógł: 37

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: 159
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: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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: 159
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: 27225
Lokalizacja: Szczecin
Pomógł: 1041

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: 759
Pomógł: 37

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: 159
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: 759
Pomógł: 37

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: 759
Pomógł: 37

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: 159
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 0 gości


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO