Witam serdecznie! Jestem tutaj nowy, pracuję nad analizatorem stanów i chciałbym trochę pozmieniać w programie. Mianowicie - jeśli prześlę z urządzenia sygnały badane:
0,125
1,125
2,125
3,125
4,125
5,125
6,125
7,125
8,125
9,125
10,125
11,125
12,125
13,125
14,126
15,126
16,126
17,126
18,126
19,126
20,126
...
Gdzie pierwsza liczba oznacza czas - próbkowanie do 16k słów, a druga liczba oznacza odczyt sygnałów z ośmiu kanałów (łącznie). Moje pytanie brzmi - jaką metodą utworzyć zapisanie tej drugiej liczby (po przecinku) w systemie dwójkowym? Razem z widocznymi zerami np. jeżeli to liczba 5 to 00000010 - żebym mógł zapisać to wszystko w pliku .txt.
Przesyłam fragment kodu co mi się udało zrobić, a chciałbym właśnie to zapisywać w systemie dwójkowym żeby wyraźnie było widać gdzie jest stan wysoki, a gdzie niski. Proszę o wyrozumiałość i z góry dziękuję za odpowiedzi.
int i=0;
for (i=0;i<rows.length;i++){
if (rows[i].contains("Sampling: ")){
break; //i - teraz zawiera numer wiersza z sampling rate
}
}
double sampling_rate=1; //częstotliwość próbkowania w Hz
if (rows[i].contains("1Hz")){ sampling_rate=1; } else
if (rows[i].contains("10Hz")){ sampling_rate=10; } else
if (rows[i].contains("100Hz")){ sampling_rate=100; } else
if (rows[i].contains("1kHz")){ sampling_rate=1000; } else
if (rows[i].contains("10kHz")){ sampling_rate=10000; } else
if (rows[i].contains("100kHz")){ sampling_rate=100000; } else
if (rows[i].contains("1MHz")){ sampling_rate=1000000; }
double time_tick=1/sampling_rate;
double sample_counter=0;
for (int j=i+3;j<rows.length;j++){ //pomija linijkę trigger mode
String row=rows[j].trim(); //usuwa \n\r i inne białe znaki
//System.out.print("Trying row ("+row+") ");
if (row.matches("\\d+,\\d+")){ //dopasowywuje wyrażenie N-cyfr przecinek N-cyfr
//System.out.println("Got match...");
String d[]=row.split(",");
double sample_no=Double.valueOf(d[0]);
int combined_byte=Integer.valueOf(d[1]); //połączone wszystkie 8 kanałów
double b0=0,b1=2,b2=4,b3=6,b4=8,b5=10,b6=12,b7=14; //rozkład bajtu na bity
if ( (combined_byte&0x01) == 0x01) { b0 = 1; }
if ( (combined_byte&0x02) == 0x02) { b1 = 3; }
if ( (combined_byte&0x04) == 0x04) { b2 = 5; }
if ( (combined_byte&0x08) == 0x08) { b3 = 7; }
if ( (combined_byte&0x10) == 0x10) { b4 = 9; }
if ( (combined_byte&0x20) == 0x20) { b5 = 11; }
if ( (combined_byte&0x40) == 0x40) { b6 = 13; }
if ( (combined_byte&0x80) == 0x80) { b7 = 15; }
channel1.add(sample_counter,b0); channel1.add(sample_counter+time_tick,b0);
channel2.add(sample_counter,b1); channel2.add(sample_counter+time_tick,b1);
channel3.add(sample_counter,b2); channel3.add(sample_counter+time_tick,b2);
channel4.add(sample_counter,b3); channel4.add(sample_counter+time_tick,b3);
channel5.add(sample_counter,b4); channel5.add(sample_counter+time_tick,b4);
channel6.add(sample_counter,b5); channel6.add(sample_counter+time_tick,b5);
channel7.add(sample_counter,b6); channel7.add(sample_counter+time_tick,b6);
channel8.add(sample_counter,b7); channel8.add(sample_counter+time_tick,b7);
sample_counter+=time_tick;
} //end of if (rows[j].matches("\\d+,\\d+"))
}