|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
"Rallentare" un ciclo for
Salve a tutti
mi trovo a dover escogitare un modo per rallentare l'esecuzione di un ciclo for, la cui velocità dipende (credo) dalla velocità della macchina. Sto programmando un'applicazione in Visual C++,che deve disegnare "real time" un grafico di una forma d'onda (in pratica tipo strip chart) NN sto a spiegarvi xchè (sono niubbo Pensavo a installare un timer, e rendere indipendente dalla macchina la velocità di esecuzione del for..... Esiste qualche metodo + sicuro? Idee? Aiutatemi....
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
ho creato un'applicazione "MFC Application wizard", dialog based... cmq per ora sto lavorando cn le MFC, credo di nn aver avuto molto a che fare sinora cn le API....
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Beh, in realtà tutte le funzioni che chiami sono funzioni membro delle MFC che a loro volta chiamano le api, quindi le stai usando indirettamente
Si, il timer è la soluzione giusta (perchè non dovrebbe essere sicura?), anche perchè non vedo come eseguire un loop e aggiornare il grafico contemporaneamente se non mettendo il loop in un thread. Guarda SetTimer e WM_TIMER |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
in pratica, riflettendoci un pò, installando un timer ed eseguendo un loop tramite il suddetto, nn dovrei + aver bisogno del for..... o sbaglio?
potrei creare un ciclo veloce quanto voglio tramite un timer.... è fattibile secondo te (voi)?
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
sleep (time)
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Quote:
Esempio, questo ciclo... Codice:
for (int i = 0; i<qualcosa; i++)
{
doSomething(array[i]);
}
Codice:
void OnTimer(..)
{
doSomething(array[i]);
i++;
}
Chiaramente sia "array" che "i" devono essere o globali o membri della tua classe Ultima modifica di kk3z : 20-01-2006 alle 14:47. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
grazie del consiglio....
nn potrei dichiarare la variabile i come static, e quindi locale? @fenomeno in pratica la funzione sleep provoca un ritardo..... il problema è che io vorrei che la macchina dove lavoro fosse "+ lenta", o almeno veloce quanto voglio io.... in pratica devo rendermi indipendente dalla velocità della macchina, che poi è la causa che mi ha portato a valutare questa cosa....
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
ah ho capito ... scusa ma per quale problema hai dovuto fare questo?
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
Nella prima schermata veniva costruito l'asse dei tempi in base al clock della macchina, e cioè in base a quanto veloce si disegnava il grafico. Cn macchine lente funzionava:ora invece, andando troppo veloce, si finisce la prima shermata in un tempo inferiore al secondo...... te l'ho fatta molto breve, ma + o - la cosa sta in qsti termini
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
raga, ritorno sulla questione perchè ho fatto alcune prove e altre considerazioni.
Se provo ad eseguire il ciclo for, durante quest'ultimo (e soprattutto se ripeto il ciclo for indefinitamente) nn posso + accedere ai comandi della finsestra (ovvio direte voi) Stavo pensando di programmare in modo multithread, cioè fare un thread che si occupa del plot dei dati (ad alta priorità) e l'applicazione principale gestisce i comandi tipo: FREEZE, STOP, +/- AMPL, +/- LINEA DI ZERO ecc.... fattibile?
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Ma come, non eri passato ai timer? Con il timer questo problema non c'è, dato che non blocca la gestione dei messaggi
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
se uso un ciclo fatto con timer, anche se è molto veloce (ma nn so con sicurezza QUANTO veloce), posso perdere molti campioni del segnale, visto che io nn uso un buffer per plottare (lo so,nn ditemi nulla, è barbaro come modo....) una cosa importante ho da chiederti: ma creare/gestire pià thread nella stessa apllicazione in visual c++, è possibile con le applicazioni dialog based? Ti prego, dimmi di si.....
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
riguardo la questione dei timer, credo che cmq per me nn sia possibile usarli, perchè ho provato che, se per esempio ritardo ogni iterazione for di 1msec(il minimo, credo)m, è troppo lento!
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
- WM_TIMER viene dispacciato come messaggio, ed è oltretutto un messaggio a bassa priorità (cioè viene inviato solo quando non ci sono messaggi a priorità più elevata nella coda dei messaggi). - Sebbene alla funzione SetTimer si possa passare un valore in millisecondi, non è detto che la risoluzione sia proprio del millisecondo. La documentazione dice ad esempio: "Windows 2000/XP: If uElapse is less than 10, the timeout is set to 10". Quindi WM_TIMER è inaffidabile se devi gestire temporizzazione molto precise e dell'ordine del millisecondo. Puoi provare eventualmente a vedere se ti possono essere utili i <Multimedia Timers>.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
allora.....
penso di aver risolto il problema abbassando la frequenza di campionamento della scheda DSP che mi fornisce il segnale, visto che prima avevo sovracampionato un pò troppo (10khz contro un segnale che varia con frequenza di2-3hz al max....). Ora ho scelto come frequenze possibili 800-400-200-100Hz Ora sto studiando la questione del multithread.... in pratica, in una finestra di dialogo, voglio creare un thread che si occupa del plottaggio del segnale (ciclo for) e il thread principale si occupa dei comandi utente. Sarà difficile secondo voi? Sarà problematico passare dal thread principale al thread "di lavoro" i valori aggiornati delle variabili?
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
cioè te hai un segnale che va a f0= 2hz e mi campioni a 800hz? fai un sacco di campionamente inutile.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
ah comunque se non ricordo male anche sotto vc++ ci dovrebbe essere il corrispondente timer del vb che è molto semplice.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
|
Quote:
ora sto studiando come creare un nuovo thread nell'applicazione, che si deve occupare di plottare il grafico. Hai suggerimenti/guide da darmi? GRAZIE A TUTTI!!!!
__________________
ho fatto affari con: na decina di anime |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:11.



















