Dużo danych do odczytu z rs

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Dużo danych do odczytu z rs

Post autor: limatorek »

Z okazji tego, że jest to mój pierwszy post na tym forum Witam wszystkich tu obecnych :). Od razu przejdę do sedna sprawy. A może najpierw się pochwalę, że jestem "zielony" w Labview, w każdym razie muszę się czegoś nauczyć. Mój problem - otóż chcę odbierać dane wysyłane uC poprzez rs i obrabiać je w Labview. Sama komunikacja i program od strony uC jest poprawnie zrobiony, sprawdzałem na terminalu i faktycznie odbieram to co trzeba. Tyle tylko, że muszę z tych danych zrobić jeszcze coś dalej, i pomyślałem, że użyję tego programu (Labview). Poniżej przedstawiam, to co do tej pory "nakleciłem" jednak pojawiają się błędy. Dodam, że jak odpalę program to jakoś to chodzi, oczywiście jeszcze nie wiem co odbieram, ale te wyniki odbierane się zmieniają więc chyba coś odbieram :). Gdy daję stop i ponownie chcę uruchomić program wyskakują błędy -1073676294 VISA Read To File in program.vi lub -1073676294 VISA READ in program.vi. Po uruchomieniu narzędzie Measurement & Automation w zakładce porty pojawia się wtedy wykrzyknik przy moim porcie na którym komunikuje sie z uC. Uruchamiam komputer ponownie i nie ma tam ostrzeżenia ale tylko na chwilę po uruchomieniu programu znowu się pojawia:/. Poniżej moje cudeńko. Jak by ktoś miał chwilę na to zerknąć to będę wdzięczny.

Pozdrawiam
limatorek
Załączniki
program.vi
(80.96 KiB) Pobrany 425 razy
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Dużo danych do odczytu z rs

Post autor: de80 »

witaj,
wg mnie to aplikacja jest trochę źle napisana... działa ona tak ze za każdą iteracją pętli jest otwierany i zamykany port szeregowy. bloczki visa open i close muszą być poza pętla a reszta ta co jest po za petlą while po prawej stronie wstaw do pętli, to co po lewej jest ok.
pozdrawiam
Obrazek
Awatar użytkownika
Pitol
Moderator
Posty: 987
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Dużo danych do odczytu z rs

Post autor: Pitol »

Poza tym co kolega wyżej napisał to w Twoim programie po zakończeniu działania pętli while do dalszej "obróbki" przekazywany jest ostatni odczyt z portu, a nie wszystkie, jak zapewne chciałeś.
Proponuję zajrzeć do przykładów (Help -> Find Examples... -> RS-232, a następnie np. wyszukać w przykładach jak gromadzić dane (np. wpisując for lub while w wyszukiwarce przykładów).
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Re: Dużo danych do odczytu z rs

Post autor: limatorek »

Więc tak teraz już coś mi drgnęło ale jeszcze daleka droga. Mojra ramka danych wygląda tak FF FF dana dana FF FF dana dana. Wyłapuje te dwie dane ze środka niby a FF-ki odfiltrowuję i tworzę na wyjściu tablicę. Ale pojawiają się w tablicy wyjściowej, gdzie są dane po odfiltrowaniu jakieś puste pola ;/ O co to moze chodzić? Wogule strasznie działa ten odczyt danych z RS. Musze manipulować czasami aby cokolwiek odbierać dodałem bloczek w głównej pętli Wait Until Next ms Multiple aby moc odbierać jakiekolwiek dane. Wynika to prawdopodobnie z tego, że mam bardzo dużo danych do odbioru. Proszę o jakąś rade poniżej załączam mój program.

Pozdrawiam
limatorek
Ostatnio zmieniony 01 mar 2011 21:51 przez limatorek, łącznie zmieniany 1 raz.
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Dużo danych do odczytu z rs

Post autor: de80 »

Ja na Twoim miejscu czytałbym bloczkiem VISA read tylko tyle bajtów ile ma twoja ramka. W Twoim VI'u czytasz tyle danych ile jest na porcie, urządzenie wysyła na port dane a Ty odbierasz dane i czekasz 100ms w tym czasie pojawiają się nowe dane i nie koniecznie tylko jedna ramka ale może być ich więcej wiec bloczek VISA read czyta tyle danych ile może w odstępach 100ms.
Obrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Dużo danych do odczytu z rs

Post autor: limatorek »

Dzięki za cenne uwagi. Jednak jak ustawię w VIsra read 5 bytow do odczytu bo tyle ma ramka to pojawiają się kolejne problemy. Mogę nie trafić od początku w moja ramkę ;/ . 7F 7F 7F dana dana 7F 7F 7F dana dana. Mogę tak trafić podczas uruchamiani programu, że VIsa Read zacznie czytać od dana dana 7F 7F 7F. I wtedy dostaję pustą tablicę na wyjściu. Jak to naprawić? Mi się wydaje, ze trzeba wysłać polecenia wykonania pomiaru do uC i odbiór wyniku pomiaru. Czyli bloczki VISA Write (wysyłam np 1 do uC a w jego programie ustawiem ze jesli przyjdzie 1 to wysyłaj dane) i operacji VISA Read odczytująca uzyskany wynik. Czy dobrze myślę czy jak można synchronizować program z urządzeniem ? Po za tym jak już uda sie tak trafić w ramkę od początku. to na wyjściu tablica jest poprzedzielana pustymi danymi. Chyba Shift Registery na tych pętlach coś tutaj może psuć?? Poniżej zdjęcie tego problemu.
Załączniki
arrayoutput.png
arrayoutput.png (6.57 KiB) Przejrzano 14893 razy
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Dużo danych do odczytu z rs

Post autor: de80 »

z tym synchronizowaniem komunikacji to jak najbardziej dobry pomysł. ja robiłem podobny projekt i przy odczycie czekałem, aż odczytany bajt będzie początkiem ramki i wtedy dopiero czytałem resztę ramki. jeżeli chodzi o shift register to usunąłbym je i do budowania tablicy zastosowałbym indexing.
Obrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Re: Dużo danych do odczytu z rs

Post autor: limatorek »

Dodałem bloczek visa write ale jednak mimo wszystko dane odbieram nie zawsze od początku ramki. Jaki bloczek do tego wykorzystałeś u siebie?? Chyba przy odczycie nie da się sprawdząć początku rami? Po bloczku visa read dopiero to można chyba jakims bloczkiem tablicowym odfiltrować ?
de80
Posty: 90
Rejestracja: 02 sty 2011 22:46
Wersja środowiska: LabVIEW 2014
Lokalizacja: KRK

Dużo danych do odczytu z rs

Post autor: de80 »

ja miałem troszeczkę łatwiejsze zadnie bo działałem na czystych stringach ale w twoim przypadku też to powinno działać. wczytywałem 1 znak i case'em sprawdzałem czy jest to co potrzebowałem jak nie to czytałem kolejny i tak aż do odczytania pierwszego znaku ramki i wtedy czytałem kolejne bajty ramki.
Obrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Re: Dużo danych do odczytu z rs

Post autor: limatorek »

okej dzięki Panie będę coś modził
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Dużo danych do odczytu z rs

Post autor: limatorek »

Wie ktoś może jak użyć funkcji Scan From String, żeby ze stringu 2 bajtowego zrobić word ?? Nie umiem użyć tej funkcji. Już próbuje chociarz zamienić ten string na liczbe binarną i ciągle wyskakuje mi błąd 85 związany z bloczkiem scanf from string.

Próbuję bloczkiem Hexadecimal String To Number, to znów nic nie otrzymuję na wyjściu tego bloczka :/
Załączniki
scanf frorm string.png
scanf frorm string.png (8.15 KiB) Przejrzano 14793 razy
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Dużo danych do odczytu z rs

Post autor: PiDi »

W Scan From String podajesz format twojego stringa- jeśli robisz to tak jak na swoim obrazku, to stwierdzasz, że masz zero-jedynkowy string. Jeśli więc podasz tam string, który zawiera cokolwiek innego niż 0 lub 1, to program się wysypie.
Twoje stringi jak widzę z wcześniejszych postów mają format hex. Żeby już za dużo nie mówić, załączam obrazek z dwoma możliwymi (prawie identycznymi) rozwiązaniami.
Załączniki
str2hex.jpg
ObrazekObrazekObrazekObrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Re: Dużo danych do odczytu z rs

Post autor: limatorek »

No właśnie też nie działa mi to :/. Wyskakuje dalej błąd 85 z funkcji scan from string a sposób z bloczkiem Hexadecimal String To Number też nie działa bo nie zwraca na wyjściu nić.
Załączniki
nie działa.png
nie działa.png (10.04 KiB) Przejrzano 14791 razy
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Dużo danych do odczytu z rs

Post autor: PiDi »

To by oznaczało, że podajesz na wejścia tych bloczków właśnie nic. Jaki cel mają te bloczki Match Pattern i String Subset po drodze? Tego drugiego jeszcze rozumiem, ale co chcesz otrzymać po Match Pattern?
ObrazekObrazekObrazekObrazek
limatorek
Posty: 42
Rejestracja: 14 lut 2011 13:35
Wersja środowiska: LabVIEW 7.1

Dużo danych do odczytu z rs

Post autor: limatorek »

Chodzi o to ze moja ramka wyglda tak 7F 7F 7F dana dana. Te 2 bloczki match i subset służą mi do wyciągnięcia dobrych danych. No i spełniają swoją role bo na wyjściu w tablicy za nimi otrzymuję włąściwe dane, czyli służą do odfiltrowania tych pustych 3 bajtów - match patern a subset wyciąga 2 kolejne i z nich tworzy tablice. Jak dam podgląd danych za bloczkem subset to wyświetla prawidłowo dane otrzymywane, no ale nie wiadomo jak je zamienić na liczbę.
ODPOWIEDZ