No hay control de puerto serie disponible en Delphi, por lo que primero debe agregar el control ActiveX MSCOMM a la paleta de componentes. Este es un muy buen control. No sólo puede operar el puerto serie, sino también controlar el módem. El siguiente es un ejemplo específico para ilustrar cómo utilizar el control MSCOMM para desarrollar un programa de comunicación en serie.
Cree un proyecto Communication.dPR, cambie la propiedad Nombre del formulario a CommForm, cambie el título a The Communication Test y seleccione Archivo/Guardar como para almacenar el nuevo formulario como CommFrm.pas.
El código correspondiente es el siguiente:
Descripción de variables
var
Formulario de comunicación: TCommForm;
ss :cadena;
savef,readf:archivo de char;
i,j :int largo;
inicialización
procedimiento TCommForm.FormCreate(Remitente: TObject);
comenzar
mscomm.commport:=1;
mscomm.settings:='9600,n,8,1';
mscomm.inputlen:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=verdadero;
SS:='';
yo:=0;
j:=0;
asignararchivo(savef,'save1');
reescribir(guardar);
asignar archivo (readf, 'read1');
restablecer (lectura);
fin;
Configuración correcta
procedimiento TCommForm.btnConfirmClick (Remitente: TObject);
comenzar
si mscomm.portopen entonces
mscomm.portopen:=falso;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
fin;
evento de transferencia
procedimiento TCommForm.MSCommComm(Remitente: TObject);
var
archivorc:char;
búfer :variante;
s1: cadena;
c:carbón;
comenzar
caso mscomm.commEvento de
comEvEnviar:
comenzar
mientras no (eof (readf)) hacer
comenzar
leer(readf,filenrc);
mscomm.output:=filenrc;
j:=j+1;
lblDisplay.caption:=inttostr(j);
si mscomm.outbuffercount>=2 entonces
romper;
fin;
fin;
comEvRecibir:
comenzar
búfer:=mscomm.Input;
s1:=búfer;
c:=s1[1];
ss:=ss+c;
yo:=yo+1;
lblDisplay.caption:=c+inttostr(i);
escribir(guardar,c);
si (c=chr(10))o(c=chr(13)) entonces
comenzar
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(ss);
SS:='';
fin;
fin;
fin;
fin;