rs232terminal's People
Forkers
bulsvrs232terminal's Issues
Ускорение в read/write окнах
class MyPlainTextEdit : public QPlainTextEdit
{
Q_OBJECT
public:
MyPlainTextEdit(QWidget *parent = 0) : QPlainTextEdit(parent) {}
void delLine(int lineNumber)
{
// QStringList list = this->toPlainText().split("\n");
// list.removeAt(lineNumber);
// this->clear();
// this->insertPlainText(list.join("\n"));
QTextCursor cursor = this->textCursor();
cursor.movePosition(QTextCursor::Start);
cursor.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, lineNumber);
cursor.select(QTextCursor::LineUnderCursor);
cursor.removeSelectedText();
this->setTextCursor(cursor);
}
};
123
- Режим эхо
- Перетаскивание макросов
- Подтверждение удаления
- Сделать паузу для макросов (сверху справа), по стопу - очередь сначала
Circular array
Some fixes
- Display read/write packets now is recorded in settings.
- "Delete all macroses" now is not crashed the app.
Test Drive
- При активном режиме Echo mode нажимая на кгопку Clear в write lineEdit'е стирается и далее не отображаются передаваемые пакеты, ни с помощью Echo mode, ни с помощью отправки макросов (и по кнопкам и по checkbox'ам).
- Данные при приёме не укладываются равномерно - появляются дырки.
- Сделать у макросов кнопку Save неактивной, если в lineEdit'ах нет текста.
Test Drive 2
- 1. Везде, где определяются сигналы писать их возвращаемый тип. Например:
signals:
void bPress(int index);
void cbCheckInterval(int index, bool check);
void cbCheckPeriod(int index, bool check);
void editMacros(int index);
- 2. Убрать "-1"-цы в layout'ах, а в двух случаях заменить на:
WriteLayout->addWidget(m_eLogWrite, 1, 0, 1, 5);
ReadLayout->addWidget(m_eLogRead, 1, 0, 1, 5);
- 3. Развернуть порядок заполнения combobox'а для DataBits. Сделать так:
buffer << "8" << "7" << "6" << "5";
- 4. Переместить вызов функции m_cbPort->setEditable(true) сюда:
QStringList buffer;
foreach(QSerialPortInfo portsAvailable, QSerialPortInfo::availablePorts())
{
buffer << portsAvailable.portName();
}
m_cbPort->addItems(buffer);
m_cbPort->setEditable(true);
Это для того, чтобы в combobox'е был порт, а не пустое поле при первом запуске.
-
5. Добавить отправку пакетов по Enter (как дубляж кнопки Send).
-
6. Сделать очень короткие вспышки Tx и Rx, которые синхронизированны с приёмом/отправкой пакетов.
-
7. Режим эхо должен работать так:
-
Однократный режим
Время в spinbox'е - 0 мс.
Сначала передается один пакет (по макросу {только по одному и по нажатию пользователем; если есть макросы с проставленными checkbox'ами, то их нужно снять} или по кнопке Send) и программа ждет ответ. Если ответ совпадает с переданным, то фон строчек переданного и принятого пакетов делается зеленым, а символы пакетов - белыми. Если не совпадает, то фон - красный, символы пакетов - белые.
-
Мноргократный режим
Время в spinbox'е - отличное от 0 мс.
Сначала передается один пакет (по макросу {только по одному и по нажатию пользователем; если есть макросы с проставленными checkbox'ами, то их нужно снять} или по кнопке Send) и программа ждет ответ. Если ответ совпадает с переданным, то фон строчек переданного и принятого пакетов делается зеленым, а символы пакетов - белыми. Если не совпадает, то фон - красный, символы пакетов - белые.
Через промежуток времени, заданный в spinbox'е, после получения ответа тот же пакет снова отправляется.
И т.д., пока не уберут галочку режима эха.
Вывести общее количество неправильных ответов в QLabel под Echo mode. -
8. Исправить: виджет по ПКМ для конкретного макроса остается, когда приложение закрыто.
-
9. Исправить: время в макросе по ПКМ от 0 до 99 (просто учесть при выполнении 16 пункта).
-
10. Добавить spinbox ввода задержки между пакетами. По этой задержке определять начало и конец пакетов.
При этом, смещение влево (кнопка <--------) - больше не нужно и выравнивание Bytes count - тоже.
-
11. В главном окне сделать полосу прокрутки, если "минимакросы" (выдвижные) не помещаются.
-
12. Checkbox'ы Log'ов сделать кнопками с красными кружками (как в старых магнитофонах кнопка записи). При нажатии на кнопку она должна вдавливаться и красный кружок должен менять цвет с красного на серый, пока идет запись. При повторном нажатии запись должна прекращаться и кнопка должна возвращаться в исходное положение, а кружок опять должен стать красным.
-
13. Добавить возможность сворачивать окно.
-
14. ASCII формат. Должен быть чувствителен к регистру. Каждый символ - отдельный байт.
В приемном окне добавить отдельную возможность переключения форматов отображения принимаемых данных: HEX, ASCII и DEC.
В передающем окне добавить отдельную возможность переключения форматов отображения передавамых данных: HEX, ASCII и DEC.
Оставить HEX, ASCII и DEC для выбора в каком виде отправляются данные по кнопке Send.
Например, передается такая последовательность символов:
$PGRMC,A,x.x,hh,x.x,x.x,x.x,x.x,x.x,c,c,2,c*hh
на экране передачи должно быть отображено (при формате HEX в передающем окне):
24 50 52 4D 43 2C 41 2C 78 2E 78 2C 68 68 2C 78 2E 78 2C 78 2E 78 2C 78 2E 78 2C 78 2E 78 2C 78 2E 78 2C 63 2C 63 2C 32 2C 63 2A 68 68
-
15. Убрать окно макросов доступное по кнопке Macro и саму эту кнопку тоже убрать. Кнопки Add Macros и Load Macroses перенести в QToolBar главного окна.
-
16. Редактирование макроса по ПКМ сделать основным редактором пакетов вместо окна макросов доступного по кнопке Macro. В него перенести все то, что относится к одному пакету из бывшего окна макросов (кроме кнопок отправки, удаления, а также spinbox'а времени и checkbox'ов Interval и Period - всё это будет в выдвижном виджете). Кнопки Load и Save перенести в QToolBar'ы. Также в QToolBar добавить кнопку Save as...
Плюс добавить выбор формата ввода макроса: HEX, ASCII или DEC. А именно, после lineEdit'a добавить снизу в три строки отображение текущего набранного пакета в HEX, ASCII и DEC:
-
первая строка должна состоять из QRadiobutton с HEX именем формата, QLabel - для отображения пакета в HEX;
-
вторая строка должна состоять из QRadiobutton с DEC именем формата, QLabel - для отображения пакета в DEC;
-
третья строка должна состоять из QRadiobutton с ASCII именем формата, QLabel - для отображения пакета в ASCII.
В каждый момент времени только один radiobutton может быть выбран.
Выбирая конкретный radiobutton - выбирается формат ввода пакета (следовательно формат пакета должен записываться в файл макроса). Если пакет уже был, то выбирая формат отличный от текущего формата (HEX, DEC или ASCII) пакета, пакет должен пересчитываться в новый формат (запоминаться только по требованию пользователя). Выбор radiobutton'ов не запоминается, а считывается из файлов макросов.
-
TODO
Исправить:
- 1. Не запоминает состояние после перезапуска:
- 1.1. Port.
- 1.2. Baud.
- 1.3. Bytes count.
- 1.4. Echo mode (checkbox & spinbox).
- 1.5. Auto scrolling.
- 1.6. Send (spinbox).
- 1.7. Загруженные файлы макросов (названия на кнопках), т. е. всё пишет в главный файл настроек, даже если файлы для пакета существуют.
- 1.8. Установленные в макросах checkbox'ы.
- 2. При загрузке программы не активны checkbox'ы и кнопки отправки пакетов, когда в lineEdit'ах есть текст.
- 3. В Echo mode длина пакетов по строке осталась не корректной.
Ввести:
- 1. Видимость полосы прокрутки в макросах - всегда.
- 2. В Echo mode сделать checkbox активным всегда.
- 3. Добавить шрифт Lucida Console в ресурсы программы (на общих документах есть шрифт).
- 4. Шрифт в lineEdit'ах макросов - Lucida Console.
- 5. Фон в lineEdit'ах макросов - черный.
- 6. Текст в lineEdit'ах макросов - зелёный.
- 7. Выбор Data bits: 5, 6, 7, 8.
- 8. Выбор Parity: None, Odd, Even, Mark, Space.
- 9. Выбор Stop bits: 1, 1.5, 2.
- 10. Возможность ввода имени com-порта вручную (для Linux систем).
- 11. Изменить базовый класс главного окна с QWidget на QMainWindow.
- 12. Переделать архитектуру программы в целом, используя паттерны проектирования.
- 13. Кнопка загрузить файлы макросов (Load from files). Загрузка макросов из директории с помощью выделения нескольких файлов и последующим созданием виджетов для новых макросов. Старые макросы остаются, при этом, на своих местах, а новые добавляются вниз.
- 14. В главном окне справа "выдвижной" (по нажатию кнопки - тонкая по горизонтали, по вертикали занимает всю область главного окна справа, с изменяющейся стрелкой: > - при спрятанном окне, < - при видимом окне) виджет управления отправкой макросов с кнопками отправки и checkbox'ами установки времени. Чтобы не открывать каждый раз диалог управления макросами. (См. Бланшет Ж., Саммерфилд М. Qt 4: программирование GUI на C++. Пер. с англ. 2-е изд., доп. - М.: КУДИЦ-ПРЕСС, 2008. - 736 с. , С.31-38 "Изменяющиеся диалоговые окна").
- 15. Запоминать положение "выдвижного" виджета (виден или нет).
- 16. В "выдвижном" виджете сделать checkbox - выделить всё (Check all), чтобы выбрать все checkbox'ы макросов.
- 17. Раздельные режимы представления данных в read/write окнах: HEX, DEC, BIN, BIN-DEC, ASCII (для BIN-DEC и ASCII будет уточнено позднее).
- 18. Раздельная установка максимального количества строчек в read/write окнах.
- 19. Сохранение в текстовой файл раздельно содержимого read/write окон (в отличии от п.20 записываются строчки, доступные на данный момент, тогда как в п.20 создается отдельный буфер, в который записываются строчки пока не будет нажата кнопка Stop log).
- 20. Добавить кнопки для каждого read/write окон Start log & Stop log для записи в файл с именем по умолчанию: YYYYMMDDHHMMSS.log (пример: 20160514212459.log); или под именем, указанным пользователем в диалоге сохранения. Ограничение по времени записи внести в файл настроек (чтобы можно было при необходимости его изменить) равным 10 минут.
- 21. Выделение и копирование текста в read/write окнах.
- 22. Если не помещается в read/write окнах пакет в строчку - сделать горизонтальную полосу прокрутки.
- 23. Сделать возможность перетягивать перегородку между read/write окнами влево-вправо, увеличивая/уменьшая размеры окон по горизонтали.
- 24. Выборочная установка символа-разделителя (вместо $ по умолчанию).
- 25. Сделать отдельный поток для передачи/приема данных. Основной поток - для всего остального (интерфейса и т. д.).
- 26. Сделать режим ASCII-кодов (помимо HEX-режима с
$-разделителем), когда пакеты вводятся и отправляются без $ -разделителя (будет уточнено позднее). - 27. Сделать поддержку скриптов на Python'е: добавить выпадающий список (в Menu Bar'е QMainWindow) со всеми скриптами (элемент списка - имя файла скрипта без расширения), которые находятся в папке Scripts (интерфейс для внедрения скриптов будет уточнён позднее). Скорее всего будут создаваться пакеты и правлила их отправки.
TODO
- Маска ввода
- Возможность переключения между периодом и интервалом
- PlainTextEdit заменить на ListView
- в ASCII режиме пофиксить single send le
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.