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



Teraz jest 28 mar 2024, o 14:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 29 ] 
Autor Wiadomość
PostNapisane: 17 lis 2017, o 18:28 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Witam
Mam urządzenie które przesyła dane ja chciałby je obrobić i wyświetlić. Problem polega na tym , że buffor robi co chce z danymi i nie wiem dlaczego tzn.
Te same urządzenie wysyła mi dane na procesor ATMEGA32,a ja sobie łapie wszystko co spadnie do UDR i przypisuje sobie do tablicy przykładowo danerx(1) itd. Wszystko działa oki i na wyświetlaczu nie ma pomyłek ani zacinek. W nieszczęsnym B4A buffor sobie łapie raz 3 bajty raz 4 raz całą ramkę np. długośći 24. Ramka wygląda mniej więcej tak. B=bajt

B1(startowy)----------------------B2(ile_znaków ma ramka)-----------------B3(suma kontrolna)-------------------B4 (klucz kodujący)--------B5 (pierwsze dane do obrobienia)

Napisałem sobie tak:
Buffor(0) sprawdzamy czy jest startowy
potem
Buffor(1) ile znaków będzie miała ramka
potem
buffor(2) jaka jest suma kontrolna do sprawdzenia



Niestety przychodzi mi do buffer.lenght=4 bajty czasami 5 a czasami jak wiatr dobrze zawieje to się zgodzi z [Buffor(1)i mam tyle ile znaków będzie miała ramka] i wszystko trybi. Myślę, że buffor ma własną strategię kiedy zamknąć buffor i ile czekać na kolejne bajty. Czy da się jakoś to zmienić timout bufora pomiędzy kolejnymi znakami np. lub wyłączenia i odbieranie po bajcie tak jak zrobiłem na ATMEGA32 za pomocą przepisywania z UDR.

Gdyby dało się ten pi.. buffor wyłączyć lub wstawić timeout aby czekał dłużej na kolejne znaki byłoby cudnie. Od razu dodam, że przerwy pomiędzy bajtami są różne(ale bardzo króciótkie), ale android łapie najczęsciej po 4 lub 5 bajtów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 18:36 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

http://forum.atnel.pl/topic19536.html
Może to ci w czymś pomoże.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 18:48 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Harry napisał(a):
http://forum.atnel.pl/topic19536.html
Może to ci w czymś pomoże.


Niestety nie znalazłem tam odpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 18:54 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Echhh, użyj klasy AsychStream, to rozwiąże twój problem z buforowaniem.
A jak go użyć prawidłowo, masz w ostatnim kodzie w powyższym temacie.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 19:14 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

używam :).Sub Strumien_NewData (buffer() As Byte) . Tylko chodzi o to, że buffor mnie ogranicza. Chodzi o to ze buffer zeruje się po odebraniu np. 4 bajtów zamiast odebrać np.24 bo tyle urządzenie wysłało. Aplikacja odbiera cały czas albo buffer.lenght=3 albo buffer.lenght=3 czasami wskoczy buffer.lenght=24. Jakoś na procku to było proste i bufforować nie trzeba było.
Opiszę jeszcze raz chcę oczekiwać na bajt starowy do momentu, aż się pojawi. Jak się pojawi to czytam drugi bajt i wiem ile przyleci jeszcze bajtów wtedy jak przyleci tyle ile miałem w 2 bajcie po startowym. Sprawdzam 3 bajt, który jest sumą kontrolną i wiem czy ramka jest prawdziwa. NA ten moment mam tak, że mi buffor zbiera 4 bajty na raz a potem się zeruje i znowu 4 lub 3 bajty, które prawdopodobnie powinny być kolejnymi nie wiem dlaczego buffor się zeruje i liczy od nowa zamiast czekać do jakieś wartośći np. 128 bajtów. Ja przecież sam mogę go wyzerować jak odbiorę tyle co potrzeba.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 19:25 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Po raz kolejny mówię Ci, ściągnij i zobacz jak to jest zrobione, obawiam się że nikt inny nie pomoże jeżeli nawet nie chce Ci się przeanalizować kodu.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 19:47 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Ja muszę robić to na bajtach. Na stringach będzie dużo zabawy z szyfrowaniem przewalaniem na hex i XORowaniem przez klucz. Nie mówiąc o innych problemach jakie niesie odbieranie do stringów danych. Szlak mnie trafia na procku zajęło mi to jeden dzień, a tu siędze już 3 i nie wiem co te badziewne biblioteki robią.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 19:50 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

To może zacznij od wstawienia kodu.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 20:14 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

To wolę posiedzieć jeszcze z tydzień:) za dużo mi zajęło złamanie kodowania. Jak chciałem z archaicznego procka i wyświetlacza przewalić na androida to się schody zaczęły.Tak mam w bascomie gdzie bajty wpadają do UDR.



To wszystko potem tylko jeszcze dodatkowe rozkodowanie po kolei od rxdana(5) do rxdana(ilosc) . Flaga moja_ramka=1 oznacza , że wszystko się zgodziło i po wyjściu z przerwania obrabia po kolei dane na poprawny wynik.



Ostatnio edytowano 22 lis 2017, o 15:43 przez fisto5885, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2017, o 20:24 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Naprawdę myślisz że tu siedzą wróżki ze szklaną kulą?
Wstaw kod B4A z komentarzami, przykładem co wysyłasz, co trafia a co powinieneś osiągnąć.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 09:21 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Dobra napisze obejscie najwyzej się wysypie jak zmieni się wyglad ramki.Tak czy tak widze ,ze nikt nie zna dzialania buforu i trzeba obejść jego działanie.Tak to jest z gotowymi bibliotekami zawsze coś wyskoczy i bedzie przeszkadAć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 10:57 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

A ja mimo wszystko nie rozumiem braku kodu, nie chodzi o jego obróbkę, tylko tego co wyczynia z buforem. Jedno podstawowe pytanie, czy w danych które wysyłasz jest w jakikolwiek sposób oznaczony koniec ramki?
Odbierasz całą ramkę, czy pojedyncze bajty obrabiasz w locie?
Nie podałeś nawet najmniejszego punktu zaczepienia i oczekujesz że ktoś to zrobi za Ciebie?

Zajrzałeś na forum B4x?

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Ostatnio edytowano 18 lis 2017, o 11:08 przez Harry, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 11:05 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

To moze inaczej jak moge odebrac bajty aby nie korzystać z biblioteki asyncstream i newdata,albo jak moge przerobic ta biblioteke lub edytować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 11:10 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Najpierw odpowiedz na pytania z mojego poprzedniego posta;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 14:50 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Nie ma znaku końca ramki . Tak jak pisalem po 2 bajcie dostaje info jak duzo znakow bedzie.Moze byc od 24 do 84 bajtow ramka. Na atmedze obrabiam pojedyncze na b4a wpada mi od 3 do 5 do buforra i nie moge nad tym zapanować. Wolałbym aby wpadał 1 lub np. 100.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 16:00 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Skoro nie pokażesz kodu, to może chociaż się dowiem czy dużo się różni od tego z przykładu.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 18:17 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

To jest to samo tylko tamto z atmegi32.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2017, o 20:07 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Chodzi o kod B4A, który Ci rzekomo nie działa. Sprawdzałeś w ogóle debugiem czy twoje dane dochodzą, zanim nie zacząłeś kombinować z poszczególnymi bajkami? To jest podstawą przy pisaniu softu.

Z mojej strony tyle, bo jak widać wogóle Ci na tym nie zależy, więc po co marnować swój czas.
Jak pokażesz że jest inaczej, to może w wolnej chwili rzucę okiem ;)

(ująłbym to inaczej, ale wtedy to byłby mój ostatni post tutaj, a na odchodne zostałbym poczęstowany sałatką z bananów, a tego bym nie chciał)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 08:58 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Już w sumie nic kodu nie mam próbowałem wszystkiego i szlak mnie trafia. Chodzi mi tylko o to jak można odebrać 1 bajt i sprawdzić czy to jest to co chcę i mogę odebrać następne. To jest trochę skomplikowana transmisja nie ma znaków końca tylko znak początku. Ramka się zmienia długością w zależności co przyjdzie na 2 bajcie(wtedy wiem ile w sumie mam odebrać). Jednak bufor psuje robotę. Zawsze odbiera po 4 lub po 5 bajtów i tak mam Ramki:
------------Jakiś bajt------------startowy-------ilosciowy--------sumacrc------cos tam dalej.
innym razem jest inna kolejność.

------------startowy------------ilosciowy--------------sumacrc---------costam dalej

Ja chciałbym to robić w locie po jednym bajcie. -



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 10:29 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Jesteś pewny że to nie jest pakiet udp? Z czego one pochodzą, oraz jak to odbierasz - bluetooth czy WiFi?

Wysłane ze srajfona

------------------------ [ Dodano po: 23 minutach ]

fisto5885 napisał(a):
używam :).Sub Strumien_NewData (buffer() As Byte) . Tylko chodzi o to, że buffor mnie ogranicza. Chodzi o to ze buffer zeruje się po odebraniu np. 4 bajtów zamiast odebrać np.24 bo tyle urządzenie wysłało. Aplikacja odbiera cały czas albo buffer.lenght=3 albo buffer.lenght=3 czasami wskoczy buffer.lenght=24. Jakoś na procku to było proste i bufforować nie trzeba było.

Nie robisz czasem operacji na tablicy buffer?
Kiedy sprawdzasz długość bufora?
fisto5885 napisał(a):
Już w sumie nic kodu nie mam próbowałem wszystkiego

Powiedz po prostu - "Nie próbowałem", tak będzie prościej
Wrzuć w końcu kod który Ci nie działa, bo moja szklana kula wciąż jest u szklarza.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 15:18 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Podłączone przez bluetooth. To trochę inne urządzenie problem podobny.Początek ramki to 56. Oczywiście wszystko leci ciągiem bez enterów linfederów.
Buffer.lenght czyta różnie 28,29,30,31
Tak wygląda to co leci:
Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



wrzucam też zdjęcie co mam na telefonie bufferstring to co teoretycznie wpadło w danym momencie do buffora.
Obrazek



Ostatnio edytowano 23 lis 2017, o 10:52 przez fisto5885, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 15:28 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Ten sub jest w Activity?
Wklej jeszcze jak inicjalizujesz klasę asynchstream, o ile w ogóle z niej korzystasz. Najlepiej byłoby jak byś wrzucił projekt w załączniku, albo przynajmniej podał jak dochodzisz do tego suba.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 15:35 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Trochę brudnopis


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



Ostatnio edytowano 23 lis 2017, o 10:51 przez fisto5885, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 15:55 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Szkoda że nie w zipie, ale już trudno. Jak wrócę na kompa to rzucę na to okiem, bo bez debugera ciężko się połapać w tak obszernym kodzie.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 16:02 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Harry napisał(a):
Szkoda że nie w zipie, ale już trudno. Jak wrócę na kompa to rzucę na to okiem, bo bez debugera ciężko się połapać w tak obszernym kodzie.

Wysłane ze srajfona

Dalej jest tylko gorzej, ale raczej ogarnę tu coś się dzieje po za mną i nie wiem co.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2017, o 20:38 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

To do posprzatania na pozniej na razie nie wiem co zrobić z tą transmisja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2017, o 09:07 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Spróbuj użyć
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
zmień co trzeba, ta funkcja odbiera tylko właściwe dane - rozmiar bufora jest już taki jak ma być z wyjątkiem 4 pierwszych bajtów, czyli właśnie bez rozmiaru. W międzyczasie popracuje nad innym sposobem.

Wysłane ze srajfona

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2017, o 10:50 
Offline
Nowy

Dołączył(a): 24 paź 2017
Posty: 15
Pomógł: 0

Harry napisał(a):
Spróbuj użyć
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
zmień co trzeba, ta funkcja odbiera tylko właściwe dane - rozmiar bufora jest już taki jak ma być z wyjątkiem 4 pierwszych bajtów, czyli właśnie bez rozmiaru. W międzyczasie popracuje nad innym sposobem.

Wysłane ze srajfona

Dzięki wielkie ogarnołem na stringach i dostałem HEX. Uffff kawał roboty teraz mam problem z dekodowanie dostaję wartości bajt ujemne w procku w Bascomie jest normalnie 0-255. tutaj -128 do 128 jak to przerobić na postać. Możliwą do dekodowania muszę mieć wartości bajtowe standardowe. Oraz jak potem XOR'wać bajty przez klucz w postaci bajtowej??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2017, o 10:53 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Jak dostajesz ujemne, to spróbuj przelecieć bufor/tablice przez ByteToString(...)
Zajrzyj TU, bo mi się nie chce kopiować ;)

------------------------ [ Dodano po: 49 minutach ]

Odnośnie drugiego pytania, przekonwertuj na Int, a potem
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Swoją drogą niewiem czemu nieda się tak jak w klasycznym vb6 - wart1 xor wart2, pewnie nie chcieli za dużo kopiować ;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



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: 29 ] 

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