Skocz do zawartości

piotrd66

Członkowie
  • Postów

    1
  • Dołączył

  • Ostatnio

Posty napisane przez piotrd66

  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.

×
×
  • Utwórz nowe...