لا يوجد تحكم في المنفذ التسلسلي متاح في دلفي، لذلك تحتاج أولاً إلى إضافة عنصر تحكم ActiveX MSCOMM إلى لوحة المكونات. يعد هذا تحكمًا جيدًا للغاية، فهو لا يمكنه تشغيل المنفذ التسلسلي فحسب، بل يمكنه أيضًا التحكم في المودم. ما يلي هو مثال محدد لتوضيح كيفية استخدام عنصر التحكم MSCOMM لتطوير برنامج اتصال تسلسلي.
إنشاء مشروع Communication.dPR تغيير خاصية اسم النموذج إلى CommForm تغيير العنوان إلى اختبار الاتصال ثم حدد ملف/حفظ باسم لتخزين النموذج الجديد باسم CommFrm.pas.
الكود المقابل هو كما يلي:
وصف متغير
فار
كومفورم: تيكومفورم؛
س س :سلسلة؛
savef، readf: ملف char؛
أنا، ي :longint؛
التهيئة
الإجراء TCommForm.FormCreate(Sender: TObject);
يبدأ
mscomm.commport:=1;
mscomm.settings:='9600,n,8,1';
mscomm.inputlen:=1;
mscomm.inbuffercount:=0;
mscomm.portopen:=true;
سس:='';
أنا:=0;
ي:=0;
عيّنملف(savef,'save1');
إعادة كتابة(حفظ);
assetfile(readf,'read1');
إعادة تعيين (قراءة)؛
نهاية؛
الإعداد موافق
الإجراء TCommForm.btnConfirmClick(Sender: TObject);
يبدأ
إذا mscomm.portopen ثم
mscomm.portopen:=false;
mscomm.commport:=strtoint(edtCommport.text);
mscomm.settings:=edtCommsetting.Text;
نهاية؛
حدث النقل
الإجراء TCommForm.MSCommComm(Sender: TObject);
فار
filenrc:char;
المخزن المؤقت: البديل؛
s1: سلسلة؛
ج:شار;
يبدأ
حالة mscomm.commحدث
كوميفسيند:
يبدأ
في حين لا (eof(readf)) تفعل
يبدأ
قراءة(readf,filenrc);
mscomm.output:=filenrc;
ي:=ي+1;
lblDisplay.caption:=inttostr(j);
إذا mscomm.outbuffercount>=2 ثم
استراحة؛
نهاية؛
نهاية؛
comEvReceive:
يبدأ
المخزن المؤقت:=mscomm.Input;
s1:=buffer;
c:=s1[1];
سس:=سس+ج;
أنا:=أنا+1;
lblDisplay.caption:=c+inttostr(i);
اكتب (حفظ، ج)؛
إذا (ج = مركز حقوق الإنسان (10)) أو (ج = مركز حقوق الإنسان (13)) ثم
يبدأ
lblDisplay.caption:='cr'+inttostr(i);
memDisplay.lines.add(ss);
سس:='';
نهاية؛
نهاية؛
نهاية؛
نهاية؛