wxTimer wxwidgets

wxTimer wxwidgets
ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
0

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

Kopiuj
 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

edytowany 2x, ostatnio: eryczzek
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1

Tak, możesz użyć.

p.s. warunek masz zły.

ER
to da się użyć jeśli ta funkcja nastawia StaticText ( wczesniej zamienia z int na wxstring) ?
06
No a dlaczego miałoby się nie dać?
ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
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 ;<

edytowany 1x, ostatnio: eryczzek
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0

Dwa pytania:

  1. uruchomiłeś ten timer w ogóle?
  2. co robi funkcja licz?
fasadin
trzecie czy nie lepij odpalic osobny watek do tego
06
jeśli nie ma takiej konieczności, wątków lepiej nie tykać.
fasadin
jezeli funkcja robi zupelnie cos innego i nie sa potrzebne dane w zadnym miejscu w programie. To czemu nie?
06
Dlatego, że używanie wątków tylko po to, żeby ich używać, na zasadzie "bo mogę", jest bez sensu. Zresztą licz gmera w GUI, zatem wątki odpadają.
fasadin
tego nie wiedzialem zanim pisalem komentarz (autor napisal dopiero po komentarzu)
ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
0

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

edytowany 1x, ostatnio: eryczzek
ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
0

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

Kopiuj
 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

Kopiuj
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

Kopiuj
if( ( err = Pa_IsStreamActive( stream ) ) != 1 )
 {
  mojafunckja(); 
}
edytowany 1x, ostatnio: eryczzek
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1

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

ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
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

edytowany 4x, ostatnio: eryczzek
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0

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

ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
0

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

Kopiuj
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

edytowany 1x, ostatnio: eryczzek
ER
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 7 lat
  • Postów:168
0

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

06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.