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

Program do analizy transmisji szeregowej ASCII . A program for analyzing ASCII serial transmissions.

GrzegorzSwinder 14 Gru 2025 11:56 1140 6

TL;DR

  • Program analizuje pliki tekstowe z transmisji szeregowych ASCII z wag, falowników i sterowników, pokazując wszystkie znaki sterujące oraz ich opis.
  • Działa na danych przechwyconych w HyperTerminalu lub PuTTY, a potem generuje drugi plik z opisem znaków, kodami, wartościami dziesiętnymi i hex oraz numerami linii.
  • Sprawdza poprawność XON, XOFF oraz sekwencji CR i LF, pokazując kody 13 i 10 dla Carriage Return i Line Feed w transmisji RS232.
  • Przykład użycia obejmuje pliki WAGA.TXT i WAGA_2.TXT, przydatne przy analizie transmisji z wag przemysłowych do PLC.
Wygenerowane przez model językowy.
REKLAMA
📢 Słuchaj (AI):
  • Napisałem fajny program do testowania danych przesyłanych z różnego rodzaju wag czy innych falowników i sterowników . Odbieramy dane na komputer za pomocą przechwycenia ich przy pomocy HyperTerminal czy innego Putty . Potem plik tekstowy przepuszczamy przez mój program i w wyniku dostajemy drugi plik gdzie dokładnie widać WSZYSTKIE znaki sterujące ASCII z opisem . Dokładnie widać gdzie jest XON , gdzie XOFF i czy CR i LF są prawidłowo wstawiane w transmisję . Program zadaje pytania równolegle po angielsku i po polsku . BARDZO mi się przydał przy analizie transmisji z wag przemysłowych do PLC po łączu RS232 .
    Program zapisuje dane sterujące ASCII w formie opisu , kody ASCII widoczne w formie liter i cyfr , dane w postaci decymalnej i hexadecymalnej oraz numer linii co się przydaje przy analizie długości transmisji . Podajemy plik wejściowy ( przykładowo WAGA.TXT ) i plik wyjściowy ( przykładowo WAGA_2.TXT ) .
    _________________________________________________________________________________________________________________________________________
    I wrote a cool program for testing data transmitted from various scales and other inverters and controllers. We receive the data on the computer by capturing it using HyperTerminal or another Putty program. Then, we run the text file through my program, and as a result, we get a second file that clearly displays ALL ASCII control characters with descriptions. You can see exactly where XON and XOFF are, and whether CR and LF are inserted correctly in the transmission. The program asks questions simultaneously in English and Polish. I found it VERY useful when analyzing transmissions from industrial scales to PLCs via an RS232 connection.
    The program saves ASCII control data as a description, ASCII codes displayed as letters and numbers, data in decimal and hexadecimal format, and the line number, which is useful for analyzing transmission length. We provide an input file (for example, WAGA.TXT) and an output file (for example, WAGA_2.TXT).
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    S S 73,5 g INPUT DATA
    S S 78,3 g
    ================
    LP dec hex opis OUTPUT DATA
    1 83 53 S
    2 32 20 SPACE - SPACJA
    3 32 20 SPACE - SPACJA
    4 83 53 S
    5 32 20 SPACE - SPACJA
    6 32 20 SPACE - SPACJA
    7 32 20 SPACE - SPACJA
    8 55 37 7
    9 51 33 3
    10 44 2C ,
    11 53 35 5
    12 32 20 SPACE - SPACJA
    13 103 67 g
    14 32 20 SPACE - SPACJA
    15 13 0D CR Carriage Return - powrot karetki CR LF jako pierwszy
    16 10 0A LF Line Feed - zmiana wiersza CR LF jako drugi
    17 83 53 S
    18 32 20 SPACE - SPACJA
    19 32 20 SPACE - SPACJA
    20 83 53 S
    21 32 20 SPACE - SPACJA
    22 32 20 SPACE - SPACJA
    23 32 20 SPACE - SPACJA
    24 55 37 7
    25 56 38 8
    26 44 2C ,
    27 51 33 3
    28 32 20 SPACE - SPACJA
    29 103 67 g
    30 13 0D CR Carriage Return - powrot karetki CR LF jako pierwszy
    31 10 0A LF Line Feed - zmiana wiersza CR LF jako drugi
    Załączniki:
    • _Serial_analizer.7z (23.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    GrzegorzSwinder
    Poziom 14  
    Offline 
    GrzegorzSwinder napisał 100 postów o ocenie 33, pomógł 13 razy. Jest z nami od 2023 roku.
  • REKLAMA
  • #2 21780459
    gregor124
    Poziom 28  
    Posty: 1544
    Pomógł: 97
    Ocena: 828
    Ja czasami tworzę sobie w miarę doraźnych potrzeb programiki w BASIC do analizy logów z urządzeń.
    W każdym razie ostatnio miałem spory problem z odbiorem prawidłowych danych z projektowanego urządzenia z wykorzystaniem połączenia szeregowego.
    Projektowane urządzenie było symulatorem procesorów, mam w nim na potrzeby debugowania zdefiniowane 2 porty RS232, i tylko jedna prędkość 115200 przy jednym bicie stopu.
    Ale do rzeczy. Chciałem w ramach testu symulacji rozkazów zapuścić program, który miał za zadanie zarejestrować wszystkie możliwe kombinacje wyników i ustawień znaczników w symulowanym procesorze, czyli tak ok. 512 kB danych w bloku, które leciały ciurkiem i były zapisywane do pliku binarnego.
    Robiłem to na komputerze z Windows 10. Okazało się, że w pliku pojawiały się przekłamane dane. W takim razie zwiększyłem maksymalny rozmiar bufora dla RS, oraz dałem najwyższy priorytet dla programu terminala.
    Błędów było mniej, ale nadal się pojawiały. Po kilku nieudanych próbach, łącznie z innym laptopem, połączyłem do zbierania logów mój stary komputer Apple II i o dziwo dane zostały zarejestrowane bez błędów i to za pierwszym razem ;)
    Wybrałem akurat Apple II, ponieważ symulator i tak był projektowany do zastosowania w nim. Nie wiem, czy zadziałałoby to pod Linux, ale byłby problem, ponieważ oprogramowanie, którego używałem, pracuje z kolei pod Windows.
    W takim razie przestrzegam przed używaniem do takich celów Windowsa, zwłaszcza że podczas transmisji nie były sygnalizowane żadne błędy ;)

    A co do twojego programiku, to nie widzę kodu źródłowego, ale rozumiem, że ten tekst to próbka jego wydruku.
    W takim razie wydaje mi się, że rozdzielasz kolumny kodem spacji, lepiej do tego zastosować TABulator poziomy (HT).
    A po drugie, jeśli już musi być numeracja kolejnych, to może lepiej zamiast 1,2 stosować liczby o stałej długości i z wiodącymi zerami np. 0001, 0002 itd. To moim zdaniem daje większą czytelność i zapobiega przesuwaniu się kolumn.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 21780603
    IS
    Poziom 19  
    Posty: 244
    Pomógł: 16
    Ocena: 96
    Nie wystarczył Ci RealTerm? On przecież ma możliwość wyświetlania znaków sterujących.
  • #4 21781533
    gregor124
    Poziom 28  
    Posty: 1544
    Pomógł: 97
    Ocena: 828
    >>21780603
    Niestety nie zawsze wystarczy i można by podać wiele przykładów.
    Jak wspominałem, opracowywałem symulator różnych procesorów. Ciekawa sytuacja była przy tworzeniu symulacji 8080 (to samo tyczy się Z80 i innych).
    Procesor ten ma wiele nieudokumentowanych flag, o których nie wspomina jego instrukcja, nie mówiąc już o błędach nawet w najnowszym manualu Z80.
    Weźmy np. 8-bitową instrukcję dodawania, przy dwóch argumentach mamy 256×256 różnych kombinacji, a jeszcze jeśli uwzględnimy, że na wynik końcowy ma wpływ stan z przed operacji dodawania znacznika CY, to otrzymamy 256×256×2 możliwych kombinacji.
    Nie wyobrażam sobie, że miałbym przeglądać 128 tys. linijek, aby wykryć wszystkie pozycje, kiedy jeden z nieudokumentowanych wskaźników przyjmuje stan 1.
    W takim przypadku wystarczy napisanie odpowiedniego filtra, który znajdzie nam tylko te interesujące nas pozycje.
    Do tego najlepiej nadaje się BASIC, a czas poświęcony na napisanie odpowiedniego filtra opłaci się z nawiązką.
    Jako ciekawostkę podam, że jest wiele emulatorów np. komputera Spectrum i może kilka (a może i żaden z nich) nie emuluje w 100% poprawnie procesora Z80.
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #5 21781753
    IS
    Poziom 19  
    Posty: 244
    Pomógł: 16
    Ocena: 96
    Nie dziw się, że wspominam RealTerm gdyż w opisie na początku wspominałeś tylko o zalecie jaką jest zapisywanie znaków strojących a nie o zaawansowanym filtrowaniu czy tez poszukiwaniu jakiś wzorców lub różnic od wzorca. Zastanawiałbym się także czy jednak współcześnie skrypt w Pythonie nie jest lepszy do analizy dużych ilości danych.
  • #6 21781836
    lemgo
    Poziom 15  
    Posty: 145
    Ocena: 151
    Virusstotal mówi, że nie można do końca ufać załącznikowi.

    Jest sens wysyłania exe, do którego nie ma źródeł (github albo co się kłania)?

    Tylko ASCII, czy jakieś kodowanie wspiera też?

    Takie rzeczy najprościej w pythonie, i na windows pójdzie, i na linuxie. Dwie minuty z chat gpt dało takie coś:

    I źródło widać, i można spojrzeć, czy nie instaluje czegoś, i można sobie dopasować pod swoje potrzeby

    [code]
    Kod: Python
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #7 21781957
    kjoxa
    Poziom 23  
    Posty: 599
    Pomógł: 45
    Ocena: 236
    An app for analyzing ASCII data over a serial interface.
📢 Słuchaj (AI):

Podsumowanie tematu

✨ Przedstawiono program do analizy transmisji szeregowej ASCII, który umożliwia szczegółowe badanie danych przesyłanych z urządzeń takich jak wagi przemysłowe, falowniki czy sterowniki PLC za pomocą interfejsu RS232. Program przetwarza pliki tekstowe z przechwyconą transmisją (np. z HyperTerminal lub Putty) i generuje wyjściowy plik zawierający pełną interpretację znaków sterujących ASCII, w tym XON, XOFF, CR i LF, wraz z ich opisem, kodami w formacie dziesiętnym i szesnastkowym oraz numeracją linii. Umożliwia to precyzyjną analizę poprawności i długości transmisji. Interfejs programu jest dwujęzyczny (polski i angielski), co ułatwia jego zastosowanie w różnych środowiskach. Program jest szczególnie przydatny do diagnostyki i testowania komunikacji szeregowej w systemach automatyki przemysłowej.
Wygenerowane przez model językowy.
REKLAMA