Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/65: Рейтинг темы: голосов - 65, средняя оценка - 4.58
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 53
1

Чтение com порта

07.03.2015, 12:34. Показов 12310. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу реализовать что то вроде терминала для com порта, но все не как не могу реализовать чтение с com порта. Если можно киньте пример.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QByteArray>
QSerialPort serial;
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
                ui->comboBox->addItem(info.portName());
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    if (serial.portName() != ui->comboBox->currentText())
       {
             serial.close();
             serial.setPortName(ui->comboBox->currentText());
       }
 
       //setup COM port
       serial.setBaudRate(QSerialPort::Baud2400);
       serial.setDataBits(QSerialPort::Data8);
       serial.setParity(QSerialPort::NoParity);
       serial.setStopBits(QSerialPort::OneStop);
       serial.setFlowControl(QSerialPort::NoFlowControl);
       serial.open(QSerialPort::WriteOnly);
}
 
void MainWindow::on_pushButton_2_clicked()
{
    //string for lineedit text
       QString str2 = ui->lineEdit->text();
 
       serial.write(str2.toUtf8());
}
 
void MainWindow::on_pushButton_3_clicked()
{
    //close
      serial.close();
}
 
void MainWindow::on_pushButton_4_clicked()
{
    QString str3;
     QByteArray data;
    data=serial.readAll();
   
   str3.append(data);
 
    ui->lineEdit_2->setText(str3);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2015, 12:34
Ответы с готовыми решениями:

Чтение COM порта использование нитей
Здравствуйте! Пытаюсь считать данные с COM порта, данные поступают периодически, без остановки. С...

Чтение данных из COM порта (разбивает строку)
Есть контроллер который формирует достаточно длинную строку с данными, разделенными запятой. ...

Чтение из COM порта, При чтении из порта зависает read()
Каждому рано или поздно приходится программировать com порт. Вот и мой черед пришол. Я ужу умею:...

Чтение из COM-порта
Ребят помогите глупому Пашке разобраться с багом в программе. Проблема в том, что программа висит...

6
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
07.03.2015, 12:56 2
а он у вас вообще есть?
0
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 53
07.03.2015, 13:49  [ТС] 3
Все таки я начал получать какие то данные, но непонятно что. Информация передается с платы aurduino
0
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
07.03.2015, 18:49 4
Krab91, в примерах есть целых 3 программы, которые показывают как работать с com-портом. Если не уверены, что получаете нужную информацию, скачайте какой нибудь эмулятор ком порта, сделайте 2 порта и свяжите их. и шлите в один порт, с другого читайте.
0
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 53
07.03.2015, 19:06  [ТС] 5
в том то и дело что через виртуальные com порты все правильно, а вот при использовании платы arduino прием не верен. То есть:
приложение qt и виртуальный ком порт= все ок;
приложение qt и aurduino= прием не верен;
виртуальный ком порт и arduino=все ок;
0
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
07.03.2015, 20:07 6
Krab91, как вижу, у Вас чтение по кнопке происходит? Мне кажется, лучше сделать все таки на сигнал readyRead. Как вариант, попробуйте еще добавить задержку перед чтением, а после чтения очищать буфер
C++ (Qt)
1
serial.clear(QSerialPort::Input);
0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 1
28.08.2015, 15:03 7
Цитата Сообщение от Krab91 Посмотреть сообщение
serial.open(QSerialPort::WriteOnly);
Наверное для ЧТЕНИЯ надо : serial.open(QSerialPort::ReadWrite);
0
28.08.2015, 15:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2015, 15:03
Помогаю со студенческими работами здесь

Чтение из COM порта
Приветствую всех! Для чтения из COM порта использую функцию ReadFile. Третьим параметром в данной...

Чтение с com порта
Здравствуйте! Подскажите, пожалуйста, почему у меня read() всегда возвращает значение -1 ? На...

Чтение из com порта
Понять не могу, что происходит. Шлю в ериал порт данные с дискретом в 20 миллисекунд. Скрипт...

Чтение COM порта
Не отсылайте в гугл, я от туда весь день не вылазию.... Помогите разобраться с чтением порта....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru