objselected_frame_stp_wt is the frame we selected from Transmitter listBox dtimeout is our predetermined timeout tsSend_Time is a timespan object calculated by a timer objFrame and objAck are objects from class clssSqaure, responsible for creating and moving the primitives code: if (objselected_frame_stp_wt != null) { if (tsSend_Time.Seconds > dtimeout)//send time exceeded predetermined timeout { if (bsend_file) //Rx didn't receive Frame lbl_receiver.Text = "Timeout"; else //Tx didn't receive Acknowledgment lbl_sender.Text = "Timeout"; timer1.Enabled = false;//stop sending } if (bsend_file)//Frame is being sent to Rx { if (LBx_Receiver.Items.Contains(objselected_frame_stp_wt)) lbl_sender.Text = "Resending " + objselected_frame_stp_wt.ToString(); else lbl_sender.Text = "Sending " + objselected_frame_stp_wt.ToString(); if ((objFrame.Fxpos + dlen) > nwidth)//frame arrived to Rx { if (!LBx_Receiver.Items.Contains(objselected_frame_stp_wt)) { LBx_Receiver.Items.Add(objselected_frame_stp_wt); } lbl_sender.Text = "awaiting acknowledgement"; lbl_receiver.Text = "sending acknowledgement"; bsend_file = false; dtstart = DateTime.Now; objAck = new clssSqaure(nwidth, -20, -1, color_yellow); lst_clssSqaure.Add(objAck); } objFrame.Fxpos += fspeed * objFrame.Fvec_X; } else//Ack is being sent to Tx { if (((objAck.Fxpos - dlen + 10) < (nwidth * -1)))//Ack arrived to Tx { lbl_sender.Text = "Acknowledgement received"; if (LBx_Receiver.Items.Contains(objselected_frame_stp_wt)) { LBx_Sender.Items.Remove(objselected_frame_stp_wt); } timer1.Enabled = false; bsend_file = true; } objAck.Fxpos += fspeed * objAck.Fvec_X; } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)