Da in Delphi keine Steuerung für die serielle Schnittstelle verfügbar ist, müssen Sie zunächst die ActiveX-Steuerung MSCOMM zur Komponentenpalette hinzufügen. Dies ist eine sehr gute Steuerung, die nicht nur die serielle Schnittstelle bedienen, sondern auch das Modem steuern kann. Das Folgende ist ein konkretes Beispiel, um zu veranschaulichen, wie die MSCOMM-Steuerung zum Entwickeln eines seriellen Kommunikationsprogramms verwendet wird.
Erstellen Sie ein Communication.dPR-Projekt, ändern Sie die Name-Eigenschaft des Formulars in CommForm, ändern Sie den Titel in The Communication Test und wählen Sie Datei/Speichern unter, um das neue Formular als CommFrm.pas zu speichern.
Der entsprechende Code lautet wie folgt:
Variablenbeschreibung
var
CommForm: TCommForm;
ss :string;
savef,readf:Datei von char;
i,j :longint;
Initialisierung
procedure TCommForm.FormCreate(Sender: TObject);
beginnen
mscomm.commport:=1;
mscomm.settings:='9600,n,8,1';
mscomm.inputlen:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=true;
ss:='';
i:=0;
j:=0;
zuweisenfile(savef,'save1');
umschreiben(savef);
zuweisenfile(readf,'read1');
zurücksetzen(readf);
Ende;
Einstellung OK
procedure TCommForm.btnConfirmClick(Sender: TObject);
beginnen
Wenn mscomm.portopen dann
mscomm.portopen:=false;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
Ende;
Übertragungsereignis
procedure TCommForm.MSCommComm(Sender: TObject);
var
filenrc:char;
Puffer: Variante;
s1: Zeichenfolge;
c:char;
beginnen
Fall mscomm.commEvent von
comEvSend:
beginnen
während not(eof(readf)) dies tut
beginnen
read(readf,filenrc);
mscomm.output:=filenrc;
j:=j+1;
lblDisplay.caption:=inttostr(j);
wenn mscomm.outbuffercount>=2 dann
brechen;
Ende;
Ende;
comEvReceive:
beginnen
buffer:=mscomm.Input;
s1:=Puffer;
c:=s1[1];
ss:=ss+c;
i:=i+1;
lblDisplay.caption:=c+inttostr(i);
write(savef,c);
wenn (c=chr(10))oder(c=chr(13)) dann
beginnen
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(ss);
ss:='';
Ende;
Ende;
Ende;
Ende;