作者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)
推 chris70211:感謝>"< 你的程式我會好好仔細看看的^^ 01/08 13:52
→ chris70211:目前改成保持接收DATA然後根據設定的時間儲存資料 01/08 13:53
→ chris70211:並發送下一次的cmd 01/08 13:53
→ tsczx:如果是這樣,可以依據設定的時間到了,去接收資料>>儲存>>跑命 01/08 14:54
→ tsczx:令,這樣程式不用一直跑接收,然後又不做任何動作 01/08 14:55
推 chris70211:因為命令是根據接收資料來決定的 所以還是得跑>"< 01/08 21:48
※ 編輯: tsczx 來自: 114.27.125.68 (01/11 16:47)