Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
hono
3 / 3 / 4
Регистрация: 15.11.2017
Сообщений: 83
Завершенные тесты: 1
#1

Ошибка device not open - C++ Qt

30.12.2017, 16:21. Просмотров 571. Ответов 7
Метки qt (Все метки)

При нажатии кнопки send возникает такая ошибка в выводе QIODevice::write (QTcpSocket): device not open
QIODevice::read (QTcpSocket): device not open
О каком device тут идет речь?
Сам код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void MainWindow::on_Send_clicked()
{
connectSocket = new QTcpSocket(this);
connectSocket->connectToHost("192.168.0.37", 6000);
    if(connectSocket->waitForConnected(3000))
    {
    connectSocket->write("Hello\n\n\n\n");
    QByteArray sender;
    QDataStream out(&sender, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_6);
    out<<QString(tr("1"));
    connectSocket->write(sender);
    ui->textBrowser2->setText(connectSocket->readAll());
    }
    else
    {
        ui->textBrowser->setText("Disconected!");
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2017, 16:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка device not open (C++ Qt):

Ошибка QSqlQuery::exec: database not open
Доброго времени суток. У меня есть несколько справочников, при вызове которых...

Возникает ошибка "database not open" при обращении из разных потоков
Здравствуйте, пишу приложение, база хорошо работает всё окей, в некоторых...

Ошибка: No MCI device open
unit Unit1; interface uses Winapi.Windows, Winapi.Messages,...

Ошибка No MCI device open
Добрый вечер. Третий день мучаюсь с mediaplayer, никак не хочет воспроизводить...

Выдает ошибку "No MCI Device open", в чем ошибка
Я так подозреваю, что в выборе картинок на кнопках SpeedButton. Подскажите...

MediaPlayer: ошибка "No VMC device open"
создал проигрыватель с помощью mediaplayer, загружаю песню, работает норм,...

7
peter_irich
40 / 40 / 12
Регистрация: 18.10.2017
Сообщений: 320
31.12.2017, 19:02 #2
Насколько я помню, здесь вообще всё неправильно. В частности, всякие действия по передаче данных
надо осуществлять после получения сигнала connected(), соединённом с неким слотом.
Должны быть слоты и для сигналов sisconnected() и error() .

Пётр.
0
Digital_Cry
Заблокирован
03.01.2018, 11:56 #3
Цитата Сообщение от hono Посмотреть сообщение
device not open
QIODevice::read (QTcpSocket): device not open
На какой конкретно строчке вылезает этот мессаг в дебаг? Отладчиком пройдись. Сокет-то приконективается к серверу? Вот ты пишешь что-то в сокет, а потом потом тут же пытаешься оттуда что-то прочитать...Хмм.. Для начала, после всех операций write сделай QAbstractSocket::flush(), а потом QAbstractSocket::waitForBytesWritten(), после этого, нужно по хорошему дождаться, когда оттуда можно будет что-то читать, обычно для этого используют сигнал сокета QIODevice::readyRead, но если ты хочешь всё это сделать в синхронном режиме, запускай QAbstractSocket::waitForReadyRead() и жди, когда сокет будет готов к чтению - потом читай.
0
peter_irich
40 / 40 / 12
Регистрация: 18.10.2017
Сообщений: 320
03.01.2018, 18:26 #4
Digital_Cry, Если это разовое действие, то можно и в реакции на сигнал connected(),
но правильнее, конечно, в реакции на readyRead(), это не будет вносить лишней задержки.

Пётр.
0
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
04.01.2018, 11:15 #5
Цитата Сообщение от hono Посмотреть сообщение
QIODevice::read (QTcpSocket): device not open
В приведенном коде вроде даже нету read. Этот код точно соответствует?
0
Digital_Cry
Заблокирован
04.01.2018, 13:07 #6
Цитата Сообщение от pav1uxa Посмотреть сообщение
В приведенном коде вроде даже нету read
там есть
Цитата Сообщение от hono Посмотреть сообщение
connectSocket->readAll()
0
pav1uxa
04.01.2018, 13:48
  #7

Не по теме:

Цитата Сообщение от Digital_Cry Посмотреть сообщение
там есть
виноват

0
terriblemike
27 / 27 / 9
Регистрация: 16.06.2015
Сообщений: 133
11.01.2018, 11:27 #8
Твой код работает.
Никаких ошибок не возникает.
Создал проект и поместил туда код - программа запустилась без всяких ошибок. По нажатию кнопки программа зависает положенные 3 секунды и снова возобновляет работу.

Добавлено через 1 минуту
Тьфу... я же не захожу в ветку отправки.

Добавлено через 1 час 1 минуту
Попробуй
C++ (Qt)
1
2
connectSocket->connectToHost("192.168.0.37", 6000);
connectSocket->open(QIODevice::ReadWrite);
0
11.01.2018, 11:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2018, 11:27
Привет! Вот еще темы с решениями:

No MCI Device open на XP
На компьютерах с Windows XP возникает ошибка &quot;No MCI Device&quot; при запуске любого...

No MCI device open
Мой комп моследнее время при включении выдает 2 сообшения об ошибке , &quot;No MCI...

Что означает ошибка device missing or unknow device (-24)?
Пытаюсь хотя бы считать данные с микроконтроллера через PonyProg. Выдает...

Ошибка создания Device в DirectSound. Не видит namespace Device
хочу в примитивной игрушке (сделанной не на Direct3D) добавить звуковое...


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

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

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