Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
Горбаг
125 / 125 / 44
Регистрация: 25.09.2014
Сообщений: 665
Завершенные тесты: 2
#1

QDataStream вижу количество байт, но не могу их вывести - C++ Qt

11.05.2015, 23:57. Просмотров 327. Ответов 4
Метки нет (Все метки)

Добрый день.

Принимаю поток с устройства. Вижу N байт в потоке через bytesAvailable() - столько, сколько и должно быть.

Однако я никак не могу их прочитать. Всегда читается пустое значение. В примерах Шлее видно, что в клиенте и сервере при формировании и чтении потока используются переменные одинаковых типов (для каждой части датаграммы).

Мне кажется, проблема у меня в том, что я использую неправильные типы данных при приеме. Отсюда два вопроса:

1) Какой тип данных нужно использовать, чтобы корректно принять тип DWORD?
2) Может ли кто-то привести пример приема датаграммы из потока в массив ByteArray()?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2015, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос QDataStream вижу количество байт, но не могу их вывести (C++ Qt):

Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты - Assembler
Дан массив из 10 байт. Посчитать количество байт,в которых сброшены 6 и 4 биты. Массив байтов размещается начиная с DS:0000h. Ответ должен...

Дан массив из 6 байт. Посчитать количество байт число единиц, в которых не превышает 3. - Assembler
Дан массив из 6 байт. Посчитать количество байт число единиц, в ко- торых не превышает 3. блин люди немогу сделать.

Дан массив из 10 байт. Посчитать количество байт содержащих ровно три единицы - Assembler
Здравствуйте, возникла проблема с решением задачи: "Дан массив из 10 байт. Посчитать количество байт содержащих ровно три...

Дан массив из 13 байт. Посчитать количество байт содержащих только нули или единицы - Assembler
ПОЖАЛУЙСТА! РЕШИТЕ ЗАДАЧКИ!!!:) Задача №1 дан массив из 13 байт. посчитать количество байт содержащих только нули или единицы. ...

Дан массив из 10 байт. Посчитать количество байт с числом единиц в байте равным три. - Assembler
помогите с задачкой! Дан массив из 10 байт. Посчитать количество байт с числом единиц в байте равным три.Вот код,но что тут не правильно...

Посчитать в файле количество нулевых байт и различных байт - C++
Посчитать в файле кол-во нулевых байт и различных байт Кто решит буду весьма благодарен!:drink:

4
alexey_rage
586 / 386 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
12.05.2015, 00:07 #2
По моему вы обратились не по адресу.
Это вам на ТНТ в "Битву экстрасенсов" надо.

А здесь полагается выкладывать часть кода, в которой возникли проблемы.
0
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,424
Завершенные тесты: 1
12.05.2015, 00:44 #3
Горбаг, здравствуйте.
1) quint32;
2)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//...
 
    QByteArray data;
 
    {// write
    QDataStream stream(&data, QIODevice::WriteOnly);
    QString string("Hello!");
    quint32 bitsCount = string.length() << 3;
 
    stream << string;          qDebug() << "1" << data.toHex();
    stream << string.toUtf8(); qDebug() << "2" << data.toHex();
    stream << bitsCount;       qDebug() << "3" << data.toHex();
    }
 
    {// read
    QDataStream stream(&data, QIODevice::ReadOnly);
    QString string;
    QByteArray array;
    quint32 bitsCount;
 
    stream >> string;    qDebug() << "string =" << string;
    stream >> array;     qDebug() << "array =" << array.toHex();
    stream >> bitsCount; qDebug() << "bitsCount =" << bitsCount;
    }
 
//...
Почему такой вывод в 'Application Output' поможет разобраться:
http://doc.qt.digia.com/4.6/datastreamformat.html
1
Горбаг
125 / 125 / 44
Регистрация: 25.09.2014
Сообщений: 665
Завершенные тесты: 2
12.05.2015, 09:29  [ТС] #4
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void MyServer::slotReadClient()
{
    QTcpSocket* pClientSocket = (QTcpSocket*)sender();
    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_5_4);
    for (;;) {
        if (!m_Data) {
            bytesCount = pClientSocket->bytesAvailable();
 
            if (pClientSocket->bytesAvailable() < 0)
            {
                break;
            }
            in >> array;     qDebug() << "array =" << array.toHex();
            bytesCount = pClientSocket->bytesAvailable();
 
        }
 
        bytesCount = pClientSocket->bytesAvailable();
 
        QString strMessage =
            "Client has sended - " + m_Data;
        m_ptxt->append(strMessage);
 
        m_Data = 0;
    }
}
По-прежнему на выходе получаю пустоту.
array = ""
0
alexey_rage
586 / 386 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
12.05.2015, 09:56 #5
Цитата Сообщение от Горбаг Посмотреть сообщение
2) Может ли кто-то привести пример приема датаграммы из потока в массив ByteArray()?
C++ (Qt)
1
array = pClientSocket->readAll();
1
12.05.2015, 09:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2015, 09:56
Привет! Вот еще темы с ответами:

.NET 3.x Как вывести 10 байт после определенных байт из файла - C#
Здравствуйте. Есть к примеру файл с расширением *.bin, подскажите как реализовать вывод на экран 12 байт после определенных найденных в...

AP работает, сигнал вижу, а подключиться не могу((( - Wi-Fi
Здравствуйте. Такая ситуация... установили АР - Deliberant DLB2700 и антенну к ней - HyperLink HG2409U. по каким-то не понятный...

Лабораторная работа номер 5 задание 1! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество байт в этом файле - C++
Лабораторная работа номер 5 задание 1!!!! Открыть файл, имя которого задается с клавиатуры. Посчитать и вывести на эк-ран количество...

Установил компонент, вижу интерфейс, не вижу самого компонента - C++ Builder
Rad Studio XE5. Зарегистрировал dll Собрал tlb Импортировал компонент из длл Размещаю импортированный компонент на форму Вижу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru