Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2006, 11: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, 11: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, 12: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, 13: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, 14: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, 14: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: 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14: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 14:47.
kk3z è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15: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, 15: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: 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 16: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, 10: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, 11: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, 13: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, 13: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, 13: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, 14: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, 16: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, 17: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: 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2006, 21: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: 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2006, 09: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 Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
Ufficiale: Amazon taglia 14.000 posti di...
Firefox verso la trasparenza totale: i n...
Final Fantasy 7 Remake Part 3: arrivano ...
Elon Musk vuole 1.000 miliardi: il consi...
Il pixel più piccolo al mondo: un...
Windows 11: le 5 opzioni che Microsoft n...
Cuffie wireless PlayStation PULSE Elite ...
Un milione di utenti mostra disagio su C...
Un datacenter sottomarino alimentato da ...
iOS 26.1: è in arrivo il backup a...
Xbox Next Gen, non chiamatela console: s...
.Next On Tour Italia: innovazione, sempl...
PS Plus novembre: svelato in anticipo il...
'Gli elettroni sono il nuovo petrolio': ...
Amazon freme, non ce la fa ad aspettare ...
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: 14:11.


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