QextSerialPort, Как заставить отправлять/принимать байт целиком |
Здравствуйте, гость ( Вход | Регистрация )
QextSerialPort, Как заставить отправлять/принимать байт целиком |
dimay192 |
29.7.2010, 16:46
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.7.2010 Пользователь №: 1915 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет, форумчане!
Использую QextSerialPort! Вот такая проблемма! Закольцевал последовательны порт сам на себя! Отправляю числа в диапазоне 0xFF-0x00, а получаю обратно в диапазоне 0x7F-0x00, т.е. восьмой бит всегда равен нулю. И не могу понять: толи это особенность символьных устройств (работать только с символами в диапазоне 0x7F-0x00), толи преобразование типов надо какое произвести... Подскажите, как быт! |
|
|
Litkevich Yuriy |
29.7.2010, 17:38
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
приведи код приёма, и укажи версию QextSerialPort
|
|
|
dimay192 |
29.7.2010, 18:04
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.7.2010 Пользователь №: 1915 Спасибо сказали: 0 раз(а) Репутация: 0 |
Версия 1.2.0
Код приёма.... Для начала код отправления:
код приема:
собственно, это чуток подправленный пример QESPTA QByteArray b отношения к делу не имеет... так, экспериментировал... |
|
|
Litkevich Yuriy |
29.7.2010, 18:05
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
пример QESPTA это довольно кривое творение. Я в нём много косяков находил. Лучше пиши своё чётко под QextSerialPort.и не забудь, что QByteArray коды 0x00 считает концом строки, т.е. имея шестнадцатеричную последовательность: 01 02 03 00 05 06 Помещаяя её в QByteArray
на выхлопе получишь: 01 02 03 |
|
|
dimay192 |
29.7.2010, 18:12
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.7.2010 Пользователь №: 1915 Спасибо сказали: 0 раз(а) Репутация: 0 |
пример QESPTA это довольно кривое творение. Я в нём много косяков находил. Лучше пиши своё чётко под QextSerialPort.и не забудь, что QByteArray коды 0x00 считает концом строки, т.е. имея шестнадцатеричную последовательность: 01 02 03 00 05 06 Помещаяя её в QByteArray
на выхлопе получишь: 01 02 03 Дык, собственно, что так: QByteArray b; b.append(port->read(1)); , что так: char byte; port->getChar(&byte); режит верхний диапазон числел (восмой бит обнуляет) На счет того, что QESPTA спорить не буду - не знаю, да вот пока только ниче лучше не нашел (начинающий я) |
|
|
Litkevich Yuriy |
29.7.2010, 18:20
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
kuzulis |
29.7.2010, 18:56
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Цитата QByteArray коды 0x00 считает концом строки, ненене.. это QString так считает.. dimay192, а тебе обязательно QextSerialPort использовать? Другие библиотеки рассматриваются7 |
|
|
dimay192 |
29.7.2010, 21:44
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 10 Регистрация: 29.7.2010 Пользователь №: 1915 Спасибо сказали: 0 раз(а) Репутация: 0 |
я так понял, что QextSerialPort самая популярная и отработанная библиотека. Пока только начал осваивать ее. С удовольствием выслушаю комментарии по поводу других библиотек!!!
|
|
|
kuzulis |
29.7.2010, 21:48
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Цитата я так понял, что QextSerialPort самая популярная и отработанная библиотека. Пока только начал осваивать ее. С удовольствием выслушаю комментарии по поводу других библиотек!!! Ну как бы я так бы не стал говорить... Она была единственно возможной... До недавнего времени.. Но.. теперь все поменялось! --- Попробуйте ка это: http://qt-apps.org/content/show.php?content=112039 |
|
|
Litkevich Yuriy |
29.7.2010, 21:57
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ненене.. это QString так считает.. именно QByteArray, QString тут не причём.Чтобы засовывать в псевдостроку (QByteArray) байты, нужно использовать:
В 4.6. появился ещё перегруженный метод append, принимающий указатель на массив и кол-во данных. |
|
|
Текстовая версия | Сейчас: 28.11.2024, 21:37 |