Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2006, 10:38   #1
swarm
Senior Member
 
L'Avatar di swarm
 
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 ), devo disegnare un pixel alla volta di sta forma d'onda, e devo correlare la forma d'onda a un asse dei tempi....

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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 10:45   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da swarm
Sto programmando un'applicazione in Visual C++,che deve disegnare "real time" un grafico di una forma d'onda (in pratica tipo strip chart)
Stai lavorando con le MFC o solo con le API Win32??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 11:38   #3
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da andbin
Stai lavorando con le MFC o solo con le API Win32??
perdonami, ti rispondo in modo "grezzo"

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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:24   #4
kk3z
Senior Member
 
L'Avatar di kk3z
 
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
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:05   #5
swarm
Senior Member
 
L'Avatar di swarm
 
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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:39   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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: 8897
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:45   #7
kk3z
Senior Member
 
L'Avatar di kk3z
 
Iscritto dal: Nov 2003
Messaggi: 980
Quote:
Originariamente inviato da swarm
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)?
Si, esatto. Devi solo mantenere un index che aggiorni manualmente a ogni WM_TIMER, invece che farlo fare al loop

Esempio, questo ciclo...
Codice:
for (int i = 0; i<qualcosa; i++)
{
   doSomething(array[i]);
}
diventa...
Codice:
void OnTimer(..)
{
   doSomething(array[i]);
   i++;
}
...senza aver problemi di hang della tua applicazione.
Chiaramente sia "array" che "i" devono essere o globali o membri della tua classe

Ultima modifica di kk3z : 20-01-2006 alle 13:47.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:02   #8
swarm
Senior Member
 
L'Avatar di swarm
 
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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:21   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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: 8897
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15:04   #10
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da Fenomeno85
ah ho capito ... scusa ma per quale problema hai dovuto fare questo?

~§~ Sempre E Solo Lei ~§~
in breve, in un vecchio programma, il "plottaggio" del grafico era fatto tramite un ciclo for che disegnava in pratica un pixel per volta.
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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 09:07   #11
swarm
Senior Member
 
L'Avatar di swarm
 
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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 10:24   #12
kk3z
Senior Member
 
L'Avatar di kk3z
 
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
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 12:11   #13
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da kk3z
Ma come, non eri passato ai timer? Con il timer questo problema non c'è, dato che non blocca la gestione dei messaggi
lo so, ma ti spiego perchè sto valutando sta soluzione

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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 12:29   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da swarm
ma creare/gestire pià thread nella stessa apllicazione in visual c++, è possibile con le applicazioni dialog based?

Ti prego, dimmi di si.....
Sì, è tranquillamente possibile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 12:39   #15
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da andbin
Sì, è tranquillamente possibile.
grazie

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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 13:05   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da swarm
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!
Se hai provato (come penso) la gestione dei timer tramite il messaggio WM_TIMER, sappi alcune cose:
- 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%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 15:03   #17
swarm
Senior Member
 
L'Avatar di swarm
 
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
swarm è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 16:59   #18
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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: 8897
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 20:31   #19
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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: 8897
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 08:29   #20
swarm
Senior Member
 
L'Avatar di swarm
 
Iscritto dal: Jan 2003
Città: Castellammare di Stabia (NA)
Messaggi: 2031
Quote:
Originariamente inviato da Fenomeno85
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 ~§~
si, in pratica faccio questo per nn perdere campioni importanti e per simulare in modo pezzotto un real-time....

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
swarm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
6000 mAh, 5G e 108MP a meno di 200€: ecc...
FRITZ!Mesh Set 2700: Wi-Fi 7 in tutta la...
Amazfit Cheetah 2 Pro: lo smartwatch per...
Intel, focus su GPU workstation e datace...
Addio definitivo a iOS 26.4, Apple blocc...
EPYC di nuova generazione: AMD supporter...
AMD, Arm e Qualcomm scommettono su Wayve...
Intel potrebbe estendere la vita del soc...
Windows, gli aggiornamenti di aprile for...
Addio cavi perimetrali: il robot tosaerb...
Google Pixel 10 oggi proposto a soli 549...
I robot di Boston Dynamics possono inter...
Tech, gadget e accessori a meno di 5€ su...
Ford riorganizza la divisione elettrica:...
Elon Musk trasforma xAI in fornitore di ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v