Re: [問題] 用TIMER定時發送資料

看板C_Sharp (C#)作者 (Frank)時間12年前 (2013/01/08 11:53), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串2/2 (看更多)
這是你回覆的需求 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)

01/08 13:52, , 1F
感謝>"< 你的程式我會好好仔細看看的^^
01/08 13:52, 1F

01/08 13:53, , 2F
目前改成保持接收DATA然後根據設定的時間儲存資料
01/08 13:53, 2F

01/08 13:53, , 3F
並發送下一次的cmd
01/08 13:53, 3F

01/08 14:54, , 4F
如果是這樣,可以依據設定的時間到了,去接收資料>>儲存>>跑命
01/08 14:54, 4F

01/08 14:55, , 5F
令,這樣程式不用一直跑接收,然後又不做任何動作
01/08 14:55, 5F

01/08 21:48, , 6F
因為命令是根據接收資料來決定的 所以還是得跑>"<
01/08 21:48, 6F
※ 編輯: tsczx 來自: 114.27.125.68 (01/11 16:47)
文章代碼(AID): #1GwvX4Ho (C_Sharp)
文章代碼(AID): #1GwvX4Ho (C_Sharp)