Witam!
Chciałbym Was bardzo prosić o wytłumaczenie o co tu chodzi. Od kilku dni "studiuję" temat i o ile w teorii wydaje mi się zrozumiały, to w praktyce nie bardzo.
Jest urządzenie (multimetr), które transmituje poprzez port szeregowy odczyt, wybrany zakres itd. Transmisja jest bitowa (tak mi się wydaje) i jakoś "zakodowana".
Podsłuchałem port i wygląda to tak:
00 D0 E2 F1 18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 .Đâń..;N[j}Ś— °Ŕ
D0 E2 F1 18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 Đâń..;N[j}Ś— °ŔĐ
E2 F1 18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 E2 âń..;N[j}Ś— °ŔĐâ
F1 18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 E2 F1 ń..;N[j}Ś— °ŔĐâń
18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 E2 F1 18 ..;N[j}Ś— °ŔĐâń.
2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 E2 F1 18 2E .;N[j}Ś— °ŔĐâń..
3B 4E 5B 6A 7D 8C 97 A0 B0 C0 D0 E2 F1 18 2E 3B ;N[j}Ś— °ŔĐâń..;
itd.
Mam od źródłowy aplikacji, którą kiedyś lekko zmodyfikowałem i robiło co trzeba - zrzut do pliku ASCII w formie czytelnej dla ludzi. Urządzenie jednak pada i zakupione zostało nowe - niby identyczne (taki sam symbol), ale coś zmienili w protokole i już aplikacja nie działa. Zresztą do obu dołączona jest mala aplikacja Windows, która pokazuje odczyt oraz ekran LCD multimetru i ta stara również nie współpracuje z nowym urządzeniem.
W aplikacje, którą kiedyś znalazłem i lekko zmodyfikowałem jest taki opis:
/**
* display value is encoded by maping the elements of the 7-segment
* to the lower nibbles of byte groups [a,b] = {[1,2],[3,4],[5,6],[7,8]}:
* 0a:00
* 0a:01 0b:00
* 0b:01
* 0a:02 0b:02
* 0b:03
*
* by combining the nibbles to a byte we got a uniqe identifier
* for every symbol shown on the display.
*
* for byte 1 bit 3 represents a leading minus (negative value)
* for bytes 3,5,7 bit 3 indicates a leading decimal point
* (means the encoded value is the first part of the fraction)
*/
Napisałem na szybko taką funkcję:
string swapNibbles(string _x) {
int _in, _out = 0;
string wynik = "";
Int32.TryParse(_x, out _in);
_out = (_in & 0x0F) << 4 | (_in & 0xF0) >> 4;
wynik = _out.ToString();
return wynik;
}
ale dalej nie wiem, czy to ma sens i co dalej z tym robić?
Bardzo proszę o pomoc!
alagner