Jump to content

piotrd66

Members
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Neutral

About piotrd66

  • Rank
    Newbie
  1. 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 mała 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 * * 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; } alej nie wiem, czy to ma sens i co dalej z tym robić? Bardzo proszę o pomoc! Przed chwilą zauważyłem taką powtarzalność (poza 00 na początku transmisji): 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 Đâń..;N[j}Ś— °Ŕ 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 Đâń..;N[j}Ś— °Ŕ 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 Đâń..;N[j}Ś— °Ŕ D0 E2 F1 18 2E 3B 4E 5B 6A 7D 8C 97 A0 B0 C0 Đâń..;N[j}Ś— °Ŕ Powtarzalność jest normalna, gdyż odczyt nie zmienia się teraz.
×
×
  • Create New...