Newsgroup: it.comp.lang.visual-basic
Titolo: Gestire 3 "task" separati

Ciao a tutti.
Ho un bel problema che la mia infima esperienza di programmatore della
domenica non riesce a risolvere, e così chiedo aiuto a voi. Ho bisogno di
mandare su tre pin della porta parallela tre clock diversi. So già come
accedere alla parallela e so già come ottenere dei valori relativamente
pecisi di delay (tramite il Performance Counter), quindi non ho problemi a
dare un clock per volta (ho provato e funziona benone). Ora però ho
necessità di darli simultaneamente. Per capirci negli stessi 10 secondi devo
dare 100 colpi di clock al pin 1, 25 al pin 2 e 77 al pin 3 (tutto questo
per fare un esempio). In realtà le temporizzazioni esatte non mi interessano
più di tanto, diciamo che se il clock 1 esaurisce i suoi "battiti" qualche
millisecondo prima degli altri non importa.
Se fossero stati dei clock (molto) più lenti avrei impostato 3 timer e
introdotto un valore adeguato nel campo "interval".
Spero di essermi fatto capire, se qualcuno ora può darmi una mano...
Olivier.


da collega sfigato della domenica, e premesso che non ho ancora provato a
pilotare la parallela mi è venuta questa idea, ovvero:
Usa cmq tre timer che invece di operare direttamente sulla porta, lavorino
su di una parola in binario che rappresenti le uscite della porta stessa.
I tre timer lavoreranno sempre su bit diversi e se arbitri bene la sequenza
non avrai conflitti.
Ad ogni modifica della suddetta parola binaria, fai aggionare l'uscita della
porta.
Concettualmente l'idea mi sembra semplice, non so se realizzarla sarà la
stessa cosa, cmq a te la sfida!
Ciao ciao

 porta.
Ciao e grazie per la risposta.
Il fatto è che non posso usare i timer proprio perchè le temporizzazioni che
forniscono sono troppo imprecise. Ho cercato apposta una routine di delay
che fa uso del Performance Counter per avere la precisione sufficiente.
L'idea più brutale che mi viene in mente ora è quella di creare 3 eseguibili
ognuno per clock che lancierò da un programma principale, demandando il
compito di multitaskare tutto al sistema operativo (win2k).
Olivier.

Per il multitasking prova a cercare sul sito
http://www.vb2themax.com/
di Balena. Credo che ci sia qualcosa in proposito.
Ricky
"Olivier" <ilgalla@MAPS_ONlibero.it> ha scritto nel messaggio
news:L1Uqb.101167$e6.36...@twister2.libero.it...


 domenica non riesce a risolvere, e cosě chiedo aiuto a voi. [..]
Ho risolto tutto (anche se in modo piuttosto volgare): tre eseguibili
indipendenti che vengono lanciati contemporaneamente da un programma
principale, poi a multitaskare il tutto ci pensa l'OS.
Olivier.

 principale, poi a multitaskare il tutto ci pensa l'OS.
bhe potresti cercare di sgrezzare il programma in questo modo :
in ogni eseguibile metti un check sulla presenza degli altri 2 3ad , quando
tutti e 3 gli eseguibili sanno che sono lanciati tutti e 3, allora
temporizzi la partenza dei clock in base all'orologio di sistema, cosi sei
sicuro che oltre a lanciarli assieme, partiranno anche assieme !
il lancio di 3exe potrebbe cmq provocare ritardi diversi da momento a
momento e da exe ad exe ( praticamente richi che il primo e il secondo
partano assieme e il 3° resti un po indietro perche' la ram o la cpu sono
impegnati in altro !
-- 
<Gigio2K>
--- 
www.g2kweb.it
 ---
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 impegnati in altro !
Ciao, grazie dell'ottimo consiglio. Non hai un'idea di quanto possano essere
qusti ritardi? La richiesta del processore non è eccessiva per ogni
eseguibile. Il tempo di calcolo è usato in pratica solo per la routine di
delay, che però ha un Do Events ad ogni ciclo. Per ora ho provato solo con
due e non sembra dare grossi ritardi nel caricamento degli eseguibili.
Olivier.

 degli eseguibili.
purtroppo di roba a basso livello ne capisco 0, sicuro non sia meglio
procedere con delle dll fatte in c a cui accedi con un interfaccia in vb ?
i dati non li so, cmq credo che una volta caricati i 3 exe e averli in
memoria farli partire contemporaneamente dovresti avere piccoli ritardi,
sempre minori rispetto al lanciarli e farli partire !


 procedere con delle dll fatte in c a cui accedi con un interfaccia in vb ?
Questa è un'ottima idea alla quale non avevo nemmeno pensato!
Peccato che non abbia la più pallida idea di come scrivere una dll e
menchemeno di come scriverla in C++!
Olivier.