Russian Qt Forum

Qt => Вопросы новичков => Тема начата: walkrunman от Февраль 10, 2017, 03:42



Название: SerialPort
Отправлено: 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);
}


Название: Re: SerialPort
Отправлено: lit-uriy от Февраль 10, 2017, 06:46
Таймер у тебя лишний, есть же уже
port::readyRead()


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

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

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


Название: Re: SerialPort
Отправлено: walkrunman от Февраль 11, 2017, 01:57
Не помогло. Теперь считывает слишком много информации... Ну с этим я сейчас еще попробую разобраться, конечно.
В консоль выводит, слава Богу)

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


Название: Re: SerialPort
Отправлено: walkrunman от Февраль 11, 2017, 02:14
Не помогло. Теперь считывает слишком много информации... Ну с этим я сейчас еще попробую разобраться, конечно.
В консоль выводит, слава Богу)

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

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


Название: Re: SerialPort
Отправлено: lit-uriy от Февраль 12, 2017, 14:51
>Консоль так реагирует на любой проект
попробуй запустить консоль независимо от креатора.

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

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


Название: Re: SerialPort
Отправлено: walkrunman от Февраль 12, 2017, 18:10
А как это делается..?


Название: Re: SerialPort
Отправлено: lit-uriy от Февраль 12, 2017, 18:39
что делается?
Запустить консоль?
В Винде через кнопку Пуск, открываешь командную строку, затем как и ранее запускаешь свою программу, если в её консоли печатается указанное тобой сообщение, посмотри напечаталось ли оно в виндовозной (запущенной отдельно).
В случае с GitChitath сообщения печатались во всех открытых консолях.


Название: Re: SerialPort
Отправлено: walkrunman от Февраль 13, 2017, 00:39
Запустил. Нет, не пишет ничего...


Название: Re: SerialPort
Отправлено: lit-uriy от Февраль 13, 2017, 07:07
т.е. появляется только в консоли твоего приложения? Если так, то искать в твоём приложении.


Название: Re: SerialPort
Отправлено: walkrunman от Февраль 14, 2017, 09:39
Проблема решилась.

Перезагрузил комп ><