窗体中的timer start后在一个触发事件中stop,然后再start,timer.tick事件就不执行了。
如题,我要写一个程序是,依次发送地址数据帧,返回该地址的数据内容。当超时5s未收到返回时,将重发该地址。如 发送0x00,返回0x01,再发送0x01,返回0x02,依次往后,发送0x09,返回0x0A。
若中间发送如0x05,5s后仍无返回数据的话,则重发0x05。
现有函数DataSend(Add)负责发送,DataReceived()是个触发函数,负责接收返回数据。
先在窗体中拉一个timer组件,new 一个timer1, timer1.interval=5000;
DataSend(Add)
{ send地址数据;
timer1.start();}
DataReceived(object send,e)
{ timer1.stop();
接收返回数据并显示在界面上;}
timer1_tick(object send,e)
{ DataSend(Add); }
这样写对不对,为什么这样写只在发第一条数据超时的时候会调用timer1_tick()重发,之后的数据发送后就不会了?
--------------------编程问答-------------------- 请设置
time1.AutoReset = true;
time1.Enabled = true; --------------------编程问答-------------------- 发少了,中间函数完整的应该是:
DataReceived(object send,e)
{ timer1.stop();
接收返回数据并显示在界面上;
Add++;
DataSend(Add);
}
--------------------编程问答-------------------- time1.Enabled = true;和 timer1.start();应该是等效的吧。
我用的是System.Windows.Forms.timer类,不是System.timer类,没有time1.AutoReset
--------------------编程问答-------------------- 自己顶一下
补充:.NET技术 , C#