0 / 0 / 0
Регистрация: 21.07.2019
Сообщений: 3
|
|
1 | |
Qserialport21.07.2019, 12:35. Показов 1633. Ответов 16
Метки нет (Все метки)
Добрый день. У меня есть stm32, на ацп приходят данные с потенциометра. Затем я их обрабатывают и отправлю в com порт. Подскажите ,пожалуйста, как мне эти данные считать в qt creator и вывести на LCD дисплей.
0
|
21.07.2019, 12:35 | |
Ответы с готовыми решениями:
16
QSerialPort в Qt QSerialPort QSerialPort QSerialPort in QThread |
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
16.09.2019, 12:11 | 2 |
Sanalex97, у меня сейчас подобная задача, в процессе поиска наткнулся на вашу тему, удалось найти решение?
0
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
16.09.2019, 12:28 | 4 |
insite2012 у меня сейчас задача: 12 битное АЦП микроконтроллера оцифровывает 8 входов, формирует массив из 16 8ми битных чисел (12 битные данные с одного входа занимают по две 8ми битные ячейки в массиве), дальше этот массив передается по USART в COM порт ПК. Далее мне необходимо написать программу на ПК (для этого выбрал Qt creator и C++), которая будет принимать этот массив (читать данные с COM порта), обрабатывать его (16 8ми битных чисел массива необходимо обратно собрать в 8 12ти(16ти) битных) и далее строить график, где будут отображаться данные с АПЦ. Массив приходит раз в 500 миллесекунд. По y значение числа массива (т.е. всего на графике будет 8 кривых), по x время.
Вот как-то так. Пока ориентируюсь на QserialPort (чтение порта) и Qwt (для графика), но ввиду того, что на ПК особо ничего не писал такое, опыта нет, да и специальность другая. Более менее пишу на С на микроконтроллеры, но это совсем другое. В построение графика пока еще не лезу, сейчас хочу разобраться с приемом и обработкой данных по COM порту, но как-то не клеится
0
|
16.09.2019, 12:40 | 5 |
DmitryDDDD, я под мк не пишу (хотя надо бы, но нет времени пока с этим направлением начинать).
Что касается вашей задачи со стороны ПК, то я ее вижу примерно так: создать класс для чтения данных, в нем методы: открытия порта (open()), закрытия порта ((close()), начала чтения данных (startReading()), окончания чтения данных (stopReading()), и сигналы для сообщения о прогрессе операции и передаче считанных данных. Простой каркас класса для чтения я могу вам накидать, а дальше сами, реализуете логику чтения в методе.
0
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
16.09.2019, 12:44 | 6 |
Под МК я код написал, в этом плане все проверено и отлично работает. Вот с кодом для ПК проблемы. Было бы отлично, если бы вы накидали каркас, а я бы уже попробовал разобраться, так все же проще, чем с нуля.
0
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|||||||||||||||||||||
16.09.2019, 13:10 | 8 | ||||||||||||||||||||
insite2012, Avazart ну можно конечно, если это как-то поможет.
main.c Кликните здесь для просмотра всего текста
main.h Кликните здесь для просмотра всего текста
USART.c Кликните здесь для просмотра всего текста
USART.h Кликните здесь для просмотра всего текста
0
|
16.09.2019, 13:24 | 9 | ||||||||||||||||||||
Что-то типа того. Я не спец пока в C++ вообще и в Qt в частности, раньше писал на C#, но постепенно перехожу на Qt.
Еще момент, который стоит учесть - последовательный порт довольно тормозная штука, и надо бы предусмотреть в массиве, что вы посылаете старт и стоп сигналы. Хотя это опционально, может и так пойдет, как есть. Connector.h
0
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||||||||
16.09.2019, 14:14 | 10 | ||||||||||
insite2012,
Можно пользоваться сигналом
Тогда не надо будет второй поток заводить. А то как то жирновато держать целый поток на простом поллинге.
0
|
16.09.2019, 14:29 | 11 |
Не спорю. Я в своем проекте делал примерно так как показал выше, но естественно не претендую на истину в последней инстанции (да и опыта в данном ЯП у меня не так много).
Мне так привычнее, долгая работа - отдельный поток. Привык так делать в C#. Да и с учетом мощностей сегодняшних ПК, не думаю что особо критично.
0
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||||||||
16.09.2019, 14:47 | 12 | ||||||||||
DmitryDDDD, можешь покопаться тут:
0
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
16.09.2019, 15:40 | 13 |
_SayHello, insite2012, спасибо за предоставленные примеры, я покапаюсь в них, попробую разобраться, может что-то смогу понять, хотя на первый взгляд для меня пока что это "темный лес".
0
|
16.09.2019, 17:44 | 14 | ||||||||||
Думаю проще с нуля чем разбираться в коде который по-приводили.
Что мешает смотреть официальные примеры от Qt ? Добавлено через 7 минут
Тогда в Qt можно будет использовать canReadLine() и readLine() что реально упрощает дело.
0
|
342 / 197 / 52
Регистрация: 18.10.2017
Сообщений: 1,938
|
|
16.09.2019, 21:11 | 15 |
Когда мне в самом начале 2000-х годов потребовалось в Qt использовать COM-порт, QSerialPort ещё не было
и я написал свой вариант класса для работы с COM-портом и пользуюсь им до сих пор. В этом классе есть свои функции чтения и записи, с дополнительными функциональными возможностями, бывшими удобными мне в тех условиях. А для чтения из порта у меня запущен поток, в котором run() заканчивается по окончанию чтения очередной порции, но сам поток остаётся запущенным, только каждый раз запускается run(). COM-порт инициализируется с помощью структуры termios, как это делается в C.
0
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
17.09.2019, 07:55 | 16 |
Avazart Да на самом деле ничего не мешает, просто перерыл много информации, но более менее похожее рабочее решение моей задачи не нашел, а для меня быстрее разобраться с уже готовым решением и переделать его под свою задачу, чем с нуля. Но тут видимо с наскока не получится. Поэтому да, буду смотреть примеры Qt. Я как-то уже не осознанно делал очень простой терминал, но уже забыл все.
За добавление к коду на МК спасибо, да, там есть смысл так сделать. Добавлено через 47 минут Avazart, А можете подсказать, какой из данных примеров наиболее приближен к поставленной задаче? Blocking Master Example Blocking Slave Example Command Line Enumerator Example Command Line Reader Async Example Command Line Reader Sync Example Command Line Writer Async Example Command Line Writer Sync Example Enumerator Example Terminal Example
0
|
17.09.2019, 15:16 | 17 |
Да думаю нужно смотреть все. Ибо это только база.
Наиболее емкий как я помню Terminal Example.
0
|
17.09.2019, 15:16 | |
17.09.2019, 15:16 | |
Помогаю со студенческими работами здесь
17
QSerialPort ошибки QSerialPort on Android FlowControl в QSerialPort QSerialPort и readyRead Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |