المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: استلام بيانات من المنفذ Com1
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
hassson


السلام عليكم

لدي البرنامج التالي وهو عباره عن واجهة لنظام تصويت مكون من اربع اجهزة تستخدم للتصويت
هذه الاجهزة الاربعة متصلة الى الحاسب عن طريق بورت
COM1



يقوم الكائن TCAN_Bridge بمراقبة المنفذ التسلسلي بشكل دائم وهو عبارة عن خيط تنفيذ مستقل يعمل
بشكل منفصل عن البرنامج وعند وصول رسالة على الشكل
(N:xx,rr)
حيث xx هو رقم العقده او جهاز التصويت و rr هو النتيجة يقوم باستدعاء الاجراء ADD Result مع البارمترات
rr,xx
والذي يقوم باضافة النتيجة الى متحولات النتائج الموجودة في البرنامج الرئيسي ويظهر النتائج الجديدة على الشاشة


مطلوب مساعده في كتابة هذا الكائن الخاص بمراقبة البورت
COM1



كود
GroupBox1:TGroupBox;
GroupBox2:TGroupBox;
BitBtn1:TBitBtn;
BitBtn2:TBitBtn;
BitBtn3:TBitBtn;
Label1:TLabel;
edTime:TEdit;
UpDown:TUpDown;
Label2:TLabel;
Label3:TLabel;
edNum:TEdit;
UpDown2:TUpDown;
prgD:TProgressBar;
prgC:TProgressBar;
prgB:TProgressBar;
prgA:TProgressBar;
Label4:TLabel;
Label5:TLabel;
Label6:TLabel;
Label7:TLabel;
edA_Rate:TEdit;
edD_Rate:TEdit;
edC_Rate:TEdit;
edB_Rate:TEdit;
Bevel1:TBevel;
Label9:TLabel;
edNonVoteNr:TEdit;
Label10:TLabel;
edVoteRate:TEdit;
Timer1:TEdit;
lbTime:TLabel;
procedure BitBtn3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure edTimeChange(Sender: TObject);
procedure edNumChange(Sender: TObject);
private
{ Private declarations }
m_TimeOut : integer;

m_A_Num, m_B_Num, m_C_Num, m_D_Num : integer;
m_A_Rate, m_B_Rate, m_C_Rate, m_D_Rate : Real;

m_VoteNum, m_Non_Vote_Num : integer;
m_Vote_Rate : Real;

m_Node_Num : integer;

public

{ Public declarations }
procedure ClrResult;
procedure ShowResult;
procedure AddResult(N,R:Integer);
end;

var
Form1:TForm1;

implementation
uses Bridge;

{R *.dfm$}

var m_Bridge : TCAN_Bridge;

procedure TForm1.ClrResult;
Begin
m_A_Num := 0
m_B_Num := 0
m_C_Num := 0
m_D_Num := 0

m_VoteNum := 0
m_Non_Vote_Num := m_Node_num;

ShowResult;

edTime.Enabled := True;
edNum.Enabled := True;

end;

procedure TForm1.AddResult(N,R:Integer);
Begin
inc (m_VoteNum);

m_Non_Vote_Num := m_Node_Num - m_VoteNum;

case R of
inc (m_A_Num :0);
inc (m_B_Num :1);
inc (m_C_Num :2);
inc (m_D_Num :3);

end;

ShowResult;
end;

procedure TForm1.ShowResult;
Begin

if m_A_Num = 0 Then m_A_Rate := 0
else m_A_Rate := m_A_Num * 100 / m_VoteNum;

if m_B_Num = 0 Then m_B_Rate := 0
else m_B_Rate := m_B_Num * 100 / m_VoteNum;

if m_C_Num = 0 Then m_C_Rate := 0
else m_C_Rate := m_C_Num * 100 / m_VoteNum;

if m_D_Num = 0 Then m_D_Rate := 0
else m_D_Rate := m_D_Num * 100 / m_VoteNum;

if m_VoteNum = 0 Then m_vote_Rate := 0
else m_Vote_Rate := m_VoteNum * 100 /
StrToInt(edNum.Text);


prgA.Position := Round(m_A_Rate);
prgB.Position := Round(m_B_Rate);
prgC.Position := Round(m_C_Rate);
prgD.Position := Round(m_D_Rate);

edA_Rate.Text := FloatToStr(m_A_Rate);
edB_Rate.Text := FloatToStr(m_B_Rate);
edC_Rate.Text := FloatToStr(m_C_Rate);
edD_Rate.Text := FloatToStr(m_D_Rate);

edVoteNr.Text := IntToStr(m_VoteNum);
edNonVoteNr.Text := IntToStr(m_Non_Vote_Num);
edVoteRate.Text := FloatToStr(m_Vote_Rate);

end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Clear REsult//
ClrResult;

Timer1.Enabled := True;
Send Start Message //
m_Bridge.SendMessage('S');

edTime.Enabled := False;
edNum.Enabled :=False;

lbTime.Visible := true
lbTime.Caption := edTime.Text+'HassaN';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

Dec(m_timeOut);

lbTime.Caption := Format('HassaN',[m_TimeOut]);

if m_TimeOut = 0 then Begin
//
Timer1.Enabled := False;
m_Bridge.SendMessage('R');

ShowResult;

end;
procedure TForm1.BitBtn2Click(Sender: TObjet);
begin
Timer1.Enabled := false;
lbTime.Visible := False;

ClrResult;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
m_Bridge.SendMessage('R');
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
m_Bridge := TCAN_Bridge.Creat(true,'COM1');

m_Node_Num := 4;
m_TimeOut := 60;

ClrResult;
end;

procedure TForm1.edTimeChange(Sender: TObject);
begin
m_TimeOut := StrToInt(edTime.Text);
end;

procedure TForm1.edNumChange(Sender: TObject);
begin
m_Node_Num := StrToInt(edNum.Text);
end


mahmola
ما هي المشكلة
و ما هي نوعية الجهاز الذي تستخدمه
أنا أقوم بتطوير برنامج شبيه لما تتكلم عنه
أعمل على جهاز اسمه Promag من gegatek
هل يمكنك توضيح المشكلة؟
hassson

مطلوب مساعده في كتابة هذا الكائن الخاص بمراقبة البورت
COM1

يقوم الكائن TCAN_Bridge بمراقبة المنفذ التسلسلي بشكل دائم وهو عبارة عن خيط تنفيذ مستقل يعمل
بشكل منفصل عن البرنامج وعند وصول رسالة على الشكل
(N:xx,rr)
حيث xx هو رقم العقده او جهاز التصويت و rr هو النتيجة يقوم باستدعاء الاجراء ADD Result مع البارمترات
rr,xx
والذي يقوم باضافة النتيجة الى متحولات النتائج الموجودة في البرنامج الرئيسي ويظهر النتائج الجديدة على الشاشة

هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.