Newsgroup: it.comp.programmare
Titolo: Aiutate un ignorante

Salve premesso che l'ultima volta che ho toccato una riga di programmazione
il linguaggio più usato era il turbopascal.
Quindi veniamo al problema ho 6 faretti a led di colore diverso vorrei
realizzare una programma (in non so che linguaggio) che semplicemente
cliccando sul pulante di un colore si accenda il faretto del colore
corrispondente. Posso usare usb parallela o seriale indistintamente.
ciao e grazie.

"miZio" <fed...@NOSPAMlibero.it> wrote in
news:46039b4d$0$37202$
4faf...@reader3.news.tin.it
: 

Se ti interessa una soluzione abbastanza semplice sia dal punto di 
vista hardware che da quello software, dai un'occhiata ad Arduino:
www.arduino.cc
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

"miZio" <fed...@NOSPAMlibero.it> wrote in message
news:46039b4d$0$37202$
4faf...@reader3.news.tin.it

Questa periferica a faretti avra' delle specifiche di protocollo,
suppongo, se puo' essere pilotata via parallela/seriale/usb.
E i pulsanti colorati dove si trovano?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 E i pulsanti colorati dove si trovano?
a video.

 a video.
Ah, ecco. Adesso ho capito.
L'interfaccia e' da costruire.
La costruzione della stessa esula dalle mie conoscenze.
Pero' ipotizzando che esista gia' suppongo che possa funzionare inviando
alla porta a cui e' connessa al PC, un dato.
Poi la decodifica del dato e la successiva accensione della lampadina
sara' demandata alla circuiteria della tua scheda.
Dal punto di vista della programmazione lato PC occorre sapere che dato
inviare alla porta e poi il disegno di una banalissima interfaccia che
in risposta ad un evento (click del mouse su un bottone) invii alla
porta un dato corrispondente alla lampadina desiderata.
Mi pare che la cosa complessa di questo progetto sia la parte hardware e
il driver di comunicazione con essa, non l'interfaccia utente.



Per quanto riguarda l'hardware la cosa più semplice credo sia di usare la 
porta parallela (sempre che non si debbano comandare i faretti a distanza, 
ad esempio i faretti sono sul soffitto?) e far pilotare direttamente e 
brutalmente ad ogni bit della porta un faretto cosi da dare la possibilità 
all'utente di accendere uno o più faretti contemporaneamente in base alla 
combinazione dei bit all'uscita della porta. Detto questo la parte hardware 
so conclude nel semplice accoppiamento segnali e alimentazione dei faretti. 
Poi siccome passavo di qui per sbaglio non so che dirti per la parte 
software come agire, ma credo che dovrai semplicemente creare un drive che 
piloti la porta in base al pulsante cliccato a video, ma non so 
assolutamente come aiutarti da questo punto di vista. 

 assolutamente come aiutarti da questo punto di vista.
Anche io pensavo ad una soluzione del genere,ma come risolvo la parte
software?


Prima devi chiarire l'ambiente che intendi usare: ad esempio, se vai usi
Linux o DOS è abbstanza semplice pilotare la parallela, se scegli
Windows da NT in poi l'hardware è virtualizzato e la questione si
complica assai.
Comunque, in un PC base (se dopo tanti anni non ricordo male) la
questione si risolve impostando alcuni byte in una "finta" locazione di
memoria (che in realtà corrisponde alla periferica). Quindi va bene
qualunque linguaggio che ti permetta di scrivere un byte in una
locazione specifica (es. 378h per la LPT1); il C è sicuramente il più
indicato, ma va bene anche il Pascal e altri linguaggi con puntatori. No
invece Java, Python, ecc... a meno di accrocchi.
Tutto quel che ti serve lo puoi trovare qui:
 
http://www.epanorama.net/circuits/parallel_output.html
o qui:
 
http://www.beyondlogic.org/spp/parallel.htm
Per pilotare i faretti devi poi construirti un'interfaccia di potenza
con dei FET o dei relè (ma di questo so poco).
Ciao.

 complica assai.
Beh non č che si complichi poi molto, certo non č piů possibile 
accedere direttamente alla memoria (salvo utilizzare i noti 
driver), ma tramite API si puň pilotare la parallela ed č 
sicuramente il metodo piů corretto.
Detto questo, io consiglierei comunque un collegamento seriale. 
Mi pare una soluzione piů robusta, espandibile e dal punto di 
vista hardware si tratta di aggiungere un integrato o poco piů.
-- 
Stefano Frosio
www.esse-effe.com

"Stefano Frosio" <stefanofros...@GRAZIEgmail.com> ha scritto nel
messaggio news:4606a7ce$0$36447$4faf...@reader5.news.tin.it...

allora ecco quello che ho:
 ho un pc di 3 mesi di vita con xp, vorrei scrivere in visual basic, e
vorrei sapere la possibile alternativa sulla seriale.
grazie

 vorrei sapere la possibile alternativa sulla seriale.
Ho parlato di interfaccia seriale (non necessariamente 232) per 
un discorso di robustezza e possibilità di espandere la 
soluzione. Puoi cercare eventualmente dei convertitori 
seriale-parallelo, penso ce ne siano anche di già pronti, a 
parte farsi una scheda apposita con relativi integrati. Chiaro 
che la soluzione tramite porta parallela è più diretta.
Ciao,
-- 
Stefano Frosio
www.esse-effe.com


In visual basic puoi scriverci l'intefaccia.
Ovvero una cosa del tipo
sub Button1_Click()
	InviaAllaSchedaIlValore 4  'Dove 4 accende la luce n.4
end Sub
E' la procedura InviaAllaSchedaIlValore che non puo' essere fatta in 
visual basic ma deve essere un codice a livello molto piu' basso, e che 
dovrai infilare per esempio in una dll, per poi chiamarla da Visual Basic.
A meno che non esista qualche oggetto gia' pronto, tipo un ocx o cose 
del genere, che abbia dei metodi e delle proprieta' che incapsulano la 
porta seriale o parallela e che facciano le veci della procedura di cui 
sopra.

 poi chiamarla da Visual Basic.
Io non credo. Chiaro dipende dai dettagli, ma se utilizzasse la 
parallela può importare la definizione delle API necessarie e 
farlo anche da VB. Non servono chissà quali performance in 
questo caso.
-- 
Stefano Frosio
www.esse-effe.com

dovrai infilare per esempio in una dll, per poi chiamarla da Visual Basic.
A questo punto, buttiamo via VB (bleah) e usiamo Delphi ;-)

> A questo punto, buttiamo via VB (bleah) e usiamo Delphi ;-)
vabbeh usiamo quello che vi pare io so solo costruire uninterfaccia di
potenza che prende iningresso l'uscita della parallela e mi pilota con essa
i faretti. Il dato da inviare alla parallela non deve far altro che
accendere i faretti singolarmente o in varie combinazioni. Certo non sarebbe
male poterne regolare l'intensità, ma questo posso farlo anche manualmente.
Quindi come procediamo?

 Quindi come procediamo?
Quanto mi dai? :-P
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 invece Java, Python, ecc... a meno di accrocchi.
Accrocchi (e per di più portabili) per Python:
http://pyserial.sourceforge.net/
http://pyserial.sourceforge.net/pyparallel.html
Però a ben pensarci, visto che l'altro giorno con una manciata di
righe a lavoro ho comandato un PLC, non mi sentirei di definirli più
di tanto accrocchi...

 di tanto accrocchi...
Hai ragione; intendevo dire che non si puň realizzare direttamente nel
linguaggio ma devi usare qualche funzione da scrivere comunque in C.
Ciao.

miZio ha scritto:

Fai un tentativo che non so se sotto windows possa funzionare.
Funzionava ai tempi del DOS.
Apri una finestra con l'interprete dei comandi (cmd) e digita
ECHO A > LPT1:
Se alla parallela e' connesso qualcosa che tiene alto il segnale di 
Ready, dovresti in questo modo inviare alla parallela il valore 41H
che consiste di un paio di bit alzati.
Se il tuo circuito riesce a leggere questi due bit, siamo a cavallo.
Nel senso che lato computer puoi inviare quello che ti pare e c'e' solo 
da costruire una interfaccia bella intorno.
Se non dovesse funzionare pero', potrebbe molto probabilmente dipendere 
dal sistema operativo che impedisce di inviare segnali direttamente alla 
parallela.
In alternativa potresti provare a lanciare la macchina con una live di 
linux da CD-ROM cosi' ti levi dalle balle windows e ti garantisci di 
poter colloquiare con la parallela senza che il sistema operativo ti 
metta i bastoni tra le ruote
e fai la stessa cosa di cui sopra ma con una sintassi leggermente diversa
echo A > /dev/lp0
Nel momento in cui la tua scheda legge il segnale, poi pensiamo a 
costruire l'interfaccia che, se non funzionasse il
ECHO A > LPT1:
e' necessario dotarsi di un ambiente di sviluppo che disponga delle 
primitive per pilotare la parallela