crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> 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, 18:05
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(dimay192 @ 29.7.2010, 21:55) *
пример QESPTA
это довольно кривое творение. Я в нём много косяков находил. Лучше пиши своё чётко под QextSerialPort.
и не забудь, что QByteArray коды 0x00 считает концом строки, т.е. имея шестнадцатеричную последовательность:
01 02 03 00 05 06
Помещаяя её в QByteArray
QByteArray b;
b.append("01 02 03 00 05 06");

на выхлопе получишь:
01 02 03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dimay192
  опции профиля:
сообщение 29.7.2010, 18:12
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 29.7.2010
Пользователь №: 1915

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 29.7.2010, 21:05) *
Цитата(dimay192 @ 29.7.2010, 21:55) *
пример QESPTA
это довольно кривое творение. Я в нём много косяков находил. Лучше пиши своё чётко под QextSerialPort.
и не забудь, что QByteArray коды 0x00 считает концом строки, т.е. имея шестнадцатеричную последовательность:
01 02 03 00 05 06
Помещаяя её в QByteArray
QByteArray b;
b.append("01 02 03 00 05 06");

на выхлопе получишь:
01 02 03


Дык, собственно, что так:

QByteArray b;
b.append(port->read(1));

, что так:

char byte;
port->getChar(&byte);

режит верхний диапазон числел (восмой бит обнуляет)

На счет того, что QESPTA спорить не буду - не знаю, да вот пока только ниче лучше не нашел (начинающий я)

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2024, 21:25