Update des Terminal.exe bis COM255
Das
Programm arbeitet stand alone und kann in ein beliebiges Verzeichnis
entpackt werden. Beim Start ist die Schnittstelle geschlossen.
Wählen Sie die gewünschte COM-Nummer und die Baudrate aus.
Für die Com-Nummern 1 bis 4 existieren Einträge im
Drop-Down-Menü, höhere Nummern können per Hand editiert
werden. Klicken Sie dann auf Open. Achtung, jede Änderung der
Einstellungen wird erst wirksam, wenn Sie erneut auf Open klicken.
COM1
ist jetzt mit 1200 Baud geöffnet. Verbinden Sie für einen
ersten Test TXD (Pin3) mit RXD (Pin 2). Senden Sie einen Text.
Jedes in das Text-Fenster eingegebene Zeichen wird sofort gesendet und
wieder empfangen. Im Byte-Fenster sehen Sie die Darstellung der
ASCII-Zeichen.
In
einigen Fällen müssen Einzelbytes gesendet werden. Geben Sie
jeweils eine Zahl ins Byte-Fenster ein und bestätigen Sie die
Eingabe mit Enter. Das Byte wird gesendet und wieder empfangen. Auch
diesmal kommen beide Darstellung, die Bytes im Byte-Fenster und zu
zugehörigen Textzeichen im Text-Fenster. Die Zeichen A...D werden
bekanntlich durch die ASCII-Werte 65 ... 68 repräsentiert.
Hier
wird der Elektor-DSP-Empfänger aus Heft 7/8-2010 angesteuert.
Für die Kommunikation ist die Textübertragung mit 38400 Baud
definiert. Das Kommando f88800 stellt den Empfänger auf die
UKW-Frequenz 88,8 MHz ein. Auf das kleine "f" reagiert der
Empfänger mit der Antwort "Tune". Danach folgt der Zahlenwert
(Freqeunz in kHz) und Enter. Alle eingegebenen Zeichen werden als Echo
vom Empfänger zurückgesendet. Man kann also sehen, dass alles
richtig angekommen ist.
Und
richtig: Der Empfänger wurde auf die gewünschte Frequenz
abgestimmt. Zusätzlich sieht am im Display die Signalstärke
in dBuV, das SNR in dB, die RDS-Stationskennung und die über RDS
empfangene Uhrzeit.
Quelltext
Das
Programm Terminal.exe wurde mit Delphi entwickelt. Ältere
Vorgänger-Versionen konnten nur bis COM9 eingesetzt werden. Die
entscheidende Neuerung liegt in der Unit RSCOM.Pas.
function OPENCOM (OpenString: pchar): Integer;
var S, OpenStr, PortStr, Parameter :String;
DCB: TDCB;
begin
Result := 0;
if PortHandle > 0 then CloseHandle(PortHandle);
OpenStr := OpenString;
S := copy (OpenStr,5,1);
if S=':' then begin //COM1:
PortStr := copy (OpenStr,1,4);
Parameter:= copy (OpenStr,6,Length(OpenStr)-6);
end;
S := copy (OpenStr,6,1);
if S=':' then begin //COM10:
PortStr := copy (OpenStr,1,5);
PortStr := '\\.\' + PortStr;
Parameter:= copy (OpenStr,7,Length(OpenStr)-7);
end;
S := copy (OpenStr,7,1);
if S=':' then begin //COM100:
PortStr := copy (OpenStr,1,6);
PortStr := '\\.\' + PortStr;
Parameter:= copy (OpenStr,8,Length(OpenStr)-8);
end;
PortHandle:=CreateFile(PChar(PortStr),GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,0);
GetCommState(PortHandle,DCB);
BuildCommDCB(PChar(Parameter),dcb);
DCB.Flags := 1;
if SetCommState(PortHandle,DCB)then Result := 1;
TimeOuts (300);
end;
Beim
Öffnen wird ein Handle verwendet, also eine Zahl vom Typ Integer,
die zur eindeutigen Zuordnung des verwendeten IO-Kanals dient. Das
Handle wird vom System entsprechend der Reihenfolge von
CreateFile-Aufrufen vergeben. Da WriteFile für sehr
unterschiedliche Aktionen und Geräte verwendet werden kann,
unterscheidet das Betriebssystem diese mithilfe des Handles.
Entsprechend gibt CloseHandle die entsprechende Schnittstelle wieder
frei.
Ursprünglich konnten nur die Schnittstellen COM1
bis COM9 geöffnet werden. Höhere Schnittstellen wie z. B.
COM51 heißen unter Windows etwas anders, nämlich z. B.
"\\.\COM51". Der Gerätename wird hier automatisch erweitert.
Möglich sind jetzt COM-Nummern bis 255. Von außen kann die
Funktion so aufgerufen werden: OPENCOM „COM255:1200,N,8,1“.
Download: Delphi-Quelltext
weiter
zurück