В Delphi нет элемента управления последовательным портом, поэтому сначала необходимо добавить элемент управления ActiveX MSCOMM в палитру компонентов. Это очень хороший элемент управления. Он может не только управлять последовательным портом, но и модемом. Ниже приведен конкретный пример, иллюстрирующий использование элемента управления MSCOMM для разработки программы последовательной связи.
Создайте проект Communication.dPR, измените свойство Name формы на CommForm, измените заголовок на The Communication Test и выберите «Файл/Сохранить как», чтобы сохранить новую форму как CommFrm.pas.
Соответствующий код выглядит следующим образом:
Описание переменной
вар
Форма связи: TCommForm;
сс: строка;
savef,readf:файл символов;
я, j: лонгинт;
инициализация
процедура TCommForm.FormCreate(Отправитель: TObject);
начинать
мскомм.коммпорт:=1;
mscomm.settings:='9600,n,8,1';
мскомм.входлен:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=истина;
сс:='';
я:=0;
j:=0;
Assignfile(savef, 'save1');
переписать (сохранить);
Assignfile(readf,'read1');
сброс (чтение);
конец;
Настройка ОК
процедура TCommForm.btnConfirmClick(Отправитель: TObject);
начинать
если mscomm.portopen, то
mscomm.portopen:=false;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
конец;
трансферное событие
процедура TCommForm.MSCommComm(Отправитель: TObject);
вар
filenrc: символ;
буфер: вариант;
s1: строка;
с: символ;
начинать
случай mscomm.commEvent из
comEvSend:
начинать
пока нет(eof(readf)) делать
начинать
читать (readf, filenrc);
mscomm.output:=filenrc;
j:=j+1;
lblDisplay.caption:=inttostr(j);
если mscomm.outbuffercount>=2, то
перерыв;
конец;
конец;
comEvReceive:
начинать
буфер: = mscomm.Input;
s1:=буфер;
с:=s1[1];
сс:=сс+с;
я:=я+1;
lblDisplay.caption:=c+inttostr(i);
написать (сохранить, с);
если (c=chr(10)) или (c=chr(13)) то
начинать
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(СС);
сс:='';
конец;
конец;
конец;
конец;