MainMachine _IOMonitor.cs
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DeviceLibrary
{
partial class MainMachine
{
bool midinrun = false;
DateTime lastBtnUpPressTime = DateTime.MaxValue;
BtnActionE BtnAction = BtnActionE.None;
void ioMonitor()
{
var btnUP_L = IOValue(IO_Type.Mid_Up_Btn1).Equals(IO_VALUE.HIGH);
var btnUP_R = IOValue(IO_Type.Mid_Up_Btn2).Equals(IO_VALUE.HIGH);
var btnDown_L = IOValue(IO_Type.Mid_Down_Btn1).Equals(IO_VALUE.HIGH);
var btnDown_R = IOValue(IO_Type.Mid_Down_Btn2).Equals(IO_VALUE.HIGH);
var trueCount = 0;
trueCount += btnUP_L ? 1 : 0;
trueCount += btnUP_R ? 1 : 0;
trueCount += btnDown_L ? 1 : 0;
trueCount += btnDown_R ? 1 : 0;
if (lastBtnUpPressTime == DateTime.MaxValue && trueCount > 0)
{
lastBtnUpPressTime = DateTime.Now;
BtnAction = BtnActionE.None;
}
else if (lastBtnUpPressTime != DateTime.MaxValue && trueCount == 0)
{
lastBtnUpPressTime = DateTime.MaxValue;
BtnAction = BtnActionE.None;
}
else
{
var timediff = DateTime.Now - lastBtnUpPressTime;
if (timediff.TotalSeconds < 1 && trueCount == 2) {
if (btnUP_L && btnUP_R)
{
BtnAction = BtnActionE.Mid_Up;
}
else if (btnDown_L && btnDown_R)
{
BtnAction = BtnActionE.Mid_Down;
}
} else if (timediff.TotalSeconds > 3 && trueCount == 1) {
if (BtnAction == BtnActionE.None) {
if (btnUP_L)
{
BtnAction = BtnActionE.Left_IN;
} else if (btnUP_R)
{
BtnAction = BtnActionE.Right_IN;
}
}
}
}
if (!midinrun && BtnAction == BtnActionE.Mid_Up
&& IOValue(IO_Type.Left_Side_SafetyGrating).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Right_Side_SafetyGrating).Equals(IO_VALUE.HIGH)
)
{
midinrun = true;
IOMove(IO_Type.Mid_Up, IO_VALUE.HIGH);
IOMove(IO_Type.Mid_Down, IO_VALUE.LOW);
}
else if (!midinrun && BtnAction == BtnActionE.Mid_Down
&& IOValue(IO_Type.Left_Side_SafetyGrating).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Right_Side_SafetyGrating).Equals(IO_VALUE.HIGH))
{
midinrun = true;
IOMove(IO_Type.Mid_Up, IO_VALUE.LOW);
IOMove(IO_Type.Mid_Down, IO_VALUE.HIGH);
}
else if (midinrun && BtnAction == BtnActionE.None)
{
midinrun = false;
IOMove(IO_Type.Mid_Up, IO_VALUE.LOW);
IOMove(IO_Type.Mid_Down, IO_VALUE.LOW);
}
if (BtnAction == BtnActionE.Left_IN || BtnAction == BtnActionE.Right_IN) {
var side = BtnAction == BtnActionE.Left_IN ? InOutSideE.Left : InOutSideE.Right;
var ld = InOutDevice.InOutDeviceList[side];
if (ld.CanIn(out string msg))
{
ld.MoveInfo.NewMove(MoveStep.In01);
ld.MoveInfo.log("检测到手动按钮信号,开始入库流程");
ld.CurrnetDirection = InOutDirectionE.IN;
return;
}
else {
Msg.add(ld.Name + msg, MsgLevel.info);
}
}
}
enum BtnActionE
{
None,
Mid_Up,
Mid_Down,
Left_IN,
Right_IN
}
}
}