Hallo,
ich habe den Hinweis erhalten, daß mein Wunsch nur mit assembler zu erfüllen wäre, da keine entspr. WIN API Funktion vorhanden sei.
Ich will nur mit 2 Pins der Seriellen Schnittstelle umgehen ohne eine sereielle Kommunikation aufzubauen. Ein PIN soll Spannung (+5 V) an einen Temperatursensor liefern (TXD) und der andere (CTS) soll zum auslesen der Ergebnise verwendet werden. Ich habe anbei einen Programmausschnitt des Tubo-PASCAL-Programms für DOS angefügt. An sich keine Hexerei, aber ... bei meiner Erfahrung mit Schnittstellenprogrammierung. Der Ergebnsiwert ist übrigens eine Temperatur eines SMT-160-30) und ich brauche das ganze zur Steuerung und Überwachung meiner Heizungsanlage.
Es wäre super wenn ich einen Hinweis bekommen könnte. Ich habe von Assembler leider überhaupt keine Ahnung.
Program T_mess; {scant und gibt T aus, n=500.000}
Uses CRT,Dos;
const
BA=$3F8; {COM1} Var
CTS,n,z: longint;
T: real;
Procedure scan;
Begin
Port[BA+3] := 64; {TXD an }
CTS := 0;
Z := 0;
N := 500000;
Repeat
CTS := CTS + ((Port[BA+6] and 16) DIV 16 + 1);
Inc(z);
Until z=n;
T := 212.766*(((CTS-n)/n-0.32-0.003);
GOTOXY (10,8);
Writeln(„ T: ‚,,T:2:2, „ Grad C „);
Port[BA+3]:=0; {TXD aus }
End;
{Hauptprogramm } begin
clrscr;
repeat scan;
delay(1000);
untiil keypressed;
end;
ich habe den Hinweis erhalten, daß mein Wunsch nur mit assembler zu erfüllen wäre, da keine entspr. WIN API Funktion vorhanden sei.
Ich will nur mit 2 Pins der Seriellen Schnittstelle umgehen ohne eine sereielle Kommunikation aufzubauen. Ein PIN soll Spannung (+5 V) an einen Temperatursensor liefern (TXD) und der andere (CTS) soll zum auslesen der Ergebnise verwendet werden. Ich habe anbei einen Programmausschnitt des Tubo-PASCAL-Programms für DOS angefügt. An sich keine Hexerei, aber ... bei meiner Erfahrung mit Schnittstellenprogrammierung. Der Ergebnsiwert ist übrigens eine Temperatur eines SMT-160-30) und ich brauche das ganze zur Steuerung und Überwachung meiner Heizungsanlage.
Es wäre super wenn ich einen Hinweis bekommen könnte. Ich habe von Assembler leider überhaupt keine Ahnung.
Program T_mess; {scant und gibt T aus, n=500.000}
Uses CRT,Dos;
const
BA=$3F8; {COM1} Var
CTS,n,z: longint;
T: real;
Procedure scan;
Begin
Port[BA+3] := 64; {TXD an }
CTS := 0;
Z := 0;
N := 500000;
Repeat
CTS := CTS + ((Port[BA+6] and 16) DIV 16 + 1);
Inc(z);
Until z=n;
T := 212.766*(((CTS-n)/n-0.32-0.003);
GOTOXY (10,8);
Writeln(„ T: ‚,,T:2:2, „ Grad C „);
Port[BA+3]:=0; {TXD aus }
End;
{Hauptprogramm } begin
clrscr;
repeat scan;
delay(1000);
untiil keypressed;
end;
Comment