Awaryjne forum Automatyków i Robotyków
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
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 09:31:21)
Offline
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