English | 中文
A cross platform serial debug tools written by python
Windows | Linux | Raspberry Pi | macOS |
---|---|---|---|
White theme | Dark theme | protocol plugin | TCP/UDP | Terminal | Graph |
---|---|---|---|---|---|
screenshot maybe the old version, the latest may not the same totally! But better performance、more easy to use and more elegant
- cross platform (Windows, Linux, macOS, Raspberry Pi)(code with python, only if your platform support python)
- reliable stability, no UI freeze
- multiple language support
- configs save and auto load(auto save settings when exit)
- multiple character encode support(
ASII,GBK(Chinese),UTF-8,UTF-16
etc.) - multiple language support
- multiple connection type support, and support add connection plugin
- serial port
- serial auto detect, and remember last selected support
- serial offline auto reconnect support
- port baudrate(any value) bytesize parity stopbits flow control etc. settings
- rts & dtr control by hand
- TCP/UDP support, include client and server mode
- SSH client support
- serial port
- plugin support(Create plugin see docs/plugins.md), built-in plugin:
- dbg plugin, support basic send receive debug operation
- basic send/receive data (ascii and hex)
- send and receive data count
- clear received data area
- auto linefeed
- scheduled auto send
- send history and select send again
- custom most usage data items and one click to send
- CR LF(\r\n) or LF(\n) support
- key shortcuts like Ctrl+Enter to send etc. More see help
- receive and send record support add timestamp and save log to file
- send file
- unix terminal style color support(e.g.
\x1b[33;42mhello\x1b[0mhello2
) - escape character support, like
\r \n \t \x
etc.
- protocol plugin, customize your own protocol
- customize encoding and decoding method
- customize shortcut key
- escape character support, like
\r \n \t \x
etc.
- terminal plugin, basic terminal interaction
- graph plugin
- support dynamicly add graph widgets, add graph widgets you need
- display line chart in realtime, support customize protocol header(support escape characters)
- customable button to send data, support shortcut key
- dbg plugin, support basic send receive debug operation
There are two ways to install COMTool:
- Download binary files and run : For Windows or macOS, and simple usage users
- Install as python package(source code) : For Linux, or need to use plugins' user, or users who know about python
- Download the latest bin file at the release page or sourceforge
- Unzip
.zip
file, and clickcomtool.exe
to run
And you can install by scoop, maintained by StudentWeis
scoop bucket add Nightly https://github.com/StudentWeis/Nightly scoop install comtool
Linux has too much version, so we only compile binary for ubuntu. Other distribution please install from pypi or source code. If you have any idea to pack cross platform binary like flatpak or appimage, you can contribute a pull request or add an issue to tell me how to
Arch Linux and its derivative distributions can install from AUR(maintained by taotieren):
# Release version yay -S python-comtool # Development version yay -S python-comtool-git
-
Download release at release page, and extract files from
.zip
file, and clickcomtool
to run -
Add current user to dialout group to avoid
sudo
command
sudo usermod -a -G dialout $USER
grep 'dialout' /etc/group
reboot #must reboot to take effect
Open terminal, install dependencies with package manager:
sudo apt install git python3-pyqt5 python3-numpy
Use package manager to install pyqt5 numpy etc. This way makes install easier. If you meet some error when install with
pip
, you can try to install with package manager first. To find the package name, the trick is to usesudo apt-cache search package_name | grep package_name
to search package name, then install it.
Then install other packages with pip
:
git clone https://github.com/Neutree/COMTool.git --depth=1
cd COMTool
pip3 install . --verbose
# 或者
# python setup.py bdist_wheel
# sudo pip3 install dist/COMTool-*.*.*-py3-none-any.whl --verbose
- Add current user to dialout group to avoid
sudo
command
sudo usermod -a -G dialout $USER
grep 'dialout' /etc/group
reboot #must reboot to take effect
then enjoy by command
comtool
- Download release at release page or sourceforge
- Install dmg package
If you want to open multiple comtool, just right click dock icon, then click New Window
.
or you can open terminal and type
open -n /Application/comtool.app
or
cd /Applicatioin/comtool.app/Contents/MacOS
./comtool
Because the program is not signed by the developer, it will warn when you open it for the first time. You need to go to
Settings -> Security and Privacy -> General
to see the promptcomtool
and clickOpen anyway
.
If your program is download from here, it's ok, the error caused by pack issue, all the source code and pack script is here, even the pack progress is totally automated with github action, no one manually pack.
If you remain have concern, just download source code to run with python or pack yourself.
Of course, if you find a better pack way, please open issue to tell us.
For developers or the binary not support your platform's, use this way to install
-
Install Python3 first
- If windows or macOS: dowload python3
- If linux: ubuntu for example
sudo apt install python3 python3-pip
, macOSbrew install python3 python3-pip
-
Ensure you have
pip
pip3 --version
# or
pip --version
If no this command, install by
python3 -m ensurepip
- Then install from pypi:
pip3 install comtool
comtool
for Chinese, you can use tuna mirrors to download faster by:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple comtool
- Or you can directly install from github
pip3 install git+https://github.com/Neutree/COMTool
- Or you can download source code, then install from source code
- download source code, download in web page or
git clone https://github.com/Neutree/COMTool.git
- install
- download source code, download in web page or
cd COMTool
pip install .
or build your own wheel binary
pip3 install wheel
python setup.py bdist_wheel
pip install dist/COMTool-*.*.*-py3-none-any.whl
comtool
- If encounter error when install with
pip
, you can try to install with package manager first, then install withpip
again. e.g.
sudo apt install python3-pyqt5 python3-numpy cython3
To find the package name, the trick is to use
sudo apt-cache search package_name | grep package_name
to search package name, then install it.
- By the way, you should add current user to dialout group to avoid
sudo
command
sudo usermod -a -G dialout $USER
grep 'dialout' /etc/group
reboot #must reboot to take effect
- Copy tool/comtool.desktop to
/usr/share/applications
folder(may needroot
user to do this) - Edit
/usr/share/applications/comtool.desktop
, change icon pathIcon=/usr/local/COMTool/assets/logo.ico
to actual icon path, you can also use your love icon - Then you can find comtool app in start menu(or app center)
pip3 install pyinstaller
python pack.py
cd dist
ls
It's better to create a virtual environment before pack to decrease the size of binary
pip install virtualenv
virtualenv venv
source venv/bin/activate
# linuxvenv/Scripts/activate
# windows If you encounterrunning scripts is disabled on this system
, you can temporarily allow the current terminal to execute scriptsSet-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Thenpip install pyinstaller
andpython pack.py
- Install python(>=3.8) and pip3
Linux:
sudo apt install python3 python3-pip
Windows: dowload python3
- install packages like
pyserial
andPyQt5
etc.(list in requirements.txt)
cd COMTool
pip3 install -r requirements.txt
On Raspberry, python3-pyqt5
can be install by apt
command:
sudo pip3 install --upgrade pyserial
sudo apt install python3-pyqt5
- clone project
git clone https://github.com/Neutree/COMTool.git
- code, resolve bugs or add new reatures
Recommended PyCharm
IDE or vscode
to get start
How to run:
Generate translate binary files first(.mo
)
python COMTool/i18n.py finish
Then execute main program
python COMTool/Main.py
- pull request
see docs/plugins.md
- Install environment first(python pip packages in the requirments.txt)
apt install python3 python3-pip
pip3 install -r requirements.txt
- If you need to add a new lanuage, or skip
Add locale in i18n.py
locales=["en", "zh_CN", "zh_TW", "ja"]
append your language to this list, locales can be found here or wikipedia, zh_CN
for example means China Mainland, corresponding language is simplified Chinese characters, zh_TW
means China Taiwan, and language is traditional Chinese characters, you can also only use zh
to use simplified Chinese characters.
- Generate translate files
python i18n.py prepare
This command will generate .po
files in locales folder
- Translate mannually
Then translate .po
files, this is a standard translate file format which named gettext
- Generate binary translate files
to make program read faster, the text files .po
should be convert to binary file .mo
, just run command:
python i18n.py finish
and then you can see locales/<locale>/LC_MESSAGES/messages.mo
file
- Test
Run application, you will see the new translation
- Pull request
Create a PR to merge your changes to this repo
In the assets/qss
directory under the source code or binary program directory, copy a file from style-dark.qss
or style-light.qss
, the file name is style-xxx.qss
, here xxx
is the name of the theme, so that the software can detect the theme.
Then modify the qss
file according to your preferences. The syntax of qss
is similar to css
, but the support is not complete. Whether the css
syntax can be used depends on the actual effect, haha.
Add theme code is welcome!(PR)
In addition, the software has not been deliberately optimized for the theme, and the class and id may have been written casually, so there is no guarantee that future codes will be fully compatible with current qss.
Create issue here
And used these open source projects as libraries:
- PyQt5: GNU GPL v3
- pyserial: BSD-3-Clause
- requests: Apache 2.0
- Babel: BSD
- qtawesome: MIT
- pyte: LGPL 3.0
- paramiko: LGPL 2.1
- pyperclip: BSD-3-Clause
If this project helps you, you can buy me a cup of coffee