crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Помогите разобраться c передачей данных по сети!, создание двух потоков
PVGDRK
  опции профиля:
сообщение 25.9.2010, 18:19
Сообщение #11


Студент
*

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

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




Репутация:   0  


Не , в выходные не получится - нет сети дома, да и компа того нет, он специфический, да и данные тоже специфические :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_xls_*_*
сообщение 27.9.2010, 9:43
Сообщение #12





Гости








    


Почитайте http://doc.qt.nokia.com/qq/qq27-responsive-guis.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 27.9.2010, 10:15
Сообщение #13


Студент
*

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

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




Репутация:   0  


Mercie beaucoup :) ( Большое спасибо ) Заодно и английский подучу :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.9.2010, 10:42
Сообщение #14


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(PVGDRK @ 27.9.2010, 13:15) *
Заодно и английский подучу

и это правильно )))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 30.9.2010, 15:35
Сообщение #15


Студент
*

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

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




Репутация:   0  


Простите меня бестолковую, пожалуйста, помогите понять что к чему (я еще и сам С++ практически не знаю) :unsure:
Написала так как Вы тут привели в примере - на место фразы "код,исполняемый в потоке" вставляю свой код с переменными из класса СMyClass - компилятор ругается пишет типа неизвестная переменная...
Не могли бы Вы мне помочь понять что к чему?
Что означает запись в Вашем примере,
MyThread(CMyClass* m_pDataKeeper=0):m_pDataKeeper(m_pDataKeeper)
   {
   }

 if(m_pDataKeeper)
        {
              m_pDataKeeper->....;  
         }

строчка m_pDataKeeper->...служит для того, чтобы обратиться к какому либо элементу моего базового класса CMyClass? при вводе знака -> выскакивает список методов (не знаю как правильно назвать) но там максимум присутсвуют только описанные в классе CMyClass функции но не переменные...
как работает эта конструкция if(m_pDataKeeper)? Каким образом из основного потока в классе CMyClass попадаем в это место?
что происходит при написании строки m_pDataKeeper->....; и что пишется после знака ->?

и еще я не совсем понимаю что где писать :unsure:

CMyClass - это мой класс, где хранятся мои переменные массивы данных и функции и используются сигналы и слоты. Этот класс является базовым и все что там выполняется - это выполняется в основном потоке? Я правильно понимаю?
Этот класс имеет три проектных файла в которых я что то делала:
CMyClass.ui - форма, куда помещаются различные виджеты
CMyClass.h - где содержится описание класcа , прототипы функций и некотороые переменные
и файл CMyClass.сср - где иммется конструктор класса, деструктор, и уже пишется сам код программы.
Если создавать класс QThread - нужно ли создавать для его описания отдельные h и cpp файлы ?
Почему приведенный Вами код нормально скомпилировался, если его разместить в файле CMyClass.cpp в самом конце (только если не писать свой код с исползованием переменных из класса CMyClass ) и почему то ничего не получилось, если я пыталась сделать для класса QThread свои h и cpp файлы в инклюдах вроде везде все что нужно написала ...
Благодарю за помощь в познании
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.10.2010, 6:27
Сообщение #16


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(PVGDRK @ 30.9.2010, 18:35) *
Простите меня бестолковую

для начала - прекрати себя бестолковой считать!

Цитата(PVGDRK @ 30.9.2010, 18:35) *
вставляю свой код с переменными из класса СMyClass - компилятор ругается пишет типа неизвестная переменная...

покажи код то :)

Цитата(PVGDRK @ 30.9.2010, 18:35) *
Что означает запись в Вашем примере,
MyThread(CMyClass* m_pDataKeeper=0):m_pDataKeeper(m_pDataKeeper)
{
}

после двоеточия - список инициализаторов членов класса. В данном случае список состоит из одного элемента - m_pDataKeeper, в его конструктор передаётся параметр, переданный через кенструктор класса MyThread

я просто назвал параметр так же, как и член класса, тут я был неправ в плане наглядности. Вот так будет понятнее:
MyThread(CMyClass* pDK=0):m_pDataKeeper(pDK)
{
}


Цитата(PVGDRK @ 30.9.2010, 18:35) *
строчка m_pDataKeeper->...служит для того, чтобы обратиться к какому либо элементу моего базового класса CMyClass?


опкратор "->" позволяет обратиться к члену экземпляра (или функции) класса по указателю на экземпляр

Цитата(PVGDRK @ 30.9.2010, 18:35) *
CMyClass - это мой класс, где хранятся мои переменные массивы данных и функции и используются сигналы и слоты. Этот класс является базовым и все что там выполняется - это выполняется в основном потоке? Я правильно понимаю?

вообще-то, он не обязательно базовый (базовым классом называют класс-предок)

Точнее сказать: экземпляр класса CMyClass создан в основном потоке. И по совместительству, как понимаю, этот класс у тебя - класс главного окна ?

Сообщение отредактировал Алексей1153 - 1.10.2010, 6:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 1.10.2010, 11:59
Сообщение #17


Студент
*

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

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




Репутация:   0  


Цитата
Точнее сказать: экземпляр класса CMyClass создан в основном потоке. И по совместительству, как понимаю, этот класс у тебя - класс главного окна ?

Да так и есть. только у меня в программе он называется не CMyClass а Generator, но суть от этого не меняется...
Итак, сам код: файл generator.cpp
extern "C" __declspec (dllimport) int Create30000000(WaveformDataReal **bS); //  Функции написанные в DLL файле
extern "C" __declspec (dllimport) int Add30000000(FILE *fin,float freq, float SNR);

Generator::Generator(QWidget *parent, Qt::WFlags flags)   // Конструктор
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
    createFilesTable();
    Disable();
}
Generator::~Generator()                                    // Деструктор
{
    CloseAWG();
}
//Далее идут  функции  и обработчики соединения сигнал слот
.......
//Один  из них:

void Generator::on_pushButton_5_clicked()
{
     int t=0;
     int n=0;
     int p=0;
     int x1,x2,y1,y2;
     QString str_filename;
     QString str_txt;
     QByteArray ar;
     char* datatext;
     char str[128];
     WaveformDataReal *bS; //  bS - это  тот  массив,который находится в оперативной памяти
     float freq, SNR;
     FILE *F_1;
     bool ok;
     float Value=0;
,,,,,,
// Далее как я понимаю  идет  функция формирования этого  массива путем обращения к
// Create30000000(&bS) и Add30000000(F_1, freq, SNR)
// Далее данные из  сформированного  массива можно либо отправить  по  сети, либо  сохранить  в файл...
// Я пока пытаюсь  в потоке QThread выполнить  сохранение в файл  поэтому  вот  этот  код вставляю  в потоке QThread

if(ui.checkBox_File->checkState()==Qt::Checked)   // Запись  в файл
        {
            if(pPBar!=NULL) pPBar->setWindowTitle(tr("Write file"));

            FILE *F_2;
            str_txt = ui.lineEdit_NameF->text();
            ar = str_txt.toAscii();
            datatext=ar.data();
            F_2=fopen(datatext,"wb");
            for(int j=0;j<100;j++)
            {
                fwrite((bS+j*300000),sizeof(WaveformDataReal),300000,F_2);
                if(pPBar!=NULL)    pPBar->setValue(j);
                Sleep(10);
            }
            fclose(F_2);
        }
}
//Далее пишу

class MyThread:public QThread
{
    Generator*m_pData;
    
public:
    MyThread(Generator*m_pData=0):m_pData(m_pData) // Здесь  очевидно  ошибка из-за моего непонимания m_pData - указатель н а мой класс  или какая то переменная или функция из  класса Generator?
    {
    }
    void run()           //Если в этой функции  не писать  ниже приведенный код - то  все компилируется,  а скодом ругается на переменные что они не определены ...  а как правильно  все это  пишется я не знаю
    {
        if(m_pData)
        {
            m_pData-> // здесь не совсем поняла,что нужно писать поэтому ничего не писала
        }

        if(ui.checkBox_File->checkState()==Qt::Checked)   // Запись  в файл
        {
            if(pPBar!=NULL) pPBar->setWindowTitle(tr("Write file"));
            
            FILE *F_2;
            str_txt = ui.lineEdit_NameF->text();
            ar = str_txt.toAscii();
            datatext=ar.data();
            F_2=fopen(datatext,"wb");
            for(int j=0;j<100;j++)
            {
                fwrite((bS+j*300000),sizeof(WaveformDataReal),300000,F_2);
                if(pPBar!=NULL)    pPBar->setValue(j);
                Sleep(10);
            }
            fclose(F_2);
        }
        }

Вот примерно так....
Подскажите,пожалуйста, как правильно написать :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.10.2010, 12:08
Сообщение #18


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


а где у тебя экземпляр MyThread создаётся ?

по меньшей мере к ui доступ будет так

m_pData->ui
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PVGDRK
  опции профиля:
сообщение 1.10.2010, 12:36
Сообщение #19


Студент
*

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

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




Репутация:   0  


Да к ui доступ есть псоле записи ui. выпадает список всего того. что размещено у меня на форме и есть еще какието setupUi b retranslateUi....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.10.2010, 12:38
Сообщение #20


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


PVGDRK, так, стоп! "какие-то" - это именно принадлежащие ui.

Всё-таки, ответь на вопрос
Цитата(Алексей1153 @ 1.10.2010, 15:08) *
а где у тебя экземпляр MyThread создаётся ?


по идее, это должно происходить в конструкторе твоего Generator
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 28.4.2024, 22:11