Tablice pytanie do szpeców....

0

Pisze aplikacje która przechwytuje sygnały (zmienne double) z zewnetrznego źródła i przy konfiguracji mam wybór czytanych kanałów (max 16 >>>od "0" do "15"<<<) i wybieram channelStart jako kanał poczatkowy oraz channelCount jako ilośc wszytskich kanałow zaczynając od poczatkowego, tak więc jeżeli:


int channelStart = 0;
int channelCount = 3; 

To czytam: 0,1,2 kanał, metoda z biblioteki napisanej przez producenta karty po wstępnej konfiguracji karty pomiarowej (konfiguracje pomijam) zwraca mi zmienne z czytanych kanałów w tablicy o tak:


//Inicjuje sobie tablice oraz ilość jej elementów:
czytaneDane = new double[channelCount]; //<<-- tablica ma mieć rozmiar "kontenera kanałów"

//teraz w pentelce czytam kazdy kanal po koleii:
for(int i = channelStart; i < channelStart + channelCount; i++) 
{
    blabla.Read(jakas_wlasciwowsc, out czytaneDane[i]);
}

I teraz wiadomo zeby sie odwołać do zmiennej muszę tylko podać indeks tablicy i włola:

//Dla pierwszego kanalu(dla kanalu 0)
czytaneDane[0]....
//Dla drugiego kanalu(dla kanalu 1)
czytaneDane[1]....
//Dla trzeciego kanalu(dla kanalu 2)
czytaneDane[2]....

Wiec wszytsko dziala jak należy :)

Ale ... z tym że problem pojawia się jak kanał startowy ustawie powyżej "0", bo wtety indeksy tablicy nie zgadzaja sie z moimi czytanymi danymi, np.:


int channelStart = 2;
int channelCount = 3; 

CZYLI POBIERA Z 2,3.4 KANAŁU i dalej:



//Inicjuje sobie tablice oraz ilość jej elementów:
czytaneDane = new double[channelCount]; //<<-- tablica ma mieć rozmiar "kontenera kanałów"

//teraz w pentelce czytam kazdy kanal po koleii:
for(int i = channelStart; i < channelStart + channelCount; i++) 
{
    blabla.Read(jakas_wlasciwowsc, out czytaneDane[i]);
}

I tu juz jest big problem bo inicjuje tablice, która jest jednowymiarowa lecz posiada trzy "pola" ale indeksy tej tablicy to 0,1,2 a ja w petli mam zamiar przypisac z mienne do indeksow 2,3,4 i wywala mi aplikacje.

Wiec tu pojawia sie wreszcie moje pytanie czy moge zasugerowac konstruktorowi tablicy ze ma numerowac od podanej przezem,nie wartosci a nie od "0"? Wtedy bedzie mi łatwo się odwoływac bo nie bede musial kombinować jak przypisac kanaly do tablicy tak zeby pasowalo np:

double ch5 = czytaneDane[0];

Bo to juz by sie mijalo zupełnie z celem.

Pozdrawiam
Oskar
0

blabla.Read(jakas_wlasciwowsc, out czytaneDane[i - channelStart]);

0

A moze zainicjue na poczatku (przy starcie) aplikacji cała szesnasto-elementowa tablicę z przypisanymi juz zmiennymi (same zera) i potem najwyzej program bedzie mi "nadpisywal" elementy o ktore mi chodzi a ja bede czytal te elementy, wtedy nie zglosi wyjatku ze jest po za zakresem???? Co najwyzej odczytam "0"

0

Głupi pomysł.

Przy zapisywaniu i odczytywaniu wystarczy odjąć i dodać do indeksu w tablicy wartość channelStart. Nie kombinuj.

0

Ok dzięki, spróbuje, nie kombinuje ;], jeszcze tylko mam jeden problem z którym walczę... opisany jest tutaj (nie będę powtarzał wątku): http://4programmers.net/Forum/Ci.NET/191271-wartosc_elementow_tablicy_jednowymiarowej_zapisywane_do_tablicy_wielowymiarowej, z tym ze nie wiem czy wszyscy mnie rozumieją... tamto pytanie tez odnosi sie do tych kanałow, one beda czytane dośc szybko i dane beda stale nadpisywane z ta tablica dwuwymiarową to wymysliłem tak zeby zrobić swego rodzaju "historę" która uzytkownik bedzie mógł zapisać do pliku po skonczeniu odczytu a chodzi o to żeby bylo ładowane to do pamieci bo liczy sie szybkosc i tu nie moge isc na kompromis i na bieŻąco zapisywac do pliku, liczac ze nie zwolni mi dysk lub nie podubi danych.

Tablica wydała mi sie najlepszym rozwiazaniem, wiec w problemie tym chodzi o to ze jak juz przejdzie jedna cała petle z tymi wartosciami z kanałów, to mam je załóżmy jak w przykładzie trzy i te zaraz zostaja wrzucone jako elementy tablicy wielowymiarowej symetrycznej... i nastepuje nastepne wejscie w petle ktora znow czyta zmiany w wartosciach kanalow, zmiany beda dosc subtelne ale jednak... wiec czy sie da to jakos opanowac czy nie?

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