logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Działanie programów diagnostycznych portów COM - wykorzystanie w aplikacji C#

Wojtex2015 25 Maj 2021 15:36 474 6
  • #1 19450496
    Wojtex2015
    Poziom 8  
    Witam.
    Mam pytanie dotyczące komunikacji z wagami.
    Każda z wag ma swój protokół, którym komunikuje się z komputerami poprzez złącze COM. Ale programy diagnostyczne portów takie jak np. PUTTY są w stanie odczytywać komunikaty wysyłane przez wagi i wydobywać z nich wagę niezależnie od ustawień portu COM. Czy ktoś wie na jakiej zasadzie one działają? W jaki sposób wiedzą do jakiej wagi są podłączone i na jakim protokole wysyłane są dane?
    Czy mają zaimplementowane wszystkie istniejące protokoły?
    Może ktoś wie coś na ten temat?

    Chciałbym wykorzystać ten mechanizm w aplikacji napisanej pod C#.
  • #2 19450541
    zeemde
    Poziom 22  
    Wojtex2015 napisał:
    są w stanie odczytywać komunikaty wysyłane przez wagi

    Tak, są w stanie oczytać, ale pod warunkiem ręcznego ustawienia wszystkich parametrów transmisji.
    Wojtex2015 napisał:
    i wydobywać z nich wagę niezależnie od ustawień portu COM

    Nie, nie są takie mądre.
    Wojtex2015 napisał:
    W jaki sposób wiedzą do jakiej wagi są podłączone i na jakim protokole wysyłane są dane?
    Czy mają zaimplementowane wszystkie istniejące protokoły?

    Niestety nie zrobią tego.
  • #3 19450622
    tos18
    Poziom 42  
    Putty nie jest niczym więcej jak terminalem. Jego zaletą jednak jest to że umożliwia tworzenie profili w których zawarte są wszystkie ustawienia potrzebne do połączenia z danym urządzeniem. Oczywiście aby profil działał ktoś musi go stworzyć.

    Z tego co opisujesz wygląda że wszystkie wagi do których się łączysz używają protokołów opartych na tekście (ascii).
    Gdyby były to dane w zapisie binarnym(szesnastkowym) nie zobaczył byś wagi w putty a jedynie ciąg znaków.
  • #4 19451192
    Wojtex2015
    Poziom 8  
    Twierdzicie, że nie są w stanie odczytać.
    Podłączam PUTTY do wagi ELZAB, która wysyła cały czas pomiar na port COM. Dokumentacja twierdzi, że wysyła odpowiednią ramkę, w której zawiera wagę. Owszem, są to tekst ASCII. Ale PUTTY w oknie sesji pokazuje odczytaną wagę. Skąd więc wie jak rozszyfrować otrzymaną ramkę?
  • #5 19451210
    zeemde
    Poziom 22  
    Po prostu parametry (nazwijmy je domyślne od urodzenia) PuTTY dla portu szeregowego idealnie pasują dla tej wagi tzn. nr portu, szybkość transmisji, ustawienie ilości bitów danych, liczba bitów stopu, typ parzystości.
    Dla wagi innego producenta może już być inaczej.

    PuTTY nic nie rozszyfrowuje, gdyż ELZAB nic nie szyfruje i "nadaje otwartym tekstem".
  • #6 19451419
    tos18
    Poziom 42  
    Wojtex2015 napisał:
    Podłączam PUTTY do wagi ELZAB, która wysyła cały czas pomiar na port COM. Dokumentacja twierdzi, że wysyła odpowiednią ramkę, w której zawiera wagę.


    Może dlatego że używa protokołu podstawowego w którym nie ma nic poza wagą w postaci gotowych znaków i nawet znak końca linnii z powrotem karetki wysyła.
    Działanie programów diagnostycznych portów COM - wykorzystanie w aplikacji C#

    z taką ramką każdy terminal sobie poradzi.
    Ty w swoim programie też nie będziesz miał problemu.
    popatrz jak czytam port szeregowy gdy ramka jest bardziej zawiła w moim artykule o MPPT. Zainteresuj się strukturą DCB (windows) lub ioctl (linux) - umożliwiają konfigurację parametrów transmisji.
  • #7 19451740
    Wojtex2015
    Poziom 8  
    Zastosowałem odczyt portu COM metodą ReadByte() i rzeczywiście odczytuję całą ramkę. A że ramka ma wagę przekazywaną w kodach ASCII to dlatego widać ją na podglądzie.
    Dziękuję za pomoc.
    Problem rozwiązany.
REKLAMA