在特定时间后执行计时器滴答中的确切功能

时间:2014-01-16 07:12:08

标签: c# timer

我正在开发一个项目,我正在使用我的串口。 当我打开我的串口后,我将不得不发送4个请求。因此发送请求我的代码是:

private string ByteArrayToHexString(byte[] data)
        {
            StringBuilder sb = new StringBuilder(data.Length * 3);
            foreach (byte b in data)
                sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
            return sb.ToString().ToUpper();
        }

        private void senddata1(String str)
        {

                // Convert the user's string of hex digits (ex: B4 CA E2) to a byte array
                byte[] data = HexStringToByteArray(str);

                // Send the binary data out the port
                comport.Write(data, 0, data.Length);



        }

此函数将创建一个发送数据的方法。 在计时器刻度事件我发送此数据:

 private void timer1_Tick(object sender, EventArgs e)
        {
//here I'm sending my data in a timer
 senddata1(s1);
 senddata1(s2);
 senddata1(s3);
 senddata1(s4);

}

注意:每个senddata1()函数系统都会收到响应。

所以问题是当我发送数据时我没有收到响应,因为系统无法读取所有senddata。 我希望以某种方式管理我的程序,以便每250秒后发送一次数据。 像这样:

SendData1(s1);
get response from the system
senddata1(s2);
get response from the system

正在处理响应:

   comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

有没有办法管理我的程序。 请分享您的意见。

1 个答案:

答案 0 :(得分:0)

如果您想要在系统响应上调用senddata1函数,则应使用事件来了解响应。 然后使用指定的输入(s1,s2,...)调用senddata1,该输入应该在每个响应上给予函数。

(如果我没有意识到你的要求,请告诉我。请在评论中说明)