- Shell 34.5%
- C++ 23.6%
- QML 23.6%
- QMake 9.7%
- Python 4.4%
- Other 4.2%
| releases/linux_x86-64 | ||
| .gitignore | ||
| .qmlls.ini | ||
| CMakeLists.txt | ||
| deploy.sh | ||
| icons.qrc | ||
| LICENSE | ||
| main.cpp | ||
| Main.qml | ||
| plug-serial-svgrepo-64.png | ||
| plug-serial-svgrepo-com.svg | ||
| README.md | ||
| serialmanager.cpp | ||
| serialmanager.h | ||
| statemanager.cpp | ||
| statemanager.h | ||
| test_build.sh | ||
| test_comprehensive.sh | ||
| test_history_loading.sh | ||
| test_manual_save.sh | ||
| test_serial.py | ||
| test_signal.sh | ||
| test_state_comprehensive.sh | ||
| test_state_loading.sh | ||
| test_value_loading.sh | ||
| uart_tool.desktop | ||
| uart_tool.pro | ||
Eikon UART Tool
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Icon Attribution
The application icon "plug-serial-svgrepo-com.svg" was downloaded from SVG Repo and is licensed under Public Domain (PD).
Disclaimer
This software was created using Opencode (https://opencode.ai) with Mistral AI's devstral-small-2 model.
Eikon UART Tool - Implementation Summary
Prerequisites
This project requires:
- Qt 6.8 or later (system libraries)
- Required modules: QtQuick, QtSerialPort
Ensure these are installed and available in your environment before building.
Overview
A Qt/C++ application for serial port communication with a clean GUI interface.
Features Implemented
1. GUI Design (800x480 pixels)
- Inbound Messages Display: Text area showing received messages
- Outbound Message Input: Text field for composing messages to send
- EOL Checkbox: Option to append "\r\n" to outgoing messages
- Send Button: Sends the outbound message when clicked (or Enter key pressed)
- Device Field: Text input for serial port device path
- Baud Rate Field: Pre-filled with "9600"
- Connect Button: Toggle button for connecting/disconnecting
- Status Label: Shows connection status and errors
2. Serial Communication Functionality
- Uses QSerialPort for all serial communication
- Dynamic linking to Qt 6.10 libraries
- Input validation for device name and baud rate
- Automatic reconnection handling
- Error reporting through status label
3. Key Features
- Enter Key Support: Pressing Enter in the outbound message field sends the message (via onAccepted signal)
- Connection State Management: Connect button toggles between connect/disconnect states
- Real-time Message Display: Incoming messages are appended to the display as they arrive
- EOL Handling: Optional carriage return/line feed appendage
- Command History: Persistent storage of previously sent commands (NEW)
- Message Limit: Automatically maintains a rolling buffer of up to 200 messages to prevent memory issues with long-running sessions
- Context Menu: Right-click in message areas to access Copy, Cut, Paste and Clear actions
Technical Details
Architecture
- Frontend: QML-based UI with Qt Quick
- Backend: C++ SerialManager class handling serial communication
- State Management: StateManager class for persistent settings and command history
- Build System: CMake 3.5+
Dependencies
- Qt 6.10 (Core, Quick, SerialPort modules)
- GCC 15.2.1 or compatible C++ compiler
Files
uart_tool/
├── .gitignore - Git ignore rules
├── CMakeLists.txt - CMake build configuration
├── Main.qml - QML user interface definition
├── main.cpp - Application entry point
├── serialmanager.h - SerialManager class header
├── serialmanager.cpp - SerialManager implementation
├── statemanager.h - StateManager class header (NEW)
├── statemanager.cpp - StateManager implementation (NEW)
├── test_serial.py - Test script
└── IMPLEMENTATION_SUMMARY.md - This file
Build Instructions
IMPORTANT: Build in the build folder, not in the root folder.
mkdir build
cd build
cmake ..
cmake --build . -j4
Run Instructions
- Linux After building, run the application directly:
./build/appuart_tool
Deployment Instructions
- Linux Then:
./deploy.sh
Usage Guide
Context Menu Operations
Both message areas support right-click context menu operations:
Inbound Messages Display Area:
- Copy Selected Text: Right-click to open the context menu, then select "Copy" to copy the currently selected text to your system clipboard.
- Clear All Messages: Right-click to open the context menu, then select "Clear" to remove all messages from the display area.
Outbound Message Field:
- Cut: Right-click to open the context menu, then select "Cut" to cut the selected text and place it on the clipboard.
- Copy: Right-click to open the context menu, then select "Copy" to copy the selected text to your system clipboard.
- Paste: Right-click to open the context menu, then select "Paste" to paste text from the clipboard into the message field.
Note: The context menus appear at the cursor position and preserve your text selection while you interact with them.
Git Repository
- Initialized with commit:
3bd4d94 - Branch: master
- All build artifacts excluded via .gitignore