List<int> list = new List<int>() { 1,11, 2,3, 4,5, 6,22, 7, 8,9,10 };//產品:雙數為ng 單數為ok
bool a=false;//傳感器信號,true為有產品過來了,false無產品
int i = 0;
bool temp = false;
Task.Run(() =>
{
while (true)
{
//讀取傳感器信號,a默認是沒有產品的所以為false
if (!a) temp = true;
/*這里的判斷是為了一個產品只進入一次。如果產品停留在傳感器位置一直不動
* 就會導致傳感器的狀態一直為true。temp是為了記入產品與產品的間隔,也就是a的false狀態
*/
if (a && temp)
{
if (list.Count-1 == i) i=0;
temp = false;
if (list[i]%2 == 0)//如果產品為NG
{
//打開吹氣IO點位500ms后再關閉吹氣io
Console.WriteLine(list[i] + " --吹氣中");
Thread.Sleep(500);
Console.WriteLine(list[i] + " --關閉吹氣");
}
else Console.WriteLine("OK品"+ list[i]);
i++;
}
}
});
//下面是模擬io信號
while (true)
{
a = true;
Thread.Sleep(50);//產品經過感應器的時間
a = false;
Thread.Sleep(5);//產品與產品之間的間隔時間(也就是傳感器沒有感應到產品的時間)
}
有不對的地方或者是有更好的方法,希望大家能給出建議