Awaryjne forum AiR

Awaryjne forum Automatyków i Robotyków

#1 2010-06-12 10:18:17

dinozaur

Światłolub

Zarejestrowany: 2010-06-08
Posty: 8
Punktów :   

qt

Hej!

Czy naprowadzi mnie ktoś na sprytne rozwiązanie mojego prostego problemu?
problem dotyczy qt i odpalenia w nim progamu napisanego w c i gnuplota z wybranym skryptem

np żyby odpalało mi ./a.out -p
a potem gnuplot 'sfera.gp'
po wybraniu odpowiedniej kombinacji radiobuttonów ?

dziękuje za wskazówki
pozdrawiam

Offline

 

#2 2010-06-12 10:45:40

Pikuś

Linefollower

Zarejestrowany: 2010-06-07
Posty: 19
Punktów :   

Re: qt

Klasa QProcess pozwala na odpalanie i kontrolowanie zewnętrznych programów, nigdy jej nie używałem, więc będziesz musiał obadać dokumentację tej klasy.

Ostatnio edytowany przez Pikuś (2010-06-12 10:46:15)

Offline

 

#3 2010-06-13 11:29:40

skoku

Światłolub

Zarejestrowany: 2010-06-07
Posty: 5
Punktów :   

Re: qt

klasa:

class stage_thread : public QThread
{
    Q_OBJECT
public:
    stage_thread(QObject *parent=0);
    ~stage_thread();
        QProcess proces;

    void run_player();
        void kill();
        void run_driver();
};

metoda uruchamiająca jakiś proces:

void stage_thread::run_player(){
        proces.start("robot-player cave_gps.cfg");

}

A tak się go zabija:

void stage_thread::kill() {
    char napis[20];

    sprintf(napis, "kill %d", proces.pid() );
    system(napis);
}

U mnie działa i spisuje się dobrze. Powodzenia.

Ostatnio edytowany przez skoku (2010-06-13 11:31:21)

Offline

 

#4 2010-06-14 10:05:40

dinozaur

Światłolub

Zarejestrowany: 2010-06-08
Posty: 8
Punktów :   

Re: qt

wow dzięki Skoku!
ja trochę gorzej to zrobiłem, bo tylko posługując się poleceniem system();
dziękuje za pomoc:)

Offline

 

#5 2010-06-15 12:26:13

HoMeR

Światłolub

Zarejestrowany: 2010-06-07
Posty: 8
Punktów :   

Re: qt

mała uwaga:
żeby to działało jako wątek programu (co jeżeli się tylko uruchamia osobny, zewnętrzny  program, nie ma większego znaczenia chyba, bo zacznie działać jako watek systemowy), należy redefiniować metodę run()

  class MyThread : public QThread {

    public:

        virtual void run();

    };

    void MyThread::run()
    {
        for( int count = 0; count < 20; count++ ) {
            sleep( 1 );
            qDebug( "Ping!" );
        }
    }

    int main()
    {
        MyThread a;
        MyThread b;
        a.start();
        b.start();
        a.wait();
        b.wait();
    }

wtedy dziala to jako wątek programu.

Jeżeli chesz tylko odpalić jakiś zewnętrzny program, to nie trzeba wcale robić klasy Qthread

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
mfd golf IV jakie glosniki nagłówki w pracy mgr wargamer wroclaw bov w tdi menager biegów narciarskich