Jak przechowywać dane?

0

Witam.

Pisze sobie programik sterownik DMX 512 (DMX 512 - Protokół transmisji szeregowej używany głownie do obsługi sprzętu scenicznego).

Założenie jest takie że mamy 512 kanałów, a każdy z nich może przybrać wartość od 0 do 254.
"Pokaz" tworzymy programując kolejne kroki:

krok\kanal | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | [..] | 511 | 512
1 | 15 | 72 | 93 | 14 | 25 | 63 | 71 | 128 | 59 | 120 | 111 | 129 | 143 | [..] | 1 | 28
2 | 34 | 27 | 11 | 91 | 87 | 16 | 58 | 14 | 24 | 49 | 59 | 69 | 11 | [..] | 11 | 2
3 | 88 | 21 | 123 | 34 | 105 | 67 | 107 | 84 | 59 | 140 | 141 | 112 | 130 | [..] | 97 | 45
4 | 90 | 0 | 254 | 44 | 125 | 67 | 17 | 13 | 91 | 110 | 131 | 222 | 137 | [..] | 91 | 72

Pytanie jak przetrzymywać dane o stanach w kolejnych krokach aby ich odczyt był jak najszybszy ?
Najprościej (najwygodniej moim zdaniem) stworzyć małą bazę danych, ale odczyt tabeli o "szerokości" 512 będzie efektywny ?

Z góry dziękuję za wskazówki

2

Zapisz to w pliku w postaci binarnej.
Jedną operacją odczytujesz cały wiersz (512 liczb);

0

Wraca temat w którym nie dawno m.in. Ty mi pomagałeś (wtedy chodziło o odczyt pliku binarnego - udało się ;) ).
Powalczę z tym dziś...

Dziękuję :)

0

Mam głupie pytanie....

Rozumiem, że jeżeli zapisze to do pliku to muszę później odczytać w pętli bajt po bajcie aby przypisać je do zmienny / wyświetlić na ekranie tak ?

Jeżeli tak to jaką przewagę ma zapis binarny nad zapisem tekstowym?
Gdyby zapisywać liczby na trzech pozycjach (128,025,002, 023, 172 itp) to również można by odczytać to w pętli po trzy znaki.

0

Napisał Ci już wcześniej @_13th_Dragon - "Jedną operacją odczytujesz cały wiersz (512 liczb)".

0

Nie bardzo sobie radzę ze znalezieniem informacji jak to zrobić, ale idąc "tym" tropem zapisałem dane w formacie csv 1;235;232;51;33;52 wtedy split wrzuca mi wszystko ładnie do tablicy.

0

Udało się :)

@_13th_Dragon dziękuję za pomoc.

W sumie trafiłem na te strony wcześniej tylko nie wiedziałem czemu zapisuje mi poszczególne wartości w 4 bajtach (np 115 zapisywało mi jako 73 00 00 00) - powód był banalnie prosty - zapisywałem do pliku zmienną typu integer zamiast byte...

Póki co wszystko działa tak jak powinno, w razie problemów będę prosił o dalszą pomoc (o ile nie znajdę rozwiązania w Internecie oczywiście).

0

Zapisuj nie byte tylko całą tablice 256-ciu byte na raz.

0

Tak robie, tylko że wcześniej miałem tablice intów i poszczególne elementy tablicy zapisywał mi na 4 bajtach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1