Версия для печати темы
Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QextSerialPort
Автор: dimay192 29.7.2010, 16:46
Привет, форумчане!
Использую QextSerialPort!
Вот такая проблемма!
Закольцевал последовательны порт сам на себя! Отправляю числа в диапазоне 0xFF-0x00, а получаю обратно в диапазоне 0x7F-0x00, т.е. восьмой бит всегда равен нулю.
И не могу понять: толи это особенность символьных устройств (работать только с символами в диапазоне 0x7F-0x00), толи преобразование типов надо какое произвести...
Подскажите, как быт!
Автор: Litkevich Yuriy 29.7.2010, 17:38
приведи код приёма, и укажи версию QextSerialPort
Автор: dimay192 29.7.2010, 18:04
Версия 1.2.0
Код приёма....
Для начала код отправления:
void QespTest::transmitMsg()
{
int i = port->write((message->text()).toAscii(),
(message->text()).length());
}
код приема:
bool serialPort::synchronizedReading()
{
int numBytes;
numBytes = port->bytesAvailable();
while(numBytes = port->bytesAvailable())
{
QByteArray b;
b.append(port->read(1));
port->getChar(&byte);
...
}
}
собственно, это чуток подправленный пример QESPTA
QByteArray b отношения к делу не имеет... так, экспериментировал...
Автор: Litkevich Yuriy 29.7.2010, 18: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
Автор: dimay192 29.7.2010, 18:12
Цитата(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 спорить не буду - не знаю, да вот пока только ниче лучше не нашел (начинающий я)
Автор: Litkevich Yuriy 29.7.2010, 18:20
Цитата(dimay192 @ 29.7.2010, 22:12)
QESPTA
это программа испоьлзующая QextSerialPort, а не сама библиотека.
Собственно в оригинальном виде я QextSerialPort не использую. Просто взял оттуда несколько WinIPI'шных кусков для своей поделки на Дельфях. Ну и реализовал под Qt. правда только под виндовоз.
Автор: kuzulis 29.7.2010, 18:56
Цитата
QByteArray коды 0x00 считает концом строки,
ненене.. это QString так считает..
dimay192, а тебе обязательно QextSerialPort использовать? Другие библиотеки рассматриваются7
Автор: dimay192 29.7.2010, 21:44
я так понял, что QextSerialPort самая популярная и отработанная библиотека. Пока только начал осваивать ее. С удовольствием выслушаю комментарии по поводу других библиотек!!!
Автор: kuzulis 29.7.2010, 21:48
Цитата
я так понял, что QextSerialPort самая популярная и отработанная библиотека. Пока только начал осваивать ее. С удовольствием выслушаю комментарии по поводу других библиотек!!!
Ну как бы я так бы не стал говорить... Она была единственно возможной... До недавнего времени.. Но.. теперь все поменялось!
---
Попробуйте ка это: http://qt-apps.org/content/show.php?content=112039
Автор: Litkevich Yuriy 29.7.2010, 21:57
Цитата(kuzulis @ 29.7.2010, 22:56)
ненене.. это QString так считает..
именно QByteArray, QString тут не причём.
Чтобы засовывать в псевдостроку (QByteArray) байты, нужно использовать:
QByteArray::fromRawData(...)
В 4.6. появился ещё перегруженный метод append, принимающий указатель на массив и кол-во данных.
Автор: Litkevich Yuriy 30.7.2010, 15:10
тему разделил: http://www.forum.crossplatform.ru/index.php?showtopic=5330, т.к. библиотеки разные
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)