/SerialTest

Data transceiver/realtime plotter/shortcut/file transceiver over serial port/Bluetooth/network on Win/Linux/Android | 跨平台串口/蓝牙/网络助手,带数据收发/实时绘图/快捷发送/文件收发面板,可在PC和Android设备上使用

Primary LanguageC++GNU General Public License v3.0GPL-3.0

SerialTest

downloads downloads installs translation
Windows CI(MinGW-w64) Windows CI(MSVC) macOS CI
A versatile test tool running on Windows/Linux/macOS/Android.
Works as data transceiver/realtime plotter/shortcut/file transceiver.
Supports serial port, Bluetooth SPP client/server, Bluetooth LE client, TCP client/server, UDP.

中文介绍

Get it on F-Droid
Download on Flathub

Features

Cross-platform
  • Supports Windows 7 and later
  • Supports most Linux distros
  • Supports macOS 10.13 (High Sierra) and later
  • Supports Android 5.0 (Lollipop) and later
Serial port debugger
  • Show all available serial ports with parameters. No need to check Device Manager or dmesg
  • Set baud rate, data bits, stop bits, parity scheme, flow control and change them on the fly
  • Modify DTR/RTS signals, Show CTS, DSR, DCD, RI(RNG)signals
  • Save the parameters of the last connection
  • Save connection parameters by port name or device ID then reuse them quickly
  • (Android: support hardware serial port only, like /dev/ttyXXX)
  • (Android: Workaround for USB serial devices)
Bluetooth SPP debugger
  • Supports commonly used Bluetooth modules(HC-05, HC-06, JDY-34, ...)
  • Supports communication between PC and smartphone
  • Supports client mode and server mode
  • The server can be connected by multiple devices. You can enable/disable the Tx/Rx function of them.
  • Supports multiple local Bluetooth adapters (Experimental)
  • Client: Supports specifying service UUID
Bluetooth LE debugger
  • Show all services(primary and included services), characteristics and descriptors of connected device
  • Specify different service for Rx/Tx
TCP
  • Supports IPv4/IPv6
  • Client:Supports spceifying local address and port
  • Client:The remote address can be a IP address or a website
  • Client:Supports storing connection parameters with user specified name then reuse them quickly
  • Server:Supports listening on all NICs or specified NIC
  • Server:The server can be connected by multiple devices. You can enable/disable the Tx/Rx function of them.
UDP
  • Supports IPv4/IPv6
  • Supports listening on all NICs or specified NIC
  • Supports storing connection parameters with user specified name then reuse them quickly
  • Change remote address and port on the fly
High performance
  • Fast response:UI update is separated from Data reception. Disable "Realtime" option in "data" tab for higher speed
  • Fast response:Time-consuming works run in dedicated threads
  • Low memory cost:Received bytes to memory consumption is about 1:1, if the plot and "Realtime" option are disabled.
Data panel
  • Show data in hexadecimal
  • Show timestamp of received data
  • Show packets split by timeout with timestamp
  • Export raw data or selected text
  • Add suffix behind each sending(\r, \r\n, string, hex data)
  • Repeat
  • Rich encoding support
    (UTF8/16/32, GB2312/GB18030, BIG5, KOI8-R, Shift_JIS, EUC-KR, ...... )
  • Unescape user input
    (\r, \n, \t, \0, \123, \xFF, \uABCD, ...)
  • Enable/disable echo
  • Show sended/received data only
Realtime plotter
  • Human-readable data format
  • Drag or scroll the canvas by mouse
  • Drag or scroll the canvas on touchscreen
  • Showing the latest data or holding on
  • Show up to 99 graphs
  • Multiple X-axis mode
  • Legends with customizable name and color
  • Show/hide graphs
  • Clear the canvas by specified data or "Clear" button
  • Demos of STM32/Arduino/STC8
Control(shortcut) panel
  • Send spedified data by one click
  • Send a number quickly by slider
  • Send data in hexadecimal
  • Unescaping support
  • Add prefix/suffix
  • Import/Export the whole panel
File transceiver
  • Calculate CRC32 checksum quickly
  • Send with throttle
  • Stop receiving after specified number of bytes
  • CRC32 and file IO are handled in separated threads for better performance
Handy UI
  • Show multiple panels with your preferred layout on a single window
  • Show panel as separated windows
  • PC: Stays on top
  • PC: Opacity
  • PC: Start multiple instances with different modes, which are shown on the title bar
  • Check connection parameters and disconnect/reconnect on status bar
  • Customize font
  • Select language
  • Change theme(dark theme)
Portable
  • The app generates one single config file only
  • Never touchs Windows Registry
  • Use config file in current working directory or system default config directory
  • Export/Import/Clear config
  • Clear history
  • Set maximum history count
Supports Android
  • Small screen support: Force landscape mode
  • Small screen support: Show sended/received data only
  • Small screen support: Full screen mode
  • Drag/Scale gesture support on Plotter
  • Share text/file to SerialTest then send it

Previews

Data Panel Plotter&Data(GIF) Control Panel(GIF) Serial Port, Dark Theme
win_data mixed_plotter ctrl dark_serial
Bluetooth, Windows Serial Port, Android TCP Client, Linux TCP Server
win_bluetooth android_serial linux_tcp_client tcp_server

more previews

Tutorials[WIP]

1.Connect
2.Send&Receive Data
3.Plot

Demos

You can write programs on MCU according to the demos in the demo/ folder
Demo README

Binaries for Windows, Android and macOS

You can download pre-built binaries and Android APK in release page.

You can also download them in SourceForge
Download SerialTest

The Android app is available on F-Droid as well.
Get it on F-Droid

Build on Linux

Steps

1. Install depencencies

# sudo add-apt-repository universe
sudo apt-get update
# sudo apt-get install git build-essential
sudo apt-get install qtbase5-dev qt5-qmake libqt5serialport5-dev qtconnectivity5-dev 

2. Get the source code

cd ~
git clone https://github.com/wh201906/SerialTest.git --depth=1
cd SerialTest
mkdir build && cd build

3. Choose how to import QCustomplot

Use QCustomPlot source file(recommended)

You need to download QCustomPlot archive, extract the qcustomplot.cpp and qcustomplot.h in the /src folder(replace the existing qcustomplot.h), then build.

wget https://www.qcustomplot.com/release/2.1.1/QCustomPlot-source.tar.gz
tar -xzf QCustomPlot-source.tar.gz
cp qcustomplot-source/qcustomplot.* ../src

Use QCustomPlot library

If the qcustomplot.cpp doesn't exist in the src/ folder, the qmake will try to find the library file(xxx.so/xxx.dll) in the building directory(where you call the qmake command) and the default library directory.

4. Build and run

export QT_SELECT=qt5
qmake ../src
make -j4 && make clean
./SerialTest 

Install from the Linux software repository

Flathub

flatpak install flathub io.github.wh201906.serialtest
# run this app
flatpak run io.github.wh201906.serialtest

Arch Linux

# Install the release
yay -S serialtest

# Install the development version
yay -S serialtest-git

Translation

The project uses Weblate to manage translation.
If you'd like to help with the translation, please visit the Weblate translation page or create a PR to the weblate branch.
Translation status

Change Log

Change Log

License

The src/qcustomplot.h and the files in src/qdarkstyle/ are licensed under the same licenses as their respective projects.
The source code in src/ is licensed under GPL 3.0.
The source code in demo/(excluding dependencies), translations, documents and other parts of this project are licensed under MIT.