simple uart tool made with OpenCode and Devstral
  • Shell 34.5%
  • C++ 23.6%
  • QML 23.6%
  • QMake 9.7%
  • Python 4.4%
  • Other 4.2%
Find a file Use this template
2026-04-20 19:21:18 -03:00
releases/linux_x86-64 Added new version 0.3 AppImage 2026-04-20 19:21:18 -03:00
.gitignore Add .qmlls.ini to .gitignore 2026-04-19 13:37:17 -03:00
.qmlls.ini Add transparent serial port icon for application window 2026-04-19 15:24:36 -03:00
CMakeLists.txt Update version to 0.3, increase window width to 800px, implement 200 message limit feature 2026-04-20 16:53:51 -03:00
deploy.sh Fix icon loading by properly embedding resources in executable 2026-04-19 16:51:47 -03:00
icons.qrc Fix icon loading by properly embedding resources in executable 2026-04-19 16:51:47 -03:00
LICENSE Add GNU General Public License v3.0 to project 2026-04-19 14:52:42 -03:00
main.cpp Fix icon loading by properly embedding resources in executable 2026-04-19 16:51:47 -03:00
Main.qml Solved a bug in outboundMessage ContextMenu. Added Pause/Resume button 2026-04-20 19:16:52 -03:00
plug-serial-svgrepo-64.png Add transparent serial port icon for application window 2026-04-19 15:24:36 -03:00
plug-serial-svgrepo-com.svg Add transparent serial port icon for application window 2026-04-19 15:24:36 -03:00
README.md Add context menu support for both inbound and outbound message areas 2026-04-20 18:46:47 -03:00
serialmanager.cpp Add default 'Not connected' status on application startup 2026-04-19 15:35:40 -03:00
serialmanager.h Initial implementation of Eikon UART Tool 2026-04-08 18:04:43 -03:00
statemanager.cpp Update build instructions and remove run.sh. Fix baud rate handling, default values, and add input validation 2026-04-19 13:36:08 -03:00
statemanager.h Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_build.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_comprehensive.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_history_loading.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_manual_save.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_serial.py Remove hardcoded user paths for portability 2026-04-19 15:48:17 -03:00
test_signal.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_state_comprehensive.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_state_loading.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
test_value_loading.sh Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00
uart_tool.desktop Fix icon loading by properly embedding resources in executable 2026-04-19 16:51:47 -03:00
uart_tool.pro Add persistent command history storage using StateManager class 2026-04-08 18:04:43 -03:00

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:

  1. Copy Selected Text: Right-click to open the context menu, then select "Copy" to copy the currently selected text to your system clipboard.
  2. Clear All Messages: Right-click to open the context menu, then select "Clear" to remove all messages from the display area.

Outbound Message Field:

  1. Cut: Right-click to open the context menu, then select "Cut" to cut the selected text and place it on the clipboard.
  2. Copy: Right-click to open the context menu, then select "Copy" to copy the selected text to your system clipboard.
  3. 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