Название: Serial Port Отправлено: fedotok от Июнь 12, 2014, 22:56 На COM порт приходит сообщение "message".
Терминал из примера Simple Terminal у себя выводит message message message Я хочу сравнивать текст этих сообщений Но когда беру его, он совсем не message, а другие строки. Вывод в консоль по дебагу на каждое приходящее сообщение выглядит примерно так "message " "messag" "e " "message " "m" "essage " Как там все устроено? Что нужно сделать? Название: Re: Serial Port Отправлено: Bepec от Июнь 12, 2014, 23:03 А без кода, а без кода, а без кода, нам ничем вам не помочь :)
Название: Re: Serial Port Отправлено: fedotok от Июнь 12, 2014, 23:09 А без кода, а без кода, а без кода, нам ничем вам не помочь :) да без изменений из примеров https://qt.gitorious.org/qt/qtserialport/source/13cf73fd7ac96fafc6752a5c18467ba7e6ce070e:examples/terminalтолько в момент где сообщение на консоль отправляет, добавлен qDebug Код: void MainWindow::readData() собственно и вопрос. Почему на терминал идет нормальное сообщение, а на вывод дебага нет? Название: Re: Serial Port Отправлено: Old от Июнь 13, 2014, 00:00 Одинаково все идёт.
Просто qDebug каждое новое сообщение выводит с новой строки. Название: Re: Serial Port Отправлено: fedotok от Июнь 13, 2014, 00:07 Одинаково все идёт. неа. истина только изредка Просто qDebug каждое новое сообщение выводит с новой строки. Код: QString::compare(QString(data), "message"))== 0 Название: Re: Serial Port Отправлено: Old от Июнь 13, 2014, 00:11 Одинаково все идёт. неа. истина только изредка Просто qDebug каждое новое сообщение выводит с новой строки. Код: QString::compare(QString(data), "message"))== 0 Смысл в том, что сообщения из порта может приходить по частям. Может прийти один символ, два или пять. Вот qDebug их и показывает так, как они приходят. Название: Re: Serial Port Отправлено: fedotok от Июнь 13, 2014, 00:16 Одинаково все идёт. неа. истина только изредка Просто qDebug каждое новое сообщение выводит с новой строки. Код: QString::compare(QString(data), "message"))== 0 Смысл в том, что сообщения из порта может приходить по частям. Может прийти один символ, два или пять. Вот qDebug их и показывает так, как они приходят. Название: Re: Serial Port Отправлено: Old от Июнь 13, 2014, 00:21 Для текстового протокола, таким маркером часто делают "\n\r". Перевод строки и возврат каретки.
Складывайте получаемые куски в буфер и проверяйте маркер конца. Как только пришел - все до него сообщение. Название: Re: Serial Port Отправлено: fedotok от Июнь 13, 2014, 00:25 Для текстового протокола, таким маркером часто делают "\n\r". Перевод строки и возврат каретки. а то что консоль терминала выводит сообщения нормально. Каждое с новой строки. Она на что ориентируется?Складывайте получаемые куски в буфер и проверяйте маркер конца. Как только пришел - все до него сообщение. Название: Re: Serial Port Отправлено: Old от Июнь 13, 2014, 07:18 а то что консоль терминала выводит сообщения нормально. Каждое с новой строки. Она на что ориентируется? Как раз из-за этого маркера "\n\r" в консолей все нормально. Новая строка в консоле начинается после перевода строки.Название: Re: Serial Port Отправлено: kuzulis от Июнь 13, 2014, 13:14 qDebug() добавляет символы новой строки в конец каждого выводимого контента.
Поэтому: Код
выведет: Цитировать a b а не Цитировать ab чтобы в консоль выводилось также как в терминал нужно использовать std::cout (или Qt-шный эквивалент), тогда оно буит выводится как есть. |