作者tsczx (Frank)
看板C_Sharp
标题Re: [问题] 用TIMER定时发送资料
时间Tue Jan 8 11:53:29 2013
这是你回覆的需求
BUTTON1~主要动作
{
接收资料
232发送命令同时进行计时&设定时间(例如三秒)
到达设定时间(三秒)
将第三秒撷取到的这笔资料再透过232发送出去
}
BUTTON2~计时
{
count++
if (count==3){关闭计时器}
}
1.按Btn1,接收资料void()
2.C#会等跑完接收void()完才跑发送232的发送命令等待3秒void()
所以这时候你已经收到资料了,但是时间不一定,看机器速度,资料库,跟网路
,因此"第三秒"撷取到的这笔资料这个功能可以不用
因为接收资料如果花五秒,会等五秒後才跑下一个动作
你可以做(简略写)
Btn_Click()
{
if( GetData() ) //花5秒抓资料,这里就会跑5秒
{
SendData(); //花3秒送资料,这里就会跑3秒
}
}
bool GetData()
{
if(接收资料没错)//例如DataTable.Rows.Count>0
return true;
else
return false;
}
void SendData()
{
发送资料;
}
当然这是按Btn才会执行,看字面你是想要让他自动执行,所以把
GetData 跟 SendData 放在 Timer里面,
Btn_Click()
{
Timer.Enabled=true;
}
Btn2_Click()
{
Timer.Enabled=false;
}
Timer_Tick
{
if( GetData() )
{
SendData();
}
}
Btn按下去是去启动Timer
设定Btn2去停止自动抓送资料
至於Timer间隔多久执行一次,你可以看一下你的资料,如果很少,Timer.Interval
可以设定短一点(2000=2秒),但是你还要传送资料,建议你可以设久一点
以上互相交流
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.109.229
※ 编辑: tsczx 来自: 203.70.109.229 (01/08 11:54)
1F:推 chris70211:感谢>"< 你的程式我会好好仔细看看的^^ 01/08 13:52
2F:→ chris70211:目前改成保持接收DATA然後根据设定的时间储存资料 01/08 13:53
3F:→ chris70211:并发送下一次的cmd 01/08 13:53
4F:→ tsczx:如果是这样,可以依据设定的时间到了,去接收资料>>储存>>跑命 01/08 14:54
5F:→ tsczx:令,这样程式不用一直跑接收,然後又不做任何动作 01/08 14:55
6F:推 chris70211:因为命令是根据接收资料来决定的 所以还是得跑>"< 01/08 21:48
※ 编辑: tsczx 来自: 114.27.125.68 (01/11 16:47)