Questa pagina l'ho scritta molto tempo fa e contiene materiale obsoleto
L'uso è sconsigliato e non posso più fornire alcun supporto
VVIO.dll è una libreria dinamica per macchine Windows destinata a facilitare il supporto di vari dispositivi hardware, permettendo la scrittura di programmi in qualunque linguaggio che supporti DLL a 32 bit, inclusi quelli che, come Microsoft Visual Basic e Borland Delphi non hanno istruzioni di ingresso / uscita.
Questa pagina è parte del progetto VVIO: una libreria per l'I/O
I destinatari di questo software sono sostanzialmente appartenenti a due categorie:
Il funzionamento è possibile in due modalità profondamente differenti, una adatta per tutti i sistemi Windows ed una specifica per i sistemi operativi Microsoft derivati da WinNT, fino a WindowsXP. Le funzionalità e l'interfaccia verso il codice ad alto livello rimangono comunque identici.
Windows (tutte le versioni)
Il "driver" nella sua modalità "generica" è utilizzabile da tutte le macchine Windows, da Windows95 a WindowsXP e si appoggia sul meccanismo di I/O messo a disposizione da LabWindows/CVI; la contropartita è in alcuni casi, la relativa lentezza.
Per l'uso della DLL in questa modalità non è necessaria di alcuna installazione, è sufficiente copiarla dove risiede il programma oppure nella cartella di sistema (windows\system32 oppure winnt\system32). Questa modalità è quella predefinita e non è necessaria alcuna operazione di attivazione. E' necessario installare prima il run time engine di LW/CVI.
Windows NT, 2000, XP
Su macchine windows derivate da WinNT l'accesso ai dispositivi può essere fatto anche attraverso il device driver VVIO.SYS. Con esso è in alcuni casi possibile un grosso aumento di prestazioni pur preservando tutte le funzionalità della DLL in modalità "generica".
Per utilizzare questa modalità occorre preventivamente installare il device driver VVIO.sys e invocare, all'inizio del proprio codice, la funzione di attivazione.
La DLL è scritta utilizzando LabWindows/CVI, un compilatore ANSI C nato per il controllo della strumentazione elettronica ma utilizzabile anche per usi generici. Per utilizzarla è necessario installare sul proprio computer il RTE.
Come sempre nel link al fondo della pagina troverete sia gli eseguibili che il codice sorgente, gratuitamente ma con condizioni di utilizzo che vi prego di leggere con attenzione.
Di seguito, utilizzando la sintassi C, riporto una breve descrizione delle funzioni rese disponibili da VVIO.dll. Gli utenti VB troveranno anche il file VVIO.bas che riporta i nomi delle stesse funzioni con sintassi di VisualBasic.
L'elenco dei codici di errore ritornato dalle funzioni è disponibile nel file errorVVIO.h ed è caratterizzato dall'essere, in caso di errore, sempre minore di zero.
Attiva la modalità di funzionamento specifica per windows NT/2000/Xp. Se non si invoca questa funzione la DLL è comunque utilizzabile seppur con un qualche calo di prestazioni, a volte consistente, a volte irrilevante.
La funzione non ritorna alcun valore e, nell'impossibilità di caricare VVIO.sys (sistema operativo non compatibile, driver non installato, errore nel driver...), semplicemente prosegue l'esecuzione del programma nella modalità "generica" previa segnalazione.
Rallenta le funzioni di scrittura sull'hardware, permettendo l'utilizzo di dispositivi particolarmente lenti con parallele particolarmente veloci.
I parametri:
Nota: l'effetto è globale, cioè vale per tutte le operazione di I/O. E' permesso invocare la funzione più volte durante l'esecuzione del programma per adattarsi alle varie periferiche.
Legge un byte dal dispositivo con indirizzo addr. L'uso casuale di questa funzione potrebbe causare danni al sistema se usato senza la dovuta attenzione, anche se si tratta di un'ipotesi piuttosto remota, trattandosi di un'operazione di lettura.
I parametri:
Ritorna il byte letto (0-255)
Scrive il byte data all'indirizzo addr. Non viene effettuato alcun controllo sull'esistenza di un dispositivo con questo indirizzo e/o sugli eventuali effetti diretti o indiretti. L'uso potrebbe anche causare danni al sistema se usato senza la dovuta attenzione (per esempio la scrittura di un dato casuale sull'indirizzo del controller dei dischi potrebbe causare il blocco della macchina ed addirittura alla perdita di dati)
I parametri:
Ritorna il numero di porte parallele individuate dal BIOS del PC ed i relativi indirizzi. In genere sono comprese le sole porte con indirizzo minore di 0x400 presenti sulla scheda madre o su schede ISA. In genere sono invece escluse quelle su bus PCI.
I parametri
Ritorna il numero di parallele individuate (0... 3). Un codice di ritorno negativo indica un errore.
Questa funzione blocca l'utilizzo della porta parallela ad altre applicazioni. Ho grossi dubbi sul corretto funzionamento di questa funzione per tutte le versioni di windows, anche se usarla sicuramente male non fa.
I parametri:
Inizializza alcune variabili interne per l'uso della porta parallela. E' necessario usarla prima delle funzioni VVIO_LPT_xxx() di seguito descritte.
I parametri:
Legge cinque bit dal registro status.
I parametri:
Ritornata una parola di 16 bit di cui sono significativi solo 5 bit:
0, 0 , 0 , 0, 0, 0 , 0 , 0 busy, ack, paper_out, select, error, 0, 0, 0.
Si noti che tali bit sono significativi solo se il valore ritornato è positivo, altrimenti si tratta di un codice di errore.
Si noti inoltre che per ciascun bit è ritornato 1 se la tensione al pin esterno è alta, "correggendo" l'eventuale inversione effettuata dall'hardware della porta parallela.
Scrive il valore data (8 bit) sulla porta lpt
I parametri
Scrive 4 bit nel registro control di lpt
I parametri
Alimenta il circuito del mini- datalogger collegato ad una porta parallela e inizializza alcune variabili interne. Il tempo di esecuzione è abbastanza lungo (centinaia di ms) in quanto viene inserito un ritardo per permettere lo stabilizzarsi delle tensioni. Occorre invocare questa funzione solo una volta, all'inizio del proprio programma.
I parametri:
Legge la tensione presente su uno dei canali del datalogger; si tratta della tensione all'ingresso del multiplexer, l'effetto dovuto ad eventuali partitori presenti deve essere calcolato a parte dal programma utente. Prima di questa funzione è necessario richiamare VVIO_MAX147_Inizialize()
I parametri:
Legge la tensione presente su tutti i canali del datalogger; si tratta delle tensioni all'ingresso del multiplexer, l'effetto dovuto ad eventuali partitori partitori presenti deve essere calcolato dal programma utente. Prima di questa funzione è necessario richiamare VVIO_MAX147_Inizialize().
I parametri:
Inizializza l'hardware relativo ad un generico circuito basato su iso-buffer.
I parametri:
Scrive un dato su un canale di un generico circuito basato su iso-buffer.
Parametri:
Scrive dati su un circuito basato sull'integrato LMD18245. Si veda motori passo-passo a micro-passi per un esempio concreto.
Parametri:
Fa compiere ad uno dei motori passo-passo bipolari una singola rotazione, pari a uno o più "micropassi" (micro-step). Per la rotazione continua del motore è necessario invocare questa funzione ad intervalli regolari.
Si veda il circuito motori passo-passo a micro-passi ed il tutorial sui motori passo-passo per maggiori dettagli.
Parametri:
Fa compiere ad uno dei motori passo-passo unipolari una rotazione, di un passo o di mezzo passo. Per la rotazione continua del motore è necessario invocare questa funzione ad intervalli regolari.
Si veda il circuito step-driver ed il tutorial sui motori passo-passo per maggiori dettagli.
Parametri:
Tutti i file appartenenti al progetto VVIO sono contenuti nel file compresso VVIO.tgz.
licenza | La licenza d'uso che ho utilizzato |
basicVVxx.x | Il codice sorgente delle librerie |
DLL\ | La DLL per l'ambiente Windows |
SYS\ | Il device driver per WindowsNT/2000/Xp e relativi file di supporto |
I circuiti supportati dal progetto VVIO sono:
La documentazione è disponibile alle seguenti pagine:
VVIO - Versione 0.2a - Agosto 2003
Copyright © 2003, Vincenzo Villa
La licenza d'uso da leggere ed accettare prima di utilizzare il prodotto
MS-DOS, Windows 95, 98, Me, NT, 2000, Xp, VisualBasic, VisualC
sono marchi registrati da Microsoft Corporation
Delphi e TurboC sono marchi registrati da Borland Software Corporation
LabWindows/CVI è marchio registrato da National Instruments Corporation
Linux è marchio registrato da Linus Torvald
gcc e GNU sono marchi registrati da Free Software Foundation, Inc
Questo documento è disponibile nella sua forma integrale sul sito https://www.vincenzov.net.