Não há controle de porta serial disponível no Delphi, então primeiro você precisa adicionar o controle ActiveX MSCOMM à paleta de componentes. Este é um controle muito bom. Ele pode não apenas operar a porta serial, mas também controlar o modem. A seguir está um exemplo específico para ilustrar como usar o controle MSCOMM para desenvolver um programa de comunicação serial.
Crie um projeto Communication.dPR, altere a propriedade Name do formulário para CommForm, altere o título para The Communication Test e selecione Arquivo/Salvar como para armazenar o novo formulário como CommFrm.pas.
O código correspondente é o seguinte:
Descrição da variável
var
CommForm: TCommForm;
ss:string;
savef,readf:arquivo de char;
eu,j:inteiro longo;
inicialização
procedimento TCommForm.FormCreate(Sender: TObject);
começar
mscomm.commport:=1;
mscomm.settings:='9600,n,8,1';
mscomm.inputlen:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=true;
ss:='';
eu:=0;
j:=0;
atribuir arquivo(salvarf,'salvar1');
reescrever(salvar);
atribuirarquivo(readf,'read1');
redefinir(lerf);
fim;
Configuração OK
procedimento TCommForm.btnConfirmClick(Sender: TObject);
começar
se mscomm.portopen então
mscomm.portopen:=falso;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
fim;
evento de transferência
procedimento TCommForm.MSCommComm(Remetente: TObject);
var
arquivonrc:char;
buffer: variante;
s1: sequência;
c:char;
começar
caso mscomm.commEvento de
comEvEnviar:
começar
enquanto não(eof(readf)) faça
começar
leia(readf,arquivorc);
mscomm.output:=filenrc;
j:=j+1;
lblDisplay.caption:=inttostr(j);
se mscomm.outbuffercount>=2 então
quebrar;
fim;
fim;
comEvReceber:
começar
buffer:=mscomm.Input;
s1:=buffer;
c:=s1[1];
ss:=ss+c;
eu:=eu+1;
lblDisplay.caption:=c+inttostr(i);
escreva(salvarf,c);
se (c=chr(10))ou(c=chr(13)) então
começar
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(ss);
ss:='';
fim;
fim;
fim;
fim;