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).
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
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.
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
Ostatnio zmieniony 22 wrz 2010 07:19 przez spec.kolombo, łącznie zmieniany 2 razy.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
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
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...
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?
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
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.
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.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
problem okazał się być banalnym...
1. w bloczku "VISA Configure Serial Port VI" wystarczyło "Enabled termination" dać na falce
2. w "VISA Read" - "byte count" wartość większą niż 1024 bo tablica 1024 była przepełniana.
Dziękuję wszystkim za pomoc!