PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
老柏(第四)
Senior Member
 
老柏(第四)的大頭照
 

加入日期: Mar 2012
您的住址: 地球
文章: 1,303
其實我的想法是這屬於在計時迴圈做等待流程


現在是狀態1或3,"等"到條件成立後進入狀態2或0,那個"等"是等外部機械運作完成,所以每次迴圈去讀取外部機械運作狀態旗標

另外是狀態0或2,等XX秒後就進入狀態1或3,那個"等"是屬於計時,這時我的做法是經歷(XX秒*100)次(我的計時器是每10ms啟動一次),用個全域變數每次迴圈+1直到大於(XX秒*100)次,這樣次數經過後就等於經過xx秒(雖然不精準,但是沒差啦)

然後機器就在0->1->2->3->0 狀態無限迴圈,機器就做1休1做1休1這樣,大概就這樣的概念
引用:
作者計時迴圈
if (aa==3) //第1件事
{
讀取機器旗標
if ( 機器做動完成)
aa=0;
}
//----------------------------------
else if (aa==2) //第2件事
{
bb++;
if ( bb>某上限)
{
命令機器動;
aa=3;
bb=0;
}
}
//----------------------------------
else if (aa==1) //第3件事
{
讀取機器旗標
if ( 機器做動完成)
aa=2;
}
//----------------------------------
else if (aa==0) //第4件事
{
bb++;
if ( bb > 某上限)
{
命令機器動
aa=1;
bb=0;
}
}
     
      
__________________
[/url]
老柏                 老柏(第二)

老柏(第三)              老柏(第四)

此文章於 2016-05-12 09:40 AM 被 老柏(第四) 編輯.
舊 2016-05-12, 09:32 AM #11
回應時引用此文章
老柏(第四)離線中  
misman+++
*停權中*
 

加入日期: Apr 2015
文章: 1,577
引用:
作者老柏(第四)
想問一下下面這個程式有沒有可能造成二次觸發
我想在四種狀態下做4種不一樣的事,4種狀態輪流切換

例如:
全域變數 int aa=0




這樣寫應該不會在一次迴圈中同時觸發兩件事吧???


改成用case呢??
 
舊 2016-05-12, 10:49 AM #12
回應時引用此文章
misman+++離線中  
micall.lee
*停權中*
 
micall.lee的大頭照
 

加入日期: Jul 2013
文章: 331
引用:
作者老柏(第四)
其實我的想法是這屬於在計時迴圈做等待流程


現在是狀態1或3,"等"到條件成立後進入狀態2或0,那個"等"是等外部機械運作完成,所以每次迴圈去讀取外部機械運作狀態旗標

另外是狀態0或2,等XX秒後就進入狀態1或3,那個"等"是屬於計時,這時我的做法是經歷(XX秒*100)次(我的計時器是每10ms啟動一次),用個全域變數每次迴圈+1直到大於(XX秒*100)次,這樣次數經過後就等於經過xx秒(雖然不精準,但是沒差啦)

然後機器就在0->1->2->3->0 狀態無限迴圈,機器就做1休1做1休1這樣,大概就這樣的概念

我總覺得你弄得很複雜

應該是以一個計時器為主,定時判斷機器狀況,然後透過 switch case 去挑出一個合適的狀態

這樣的程式比較好維護吧?
舊 2016-05-12, 11:02 AM #13
回應時引用此文章
micall.lee離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是01:47 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2026。