Strona 1 z 1

Podział danych

: 21 wrz 2010 22:49
autor: napoleon13
Utworzyłem tablice danych. Mam problem z danymi zawartymi w tej tablicy.
Przesyłane są na zmianę bity starsze [H] i młodsze[L]. W jaki sposób mógłbym je ze sobą scalić?
Długość tablicy 1024 pola (512 próbek 2 bajtowych).

Obrazek

Można to jakoś zrobić w tych tablicach? Czy powinienem to zrobić przed zamianą na tablice (String To Byte Array )?
Ale wtedy będzie kłopot ze stworzeniem tej tablicy :)

Re: Podział danych

: 21 wrz 2010 23:11
autor: kisiel
Witam

Spróbuj rzutowania Typecast (Numeric/Data Manipulation pallete). Na wejście podepnij Twoją tablicę 1024 elementów U8. Do terminala type, podłącz deskryptor typu - pustą tablicę U16. Utworzona na wyjściu kopia danych wejściowych będzie posiadała rozmiar 512 elementów U16. Mam nadzieję, iż w interpretacji takiej jakiej oczekujesz.

Pozdrawiam

Re: Podział danych

: 22 wrz 2010 00:48
autor: napoleon13
kisiel pisze: podłącz deskryptor typu - pustą tablicę U16.
Jak wstawić taką tablicę? "array connstant"? Ale nie bardzo wiem jak ustawić w niej 16 bitów ;/

Podział danych

: 22 wrz 2010 07:15
autor: spec.kolombo
Nie znam problemu, ale tak tylko przypominam, że jak Pan panie Napoleonie zamienisz string np. "23" na byte array to otrzymasz dwa bajty: pierwszy 00000010 i drugi 00000011 a po połączeniu tych dwóch bajtów wynikową liczbą będzie 515. Więc zastanów się czy bardziej nie potrzebujesz funkcji np. "scan from string" albo któregoś z palety zamiany stringów na liczby, albo - jak podejrzewam - potrzebujesz funkcji "spreadsheet string to array"
pozdrawiam

Podział danych

: 22 wrz 2010 13:44
autor: napoleon13
Obrazek

Wyszło mi masło maślane :)

Nie wiem czy dobrze połączyłem te dane za pomocą bloczka "String Subset".
Ma ktoś może jakiś pomysł?

Re: Podział danych

: 23 wrz 2010 07:30
autor: spec.kolombo
ok, dowiedziałem się o co chodzi:
Mam urządzenie z oprogramowaną atmegą, która wysyła mi pomiary w paczkach 32 bajtowych.
1 pomiar(16 bitów) to 2 bajty(2*8 bitów) -> bity starsze[H] i bity młodsze [L]
W rezultacie mój ciąg to 512 próbek 2 bajtowych. (1024 bajty)
[H][L][H][L][H][L][H][L][H][L][H][L]...[H][L] - Po tych danych są jeszcze inne dane, ale one mnie nie interesują.
[...]Połączenie bitów starszych i młodszych...

Podział próbek na 2. Pierwsze 256 to dane X, kolejne 256 próbek dane Y.
I wyświetlenie tych dwóch tablic na wykresie XY.
rozwiązanie na poniższym rysunku i w pliku vi, powinno działać (mam nadzieję :) )
tylko podłącz tam swoje dane zamiast stringa i zamień liczbę iteracji pętli na 512 i tą 8 zamień na 256.
pozdrawiam

Podział danych

: 23 wrz 2010 19:22
autor: napoleon13
Wszystko śmiga, ale tylko dla ręcznie podanego stringa.
W rzeczywistości pakiety przesłane przez atmege w tych paczkach nakładają się na siebie tworząc niezły bałagan.
Dlatego przed Pana rozwiązaniem chciałem utworzyć tablice 1024 elementów. Niestety z mizernym skutkiem...
Obrazek

W załącznikach przesyłam stringa jakiego otrzymałem z urządzenia.
1 losowa próbka:
http://w489.wrzuta.pl/plik/5bdYkMXAGsp/losowa_1_probka
Za pomocą mojej tablicy:
http://w489.wrzuta.pl/plik/9EAJzl7U6Mh/ ... ej_tablicy

Podział danych

: 24 wrz 2010 07:02
autor: spec.kolombo
Jak ta próbka nie zajmuje kilku MB to wrzuć ją tutaj, bo nie mogę w pracy (mam zablokowane) wchodzić na wrzuta.pl.
W załączniku wersja dla LV8.5.

Re: Podział danych

: 24 wrz 2010 11:48
autor: napoleon13
Wrzucam tutaj stringi i mój dotychczasowy program:

Podział danych

: 24 wrz 2010 12:33
autor: spec.kolombo
Ja już nic nie rozumiem.
Myślałem że losowa 1 próbka pochodzi od urządzenia z atmegą, która wysyła 32 bajty - próbka którą wysłałeś zawiera ich 18...
poza tym nie napisałeś w jakim formacie je wysyła (pierwsza połowa to wartości X a druga połowa to wartości Y?).

i pytanie podstawowe: skąd Ci się wzięły dane w pliku "dane odebrane za pomocą utworzonej tablicy"??!! co to za dane? skąd one się wzięły? i jak one się mają w odniesieniu do odebranych danych z urządzenia?

Podział danych

: 24 wrz 2010 14:10
autor: napoleon13
Dane w plikach zostały utworzone za pomocą: "Write to Text File" po bezpośrednim podłączeniu (1 próbka) lub z tworzeniem tablicy (seria).

Atmege wysyła wszystko co ma (1024 bajty + inne dane) , a jeśli skończy wysyłanie wysyła te dane ponownie.

Próbka może mieć np 18 bajtów, jeśli jest to paczka po tych pierwszych 1024... są to inne dane i ich paczki wyglądają trochę inaczej.

Pierwsze 1024 bajty wyglądają tak jak to wcześniej przedstawiłem.
[H][L][H][L][H][L][H][L][H][L]..[H][L]=1024 bajty=512 próbek= 256 danych X i 256 danych Y.

Podział danych

: 24 wrz 2010 14:45
autor: spec.kolombo
Jakoś nie widzę tych 1024 bajtów żeby miały jakiś sens. po pierwsze dane w pliku które przesłałeś posiadają znaczek końca linii, który podejrzewam że atmega sama nie dodała. Po drugie pierwsze 1024 dane to liczba 8382 więc trudno tutaj z jednej liczby zrobić wykres. Więc upewnij się czy faktycznie dostajesz takie dane jakie piszesz i dokładnie w takim formacie.

Podział danych

: 07 paź 2010 16:38
autor: napoleon13
problem okazał się być banalnym...
1. w bloczku "VISA Configure Serial Port VI" wystarczyło "Enabled termination" dać na falce :D
2. w "VISA Read" - "byte count" wartość większą niż 1024 bo tablica 1024 była przepełniana.
Dziękuję wszystkim za pomoc!