Tablice pytanie do szpeców....

Tablice pytanie do szpeców....
osamex
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:76
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:

Kopiuj
 
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:

Kopiuj
 
//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:

Kopiuj
//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.:

Kopiuj
 
int channelStart = 2;
int channelCount = 3; 

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

Kopiuj
 
//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
edytowany 1x, ostatnio: osamex
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

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

osamex
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:76
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"

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Głupi pomysł.

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

osamex
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:76
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/C_i_.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?

edytowany 1x, ostatnio: osamex

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.