Skip to content

Latest commit

 

History

58 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WT232 Terminal v0.6.1

License: MIT Platform Language

Простой многофункциональный терминал для виртуальных и COM-портов под Windows 7+.


Скриншоты

Стартовое окно (настройки UART)

Стартовое окно

Окно терминала

Окно терминала

Кодировки и дополнительные окна

Кодировки и дополнительные окна

Режим DUMP

Режим DUMP


Описание

WT232 — универсальный Windows-терминал для COM-портов. Поддерживает TEXT/DUMP режимы, 120 макросов (5×24), систему скриптов с расширением .wts, автоподключение USB-устройств по VID/PID, систему из 10 автоответов (Auto Reply).


Возможности

Основные функции

  • Работа с COM-портами (USB CDC/ACM, стандартные UART)
  • Режимы отображения приема: TEXT (текст), DUMP (HEX + ASCII)
  • Режимы отправки: TEXT с инлайн-HEX (в обратных кавычках `XX`)
  • Поддержка кодировок: UTF-8, CP1251, CP866, KOI8-R (оптимизировано для кириллицы)
  • Автоподключение USB-устройств по VID/PID/Serial Number
  • Многопоточная архитектура (отдельные потоки Rx/Tx) для высокой отзывчивости
  • Поддержка пользовательской скорости (Custom Baud Rate)

Макросы (5 банков × 24 ячейки = 120 команд)

  • Режимы работы: RUN (выполнение) / EDIT (редактирование)
  • Переключение отображения: LABEL (имя) / CMD (команда)
  • Переименование банков (только заголовок, без переименования файла скрипта)
  • Сохранение в INI-файле

Система скриптов (.wts)

  • Глобальный скрипт: [имя_программы]#0.wts
  • Скрипты макросов: [имя_программы]#1.wts ... [имя_программы]#5.wts
  • Автоматическое создание при нажатии SCRIPT (с примером)
  • Инлайн-HEX/DEC внутри `...`
  • Директивы: #DELAY, #STOP
  • Циклическое выполнение (без #STOP)

Автоответ (Auto Reply)

  • Автоматическая отправка команды при получении данных, содержащих триггер
  • До 10 правил с индивидуальным включением/отключением
  • Настраиваемая задержка перед отправкой ответа (мс)
  • Поддержка инлайн-HEX/DEC в триггере и ответе
  • Отдельное окно настроек с таблицей правил
  • Сохранение правил в INI-файле

Интерфейс

  • Кнопки скриптов: [?] [SCRIPT] [RUN] (слева)
  • Чекбокс UP: окно всегда поверх других
  • Чекбокс HEX: отображение отправленных данных в HEX-формате в окне эха
  • Чекбокс DUMP: переключение режима приема между текстом и дампом
  • Кнопка Folder: открыть папку с программой в проводнике Windows
  • Настраиваемый размер шрифта (8–16 pt)
  • Суффиксы отправки (автоматическое добавление CR/LF или HEX-байтов)

Управление потоком (Flow Control)

  • NONE — без управления
  • RTS/CTS — аппаратное рукопожатие
  • XON/XOFF — программное управление
  • RTS Toggle — переключение RTS (RS-485)
  • RTS Toggle (Inverted) — инвертированное переключение RTS

Системные требования

  • Windows 7 и выше
  • 32-бит (x86) или 64-бит (совместимость)

Сборка из исходных кодов

Проект разработан в среде Pelles C for Windows, версия 14.50.0 (C11 standard).

⚠️ Важно: Исходный файл main.c сохранен в кодировке UTF-16 LE (with BOM). Это необходимо для корректной обработки широких строк (wchar_t) и кириллицы в режиме Unicode. При редактировании файла убедитесь, что ваш редактор поддерживает эту кодировку и не конвертирует её в UTF-8 автоматически.

Для сборки:

  1. Установите Pelles C
  2. Откройте файл проекта WT232.ppj. При необходимости подключите в проекте нужный файл main.c
  3. Выберите конфигурацию сборки: Release
  4. Нажмите Build (F7)

Используемые библиотеки:

Все перечисленные библиотеки входят в состав Windows SDK и Pelles C, отдельная установка не требуется. Однако их необходимо явно указать в настройках проекта:

Project → Project Options → Compiler → C standard — установите C11 (если не выбран по умолчанию).

Project → Project Options → Linker → Library and object files — добавьте перечисленные библиотеки через пробел (setupapi.lib shell32.lib kernel32.lib user32.lib gdi32.lib comctl32.lib advapi32.lib).

Библиотека Назначение
kernel32.lib Базовые системные функции: управление памятью, потоками, файлами, таймерами
user32.lib Оконные процедуры, элементы управления, сообщения, диалоговые окна
gdi32.lib Графические функции: шрифты, рисование, контексты устройств
comctl32.lib Общие элементы управления (Common Controls): RichEdit, ToolTip и др.
advapi32.lib Расширенные системные функции: реестр Windows, INI-файлы
shell32.lib Функции оболочки: ShellExecute (открытие папки в проводнике)
setupapi.lib Обнаружение USB-устройств и получение VID/PID/Serial Number

Журнал изменений

v0.6.1 — Исправление утечек ресурсов и буферных переполнений

Утечки ресурсов:

  • Исправлена утечка дескриптора DLL: riched20.dll теперь загружается с сохранением хэндла (g_hRichEdLib) и освобождается через FreeLibrary при завершении программы
  • Исправлена утечка GDI-объектов: 23 статических кисти (HBRUSH), создававшиеся через CreateSolidBrush в обработчиках WM_ERASEBKGND/WM_CTLCOLOR* в разных окнах и диалогах, заменены на 3 глобальные кисти (g_hBrushBg, g_hBrushBtn, g_hBrushEdit), которые освобождаются через DeleteObject при выходе из WinMain
  • Статические переменные HWND для диалогов справки (hMacroHelpDlg, hSuffixInfoDlg, hScriptInfoDlg) переведены в глобальные, с корректным уничтожением через DestroyWindow при закрытии родительских окон
  • Добавлен обработчик WM_DESTROY в InfoWndProc для сброса hEditLog = NULL

Буферные переполнения:

  • Исправлено переполнение массива tokens[512] в parse_text_with_inline_hex: добавлена проверка tokenCount < 512 перед каждой записью
  • Исправлено потенциальное переполнение буфера wBuf в render_rx_buffer: жёстко заданные размеры swprintf (12, 4) заменены динамическим maxW - wLen; добавлены проверки границ для прямых записей wBuf[wLen++]

Логические ошибки:

  • Исправлена ошибка автоответа: эхо теперь использует ответ совпавшего правила (g_arMatchedRule) вместо жёсткого индекса [0]

Внесение изменений

Исходный код открыт для модификации. Вы можете:

  • Добавлять новые функции
  • Менять поведение существующих
  • Адаптировать под свои нужды
  • Исправлять ошибки

Проект написан на чистом Win32 API (без сторонних библиотек) и использует только стандартные компоненты Windows.

Весь код находится в одном файле main.c, что упрощает навигацию и модификацию.


Распространение измененных версий

Вы можете распространять измененные версии программы при соблюдении условий лицензии MIT (см. раздел "Лицензия").

Рекомендуется указывать:

  • Что программа основана на WT232
  • Ссылку на оригинальный репозиторий
  • Ваши изменения в отдельном файле или разделе README

Установка

Программа не требует установки. Достаточно извлечь файл WT232.exe из архива, разместить его в любой папке и запустить.

Настройки сохраняются в файле WT232.ini в той же папке.


Использование

  1. Запустите WT232.exe
  2. В окне настроек выберите COM-порт и параметры соединения
  3. Нажмите OK для открытия терминала
  4. Для отправки данных введите текст в поле ввода и нажмите SEND
  5. Принимаемые данные отображаются в главном окне

Горячие клавиши и элементы управления

Клавиша/Элемент Действие
F1 / Кнопка Info Открыть окно "О программе" и справку
Чекбокс UP Закрепить окно терминала поверх всех остальных окон
Чекбокс HEX Включить отображение отправленных данных в HEX-формате (в эхо-режиме)
Чекбокс DUMP Переключить режим отображения принимаемых данных (TEXT ↔ DUMP)
Кнопки M1–M5 Открыть соответствующую панель макросов
Чекбокс Auto Reply Включить/выключить систему автоответа
Кнопка Auto Reply Открыть окно настроек автоответа
Кнопка Folder Открыть папку с программой в проводнике Windows
Enter (в поле ввода) Отправить команду (аналог кнопки SEND)

Макросы и скрипты

Открытие панели макросов

Для открытия панели макросов нажмите одну из кнопок M1–M5 в нижней части главного окна. Программа поддерживает 5 банков макросов по 24 ячейки в каждом (всего 120 команд).

Управление макросами

  • R→E / E→R — Переключение режима работы панели:
    • MODE: RUN: Нажатие на ячейку отправляет команду в порт
    • MODE: EDIT: Нажатие на ячейку открывает окно редактирования названия и команды
  • LABEL/CMD — Переключение отображения текста на кнопках: показывать пользовательское название (Label) или саму команду (Command)
  • Редактирование названия банка: В режиме EDIT кликните по полю с названием банка (вверху окна) для его переименования. Файл скрипта при этом не переименовывается и остается привязанным к индексу банка (#1...#5).

Система скриптов (.wts)

Каждое окно макросов имеет собственную панель управления скриптами внизу:

Кнопка Действие
? Открыть справку по формату скрипта
SCRIPT Создать/открыть файл скрипта для текущего банка
RUN/STOP Запустить/остановить выполнение скрипта

Особенности:

  • Файл скрипта создается автоматически при нажатии SCRIPT
  • Имя файла соответствует индексу банка ([имя_программы]#1.wts ... [имя_программы]#5.wts)
  • Скрипт, привязанный к конкретному банку макросов, выполняется независимо от основного терминала
  • Если соединение с портом пропадает во время выполнения, скрипт автоматически останавливается

Глобальный скрипт

В главном окне терминала также доступна система скриптов:

Кнопка Действие
? Открыть справку по формату скрипта
SCRIPT Создать/открыть глобальный файл скрипта
RUN/STOP Запустить/остановить выполнение скрипта

Особенности:

  • Имя файла: [имя_программы]#0.wts (например, WT232#0.wts)
  • Файл создается автоматически при нажатии SCRIPT

Автоответ (Auto Reply)

Система автоответа позволяет автоматически отправлять команды при получении определённых данных из порта.

Настройка автоответа

  1. Установите чекбокс Auto Reply в главном окне терминала
  2. Нажмите кнопку Auto Reply для открытия окна настроек
  3. Включите нужные правила чекбоксами (1–10)
  4. Задайте триггер (что ищем в принятых данных)
  5. Задайте ответ (что отправляем)
  6. Укажите задержку в миллисекундах
  7. Нажмите Сохранить

Синтаксис триггера и ответа

Формат Описание Пример
ASCII текст Обычная строка AT, OK, +CME
Инлайн-HEX Байты в обратных кавычках `0D0A` → CR+LF
Инлайн-DEC DEC значения (3 цифры) `011` → 0x0B
Смешанный Комбинация текста и HEX AT+ `0D0A`

Примечание: Срабатывает только первое совпавшее правило (приоритет по порядку сверху вниз).


Формат файла скрипта

Скрипт представляет собой обычный текстовый файл с расширением .wts, где каждая строка — это отдельная команда.

Пример файла скрипта

# WT232 Terminal Script
# Каждая строка - одна команда
# Поддерживается инлайн-HEX/DEC внутри `...`

# Директивы (в начале строки):
# DELAY 500  - задержка перед следующей командой (мс)
# STOP       - остановить выполнение скрипта
# ...        - комментарий

# Примеры команд:
AT
AT+BAUD=9600
`0D0A`     -> CR+LF
`011 001 255` -> 0B 01 FF

Директивы

Директива Описание
1000 Глобальная задержка (мс) в первой строке файла
#DELAY 500 Задержка перед следующей командой (мс)
#STOP Остановить выполнение скрипта
# ... Комментарий (игнорируется)

Внимание: Без директивы #STOP скрипт выполняется циклически (после последней команды начинает сначала).

Инлайн-HEX/DEC синтаксис

Внутри текстовых команд можно использовать HEX и DEC значения в обратных кавычках:

Синтаксис Описание Пример
2 символа HEX (AA) `0D0A` → CR+LF
3 символа DEC 000..255 (011) `011 001 255` → 0x0B 0x01 0xFF
4+ символов HEX чётной длины `0D0A` → 0x0D 0x0A

Разделители: пробел, запятая, точка

Примеры:

AT+CPIN=`0D0A`          # AT+CPIN= с CR+LF
`01 02 03 04`           # Отправка байтов 0x01 0x02 0x03 0x04
`011 001 255`           # Отправка байтов 0x0B 0x01 0xFF
`AA,bb,123.01`          # Отправка байтов 0xAA 0xBB 0x7B 0x01

Управление потоком (Flow Control)

Режим Описание
NONE Управление отсутствует. Используйте для простых TTL-переходников, отладки или когда линии RTS/CTS физически не подключены.
RTS/CTS Классическое аппаратное рукопожатие. Устройство сигнализирует о готовности через RTS и проверяет готовность собеседника через CTS. Наиболее надежно для высокоскоростной передачи.
XON/XOFF Программное управление символами XON(0x11)/XOFF(0x13). Не требует дополнительных проводов. Может конфликтовать с передачей бинарных данных, содержащих эти коды.
RTS Toggle Линия RTS автоматически переключается драйвером: HIGH во время передачи (TX Enable), LOW в покое. Предназначено для полудуплексных шин RS-485.
RTS Toggle (Inverted) Инвертированная логика RTS: LOW во время передачи (TX Enable), HIGH в покое. Используется для некоторых RS-485 адаптеров.

Файл настроек

Все настройки сохраняются в файле WT232.ini в той же папке, что и программа.

При повреждении файла настроек программа автоматически создает резервную копию WT232.ini.bak и восстанавливает настройки.


Структура проекта

assets/
  screenshot1.png   - Скриншот Стартовое окно (настройки UART)
  screenshot2.png   - Скриншот Окно терминала
  screenshot3.png   - Скриншот Кодировки и дополнительные окна
  screenshot4.png   - Скриншот Режим DUMP
main.c          - Основной исходный файл (весь код в одном файле)
WT232.ppj           - Файл проекта Pelles C
WT232.exe           - Собранный исполняемый файл
WT232.ini           - Файл настроек (создается автоматически)
WT232.ini.bak       - Резервная копия настроек (создается автоматически)
WT232.wts           - Глобальный скрипт (создается автоматически)
M1.wts, M2.wts...   - Скрипты макросов (создаются автоматически)
LICENSE             - Лицензия MIT
README.md           - Этот файл

Лицензия

MIT License

Copyright (c) 2026 IgerOK

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Ссылки

GitHub: https://github.com/IgerOK/WT232

Автор: IgerOK

Среда: Pelles C for Windows 14.50.0


Благодарности

Спасибо всем, кто тестирует и помогает улучшать WT232!


WT232 Terminal v0.6.1 — Простой, мощный и удобный инструмент для работы с COM-портами в WINDOWS 7+.

About

WT232 — универсальный Windows-терминал для COM-портов. Поддерживает TEXT/DUMP/HEX режимы, 120 макросов (5×24), скрипты с задержками, систему из 10 автоответов (Auto Reply), авто подключение USB-устройств по VID/PID, светлую тему.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages