Aucun contrôle de port série n'est disponible dans Delphi, vous devez donc d'abord ajouter le contrôle ActiveX MSCOMM à la palette de composants. C'est un très bon contrôle. Il peut non seulement faire fonctionner le port série, mais également contrôler le modem. Ce qui suit est un exemple spécifique pour illustrer comment utiliser le contrôle MSCOMM pour développer un programme de communication série.
Créez un projet Communication.dPR, modifiez la propriété Name du formulaire en CommForm, modifiez le titre en The Communication Test et sélectionnez Fichier/Enregistrer sous pour stocker le nouveau formulaire sous CommFrm.pas.
Le code correspondant est le suivant :
Description des variables
var
CommForm : TCommForm ;
ss :chaîne;
savef,readf:fichier de char ;
je,j :entier long;
initialisation
procédure TCommForm.FormCreate(Expéditeur : TObject);
commencer
mscomm.commport:=1;
mscomm.settings:='9600,n,8,1';
mscomm.inputlen:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=true;
ss:='';
je:=0;
j:=0;
assignfile(savef,'save1');
réécrire (savef);
assignfile(readf,'read1');
réinitialiser (lire);
fin;
Réglage OK
procédure TCommForm.btnConfirmClick(Expéditeur : TObject);
commencer
si mscomm.portopen alors
mscomm.portopen:=false;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
fin;
événement de transfert
procédure TCommForm.MSCommComm(Expéditeur : TObject);
var
fichierrc:char;
tampon :variante;
s1 : chaîne ;
c:char;
commencer
cas mscomm.commÉvénement de
comEvEnvoyer :
commencer
alors que non (eof (readf)) fais
commencer
lire(readf,filenrc);
mscomm.output:=filenrc;
j:=j+1;
lblDisplay.caption:=inttostr(j);
si mscomm.outbuffercount>=2 alors
casser;
fin;
fin;
comEvRecevoir :
commencer
tampon :=mscomm.Input ;
s1 :=tampon ;
c:=s1[1];
ss:=ss+c;
je:=i+1;
lblDisplay.caption:=c+inttostr(i);
écrire(savef,c);
si (c=chr(10))ou(c=chr(13)) alors
commencer
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(ss);
ss:='';
fin;
fin;
fin;
fin;