Les Basic pour Dos ( Quick Basic et VB DOS) autorisent la gestion des entrées - sorties par l'utilisateur à partir des instructions:
- INP (Adresse), qui renvoie l'octet de donnée présent à l'adresse spécifiée,
- OUT Adresse, Donnée , qui écrit l'octet de donnée à l'adresse spécifiée.
Ceci présente l'intérêt de pouvoir utiliser les ports d'imprimantes à d'autres fins ou de pouvoir assurer la gestion de cartes d'extensions (cartes d'E/S TOR ou cartes d'acquisition).
Cette utilisation est à priori devenue impossible avec Visual Basic. On peut cependant avoir recours à une DLL spécialisée InpOut32.dll, compilée sur Delphi 4 de Borland et dont le code source est donné ci dessous:
library InpOut32;
uses SysUtils;
var ByteValue:Byte;
procedure Out32(PortAddress:smallint;Value:smallint);stdcall;export;
begin
ByteValue:=Byte(Value);
asm
push dx
mov dx,PortAddress
mov al, ByteValue
out dx,al
pop dx
end;
end;
function Inp32(PortAddress:smallint):smallint;stdcall;export;
begin
asm
push dx
mov dx, PortAddress
in al,dx
mov ByteValue,al
pop dx
end;
Inp32:=smallint(ByteValue) and $00FF;
end;
Exports
Inp32,
Out32;
begin
end.
Télécharger la DLL 40 Ko
Utilisation de la DLL sous VB5
Il faut insérer le code suivant en tête du module principal:
Public Declare Function Inp Lib "InpOut32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "InpOut32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
L'utilisation se fait ensuite de façon classique par les instructions:
INP (Adresse) et OUT Adresse, Donnée décrites précédemment.
Exemple sur port imprimante LPT1:
PortAddress = &H378
Value = Inp(PortAddress + 1)
Out PortAddress, Value
Les lignes précédentes permettent de mettre à l'adresse $378, l'octet présent à l'adresse $379.
Voir aussi
Interface parallèle Centronics