Search code examples
c#.netrfid

C# repeat button action


I'm developing an app for a RFID reader. I have a button with the following action:

private void btnWrite_Click(object sender, EventArgs e)
        {
            this.CheckPort = true;
            this.DetectCOMPort();
            bool readerOK = this.IsReaderConnected(this.lblCom.Text);
            bool flag = !readerOK;
            if (flag)
            {
                this.CheckPort = true;
                this.DetectCOMPort();
            }
            else
            {
                byte[] raspunsCitire = this.CitesteTag(this.lblCom.Text);
                flag = raspunsCitire == null;
                if (flag)
                {
                    MessageBox.Show("The label couldn't be read!");
                }
                else
                {
                    string scrisInTag = this.FormateazaCitire(raspunsCitire);
                    string[] campuriScrise = this.DecompileazaMesaj(scrisInTag, '|');
                    this.btnValid.Enabled = true;
                    this.txtEvenim.Enabled = true;
                    this.txtEvenim.Text = campuriScrise[0];
                    this.txtNume.Enabled = true;
                    this.txtNume.Text = campuriScrise[1];
                    this.txtPrenume.Enabled = true;
                    this.txtPrenume.Text = campuriScrise[2];
                    this.txtComp.Enabled = true;
                    this.txtComp.Text = campuriScrise[3];
                    this.txtFunc.Enabled = true;
                    this.txtFunc.Text = campuriScrise[4];
                    this.txtTit.Enabled = true;
                    this.txtTit.Text = campuriScrise[5];
                    this.Refresh();
                }
            }
        }

What I want is the reading of the label to repeat every 2 seconds instead of displaying the MessageBox.Show("The label couldn't be read!");. For the other case, when a label it's read I want this process to stop for let's say 20 seconds and after 20 seconds to start reading again at avery 2 seconds. It is possible to do that somehow? Thank you in advance!


Solution

  • Have you looked into timer control?

    Timer timer = new Timer();
    
    timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called
    timer.Interval = (1000) * (10);             // Timer will tick evert 10 seconds
    timer.Enabled = true;                       // Enable the timer
    timer.Start();