wxTimer wxwidgets

Odpowiedz Nowy wątek
2015-02-18 03:27
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

edytowany 2x, ostatnio: eryczzek, 2015-02-18 03:28

Pozostało 580 znaków

2015-02-18 09:09
1

Tak, możesz użyć.

p.s. warunek masz zły.

to da się użyć jeśli ta funkcja nastawia StaticText ( wczesniej zamienia z int na wxstring) ? - eryczzek 2015-02-19 13:15
No a dlaczego miałoby się nie dać? - _0x666_ 2015-02-19 13:38

Pozostało 580 znaków

2015-02-18 11:23
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, 2015-02-18 11:29

Pozostało 580 znaków

2015-02-18 11:49
0

Dwa pytania:

  1. uruchomiłeś ten timer w ogóle?
  2. co robi funkcja licz?
trzecie czy nie lepij odpalic osobny watek do tego - fasadin 2015-02-18 11:51
jeśli nie ma takiej konieczności, wątków lepiej nie tykać. - _0x666_ 2015-02-18 11:53
jezeli funkcja robi zupelnie cos innego i nie sa potrzebne dane w zadnym miejscu w programie. To czemu nie? - fasadin 2015-02-18 11:55
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ą. - _0x666_ 2015-02-18 12:11
tego nie wiedzialem zanim pisalem komentarz (autor napisal dopiero po komentarzu) - fasadin 2015-02-18 12:22

Pozostało 580 znaków

2015-02-18 12:04
0

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

edytowany 1x, ostatnio: eryczzek, 2015-02-18 12:05

Pozostało 580 znaków

2015-02-19 14:09
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(); 
}
edytowany 1x, ostatnio: eryczzek, 2015-02-19 14:11

Pozostało 580 znaków

2015-02-19 14:21

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

Pozostało 580 znaków

2015-02-19 14:24
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, 2015-02-19 14:29

Pozostało 580 znaków

2015-02-19 14:46
0

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

Pozostało 580 znaków

2015-02-19 16:16
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

edytowany 1x, ostatnio: eryczzek, 2015-02-19 16:21

Pozostało 580 znaków

2015-02-19 16:50
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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