Wieloportowy monitor portów szeregowych (COM) dla Windows. Aplikacja WPF / .NET 8, Windows 10 i 11. Uruchom SerialPortSense.exe z paczki Release lub dotnet run w katalogu repozytorium. Do zwykłej pracy z portami COM nie są wymagane uprawnienia administratora (chyba że dany port jest zablokowany systemowo przez inną aplikację).
- Wiele portów jednocześnie — otwieraj i monitoruj kilka portów COM obok siebie w niezależnych panelach.
- Układ dzielony — panele obok siebie (lewo/prawo) lub jeden pod drugim (góra/dół), z przesuwanym separatorem i przyciskiem zmiany orientacji.
- Auto-skan — automatycznie wykrywa i otwiera nowe porty, które wykazują aktywność.
- Tryb tekstowy i HEX — wysyłanie i odbiór danych w obu formatach.
- Log ze znacznikami czasu — każdy wpis ma czas
HH:mm:ss.fffi typ (Rx/Tx/Info/Error) z kolorowaniem. - Zaznaczanie i kopiowanie — wielokrotny wybór wpisów (
Ctrl+klik /Shift+klik),Ctrl+C(kopiuj),Ctrl+A(zaznacz wszystko) oraz menu kontekstowe. - Przeciągnij, aby zmienić kolejność — reordynacja paneli przez przeciągnięcie nagłówka.
- Wybór portu: lista dostępnych portów COM z odświeżaniem.
- Parametry transmisji: prędkość (baud), bity danych, parzystość, bity stopu, handshake.
- Prędkości:
1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 250000. - Bity danych:
5, 6, 7, 8.
- Prędkości:
- Edycja parametrów jest możliwa tylko przy zamkniętym porcie — po połączeniu sekcja ustawień jest zablokowana (i automatycznie zwijana).
- Tryb tekstowy: dane buforowane do znaku nowej linii; obsługa końcówek
\r\n. - Tryb HEX: odbiór w formacie
AA BB CC; wysyłanie sparsowanego hexa (np.0A FF). - Dodaj
\r\n: opcjonalne doklejanie CR LF do wysyłanego tekstu. Enter= wyślij w polu tekstowym.
- Kolorowanie wg typu:
Rx— zielony,Tx— niebieski,Info— szary,Error— czerwony. - Auto-przewijanie do najnowszego wpisu (można wyłączyć).
- Zapisz log do pliku
.txt. - Wyczyść log.
- Zaznaczanie i kopiowanie: wielokrotny wybór,
Ctrl+C(kopiuj),Ctrl+A(zaznacz wszystko), przyciskCopyoraz menu kontekstowe (Kopiuj / Zaznacz wszystko / Wyczyść).
- Włączany przełącznikiem Auto Scan.
- Skanowanie listy portów co 2 sekundy (
SerialPort.GetPortNames()). - Wykryty port jest sondowany przy 115200 8N1 (timeout 1 s); port, który wykazuje aktywność, jest automatycznie otwierany w nowym panelu (z zachowaniem ustawień sondowania).
- Porty już zarządzane przez aplikację są pomijane.
- Opakowanie
System.IO.Ports.SerialPort(pakiet System.IO.Ports 8.0.0). - Odczyt w pętli w tle: próbkowanie
BytesToReadco ~10 ms;ReadTimeout/WriteTimeout= 500 ms. - Zapis asynchroniczny przez
BaseStream.WriteAsync+FlushAsync(tekst UTF-8 lub surowe bajty). - Obsługa błędów: rozłączenie (
IOException), port zamknięty, odmowa dostępu, anulowanie. Przy błędzie odczytu port jest zamykany automatycznie.
- Iteracja po
SerialPort.GetPortNames()co 2 s. - Sondowanie: otwarcie portu
115200 8N1, oczekiwanie do 1 s na dane (10 × 100 ms). - Przy wykryciu aktywności port jest przekazywany do panelu (nie jest zamykany).
- Błędy sondowania są ignorowane.
- Struktura wpisu: znacznik czasu, wiadomość, typ (
Info/Error/Tx/Rx). - Format wyświetlania i kopiowania:
[HH:mm:ss.fff] [Typ] Wiadomość.
Wymagania: Windows 10/11 oraz .NET 8 SDK.
dotnet restore
dotnet build
dotnet runPublikacja (opcjonalnie, zależna od platformy):
dotnet publish -c Release -r win-x64Build trafia do bin/ (Debug) i bin/Release (Release).
Projekt jest dostępny na zasadach otwartego oprogramowania na warunkach licencji MIT. Szczegóły znajdują się w dołączonym pliku LICENSE.