crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как сделать удаленную отладочную консоль?, Связать qInstallMsgHandler, QIODevice, QTextStream
reeshkov
  опции профиля:
сообщение 18.9.2015, 10:28
Сообщение #1


Новичок


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

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




Репутация:   0  


Я переопределил вывод в стандартный поток и т.к. программа будет запускаться на удаленном устройстве, то хочу чтоб к устройству можно было подключиться телнетом или нк и посмотреть отладочный вывод, хочу это сделать примерно таким образом:
#include <QCoreApplication>
#include <QDebug>
#include <QDateTime>
#include <QTimer>


//#define REMOTE

QTextStream *out;

void logOutput(QtMsgType type, const char *msg)
{
    QString debugdate = QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz");
    *out << debugdate << " " << type << msg << endl;
}

int main(int argc, char *argv[])
{
    int i;
    QCoreApplication a(argc, argv);
#ifndef REMOTE
    QTextStream console(stdout);
#else
    QIODevice *remote = new MyDevice();
    QTextStream console(remote);

#endif
    out = &console;

    qInstallMsgHandler(logOutput);
    for(i=0;i<10;i++){
        qDebug() << i;
    }

//    QTimer *timer = new QTimer();
//    a.connect(timer, SIGNAL(timeout()), &a, SLOT(quit()));
//    timer->start(1000);

    a.exec();
    return 0;
}

Помогите написать класс "MyDevice", он должен запускаться в отдельном потоке чтоб не блокировалась работа основоного приложения, ждать соединения на TCP порту, если соединение существует то закрывать старое, и в сокет соединеия, если оно существует писать отладочный вывод.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
terrible
  опции профиля:
сообщение 4.10.2015, 13:44
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 16.10.2007
Пользователь №: 13

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




Репутация:   0  


А в чем проблема, почитай как работать с потоками (QThread) и дерзай!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
reeshkov
  опции профиля:
сообщение 6.10.2015, 12:48
Сообщение #3


Новичок


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

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




Репутация:   0  


Проблема была в том что непонятно было как сделать так чтоб с ТСР сервером и соотв сокетом можно было работать как с IODevice. Оказалось что надо унаследовать QIODevice, определить нужные виртуальные методы и запустить все это дело в потоке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
terrible
  опции профиля:
сообщение 6.10.2015, 12:54
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 16.10.2007
Пользователь №: 13

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




Репутация:   0  


Извини, не сразу тебя понял.

Так QTcpSocket производен от QAbstractSocket, который производен от QIODevice.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.1.2021, 18:09