wxTimer wxwidgets

0

Czy mogę użyć wxTimera, tak aby co określony czas wykonywał jakaś intrukcje?
Przykładowo w nim wpisuje kod

 if(a=5)
{ 
licz();
}

I tak żeby funkcja licz(); wykonywała się co określony czas(tak jak nastawiony timer) - oczywiscie jesli jest spelniony warunek

1

Tak, możesz użyć.

p.s. warunek masz zły.

0

tak tam akurat a ==5 powinno byc
ale kurcze jak dodaje sama funkcje, bez warunku, to powinna sie wykonywac co ten okreslony czas. Ale u mnie to nie działa;<
a funkcja jest dobra, bo jak nacisne przycisk start dodam pętle while(warunek kończący) to działa, tylko wtedy ten start jest cały czas wciśnięty dopóki się nie skończy, dlatego chciałem ten kod wrzucić do timera, a nawet jak wrzuce samo funkcje do timera nic nie robi ;<

0

Dwa pytania:

  1. uruchomiłeś ten timer w ogóle?
  2. co robi funkcja licz?
0

odpaliłem oczywiście
ta funkcja nastawia StaticText ( wczesniej zamienia z int na wxstring)

0

no to może wprost , w tym przykładowym kodzie było

 printf("\n=== Now recording!! Please speak into the microphone. ===\n"); fflush(stdout);
   while( ( err = Pa_IsStreamActive( stream ) ) == 1 )
 {
    Pa_Sleep(0);   //bylo1000 //opoznienie
    printf("index = %d\n", data.frameIndex ); 		fflush(stdout);
 }

no i chciałem sobie to przerobić aby mi to się wyświetlało w StaticTexcie
zamienilem to normalnie na wx strnig i jesli

while( ( err = Pa_IsStreamActive( stream ) ) == 1 )
 {
  mojafunckja(); 
}

no i jesli to dopisze do przycisku START no to zanim sie nie skonczy nagrywanie(elegancko działało),ale nie moge nic uzyc(np.STOP) wiec postanowilem dac to do Timera. Dałem tak i to nic nie robi

if( ( err = Pa_IsStreamActive( stream ) ) != 1 )
 {
  mojafunckja(); 
}
1

A dlaczego zmieniłeś warunek z == na !=?

0

hm bo przy while ( err = Pa_IsStreamActive( stream ) ) == 1 jest to warunek kończący tą pętle, więc jesli tak będzie to już się nie wykonuje. Więc jeśli dam
if( err = Pa_IsStreamActive( stream ) ) != 1 to będzie(powinno) się wykonywać dopóki (mówimy tu oczywiscie o kodzie w timerze, ktory jest wystartowany i wykonuje sie co okreslony czas)
( err = Pa_IsStreamActive( stream ) ) == 1

0

Proponuję, żebyś dowiedział się co robi/zwraca funkcja Pa_IsStreamActive, a później przemyślał jeszcze raz te warunki. Ok?

0

Zwraca jeden (1), gdy strumień jest aktywny , zero (0), kiedy nie gra, no ok czyli źle zmienilem,
ok daje

if( ( err = Pa_IsStreamActive( stream ) ) == 1 )
 {
  mojafunckja(); 
}

dalej nic sie nie zmienia
aaaaa

wysterczy ten kod dać do OnTimer1Trigger(wxTimerEvent& event)
a ja dawałem do Extra Code w wxTimerze

0

to mam pytanie, do czego jest pole Extra Code w Timerze? powinienem tam cokowliek wrzucać ?

1

Nie wiem, co to za pole, i nie wiem, czy musisz coś tam wrzucać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1