Autor Beitrag
roland11
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 19.12.05 18:44 
Ich habe ein Problem mit dem Ansprechen der seriellen Schnittstelle, ich will ein selbsgebautes Voltmeter an die serielle Schnittstelle bringen, das klappt auch mit der vorhandenen Software. Leider ist die in C++.
Ich will das jetzt mit Delphi 7 realisieren.
Mein Problem ist schon der Anfang. Ich habe von einer port.dll von B.Kainka gelesen, er hat das für VB 5.0 erläutert. In der DLL steht alles drinnen, was man braucht an Prozeduren und Funktionen.
Wie binde ich das aber in Delphi ein?
Wie spreche ich die port.dll an und muß dann noch eine .paas Datei wie in Visual BAsic mit eingebunden werden, dort werden die Prozeduren und Funktionen deklariert.
Ich habe schon etliches versucht, aber nur Fehlermeldungen bekommen.
Roland
fschmidt
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 23.12.05 13:56 
Hallo Roland,

habe selbst schon lange danach gesucht.

Bin bei: hsg.region-kaisersla...ell/prowo04/TCPD.php fündig geworden.
habe es auch selbst getestet und finde es klasse

Für die Nutzung des LPTx (1,2...) oder einer beliebeigen I/O-Adresse empfehle ich Dir hier mal zu suchen:
www.geekhideout.com/iodll.shtml

Mit der io.dll kannst übrigens auch selbest die rs232 Schnittstelle ansprechen. Das ist aber ein bischen mehr "Hardcore"
Der nachfolgende Code (noch aus Turbo-Pascal Zeiten) zeigt das Prinzip.

Du musst nur für die Port-Befehle die "neuen" Proceduren oder Funktionen aufrufen.

port[xy]:=AB; <> Schreibbefehl
AB:=port[xy] <> Lesebefehl

Sende-/Empfangsroutine:
unit rs232;

interface

procedure oeffnen;
procedure schliessen;
procedure senden (wert:byte);
procedure empfangen (var wert:byte);

implementation

uses crt;

const cr =chr(13);
lf =chr(10);
com=$3f8; {com1 $3f8 com2 $2f8}

var wert :byte;
ch :char;
count:integer;
ins :string;

procedure oeffnen;
var wert :byte;
begin

{Baudrate}
port[com+3]:=128; {Baudratereigster}
port[com]:=12; port[com+1]:=0; {9600}

{Datenbreite}
port[com+3]:=26; {3<=>8,n,1 26<=>start,7 bit,ev gerade,stop}
port[com+4]:=3; {}

wert:=port[com] {empfangsregister leeren}
end;

procedure schliessen;
begin
port[com+4]:=0
end;

procedure senden (wert:byte);
var timeout :integer;
begin
repeat until (port[com+5] and 32) = 32;
port[com]:=wert;
end;

procedure empfangen (var wert:byte);
begin
repeat until ( (port[com+5] and 1) = 1);
wert:=port[com];
end;

begin
end.