Russian Qt Forum
Сентябрь 30, 2024, 12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SerialPort  (Прочитано 5206 раз)
walkrunman
Гость
« : Февраль 10, 2017, 03:42 »

Здравствуйте! Помогите, пожалуйста, решить такую проблему...
Нужно считывать данные с arduino. Arduino передает данные о напряжение на потенциометре, подключенном к aruino, компу. (Другими словами, просто информацию. Винда это воспринимает, грубо говоря, как текст, линукс, как байты...)
Вроде бы все работает. В том смысле, что я считываю данные в QByteArray, получаю массив байт... А точнее всего 1 байт, насколько я понимаю. Перевожу это в QString и могу в итоге напечатать в textEdit.
И все достаточно хорошо, вроде бы печатается.

Только вот. в консоли вылезает какая-то ошибка:
ANOMALY: use of REX.w is meaningless <default operand size is 64>

Вот что бы это значало? Гугление особо не помогло... (да и вообще с английским у меня далеко не идеально)

Кроме того в эту самую консоль ничего не хочет писаться. Пишется Hello. QTextStream cout(stdout);  cout << "Hello\n";
Но как только я пытаюсь QString напечатать - отказывается... вроде бы на формат не ругается, так что я уж не знаю...

Прикрепляю код.
В конструкторе mainwindow
    port = new QSerialPort;

    port->setPortName("COM4");//в зависимости от гнезда, куда подключен приемник
    port->setBaudRate(QSerialPort::Baud9600); // скорость передачи данных
    port->setDataBits(QSerialPort::Data8); //количество передаваемых бит в байте данных
    port->setStopBits(QSerialPort::OneStop);  //количество стоповых бит при передаче данных
    port->open(QIODevice::ReadWrite);

    connect(port, SIGNAL(readyRead()), this, SLOT(read()));

    timer = new QTimer(this);
    connect(timer, SIGNAL( timeout() ), this, SLOT( read() ) );
    timer->start(100);

Ну и слот read()

void MainWindow::read()
{


    QByteArray data = port->readAll();
    qs.append(data); //здесь биты превращаются в строку
        ui->textEdit->setText(qs);
}
« Последнее редактирование: Февраль 10, 2017, 04:11 от walkrunman » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Февраль 10, 2017, 06:46 »

Таймер у тебя лишний, есть же уже
port::readyRead()


В функцию MainWindow::read() добавь отладку:
qDebug() << "Readed:" << data;

В pro-файле не забудь добавить:
CONFIG       += console

Тогда в консоли будет печататься отладочное сообщение.
Записан

Юра.
walkrunman
Гость
« Ответ #2 : Февраль 11, 2017, 01:57 »

Не помогло. Теперь считывает слишком много информации... Ну с этим я сейчас еще попробую разобраться, конечно.
В консоль выводит, слава Богу)

Но вот эта вот ANOMALY так и осталась...(
Записан
walkrunman
Гость
« Ответ #3 : Февраль 11, 2017, 02:14 »

Не помогло. Теперь считывает слишком много информации... Ну с этим я сейчас еще попробую разобраться, конечно.
В консоль выводит, слава Богу)

Но вот эта вот ANOMALY так и осталась...(

Как оказалось, проблема даже не в SerialPort...
Консоль так реагирует на любой проект
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Февраль 12, 2017, 14:51 »

>Консоль так реагирует на любой проект
попробуй запустить консоль независимо от креатора.

Помнется мне в одной из тестовых сборок GitChitath под виндовс был такой прикол, эта самая GitChitath умудрялась свою отладку пулять вовсе имеющиеся консоли, в том числе в открытую консоль моего собственного приложения, пришлось GitChitath снести.

Может у тебя тоже какое-нибудь приложение себя так ведёт.
Записан

Юра.
walkrunman
Гость
« Ответ #5 : Февраль 12, 2017, 18:10 »

А как это делается..?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Февраль 12, 2017, 18:39 »

что делается?
Запустить консоль?
В Винде через кнопку Пуск, открываешь командную строку, затем как и ранее запускаешь свою программу, если в её консоли печатается указанное тобой сообщение, посмотри напечаталось ли оно в виндовозной (запущенной отдельно).
В случае с GitChitath сообщения печатались во всех открытых консолях.
Записан

Юра.
walkrunman
Гость
« Ответ #7 : Февраль 13, 2017, 00:39 »

Запустил. Нет, не пишет ничего...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Февраль 13, 2017, 07:07 »

т.е. появляется только в консоли твоего приложения? Если так, то искать в твоём приложении.
Записан

Юра.
walkrunman
Гость
« Ответ #9 : Февраль 14, 2017, 09:39 »

Проблема решилась.

Перезагрузил комп ><
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.164 секунд. Запросов: 22.