ElectricGripper.cs
3.2 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
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class ElectricGripper
{
private int subType = 0;
private Neotel.Rmaxis axis;
public Enum GripperType = GripperTypeE.None;
public bool OpenPort(string port)
{
axis = new Neotel.Rmaxis();
bool rtn = axis.OpenPort(port);
//var s = "版本号\r\n" + axis.GetVersion();
return rtn;
}
public void ClosePort() {
axis.ClosePort();
}
public void Clamp(StoreMoveInfo moveInfo = null)
{
GripperType = GripperTypeE.Gripper;
if (!IsBusy)
{
axis.Push(30, 7, 500);
if (moveInfo!=null)
moveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
}
if (moveInfo != null)
moveInfo.WaitList.Add(WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitAction)));
}
public bool Release(StoreMoveInfo moveInfo = null)
{
GripperType = GripperTypeE.Release;
if (!IsBusy)
{
axis.GoHome();
if (moveInfo != null)
moveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
return true;
}
else
{
if (moveInfo != null)
moveInfo.WaitList.Add(WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitAction)));
return false;
}
}
public void HomeReset(StoreMoveInfo moveInfo = null) {
GripperType = GripperTypeE.Reset;
//if (!IsBusy)
//{
axis.ResetError();
axis.GoHome();
// }
//if (moveInfo != null)
// moveInfo.WaitList.Add(WaitResultInfo.WaitAction(new Func<WaitResultInfo, bool>(WaitAction)));
}
public bool IsBusy {
get {
return !axis.IsReached;
}
}
public bool IsClamp {
get
{
return !axis.IsPushEmpty;
}
}
bool WaitAction(WaitResultInfo w)
{
if (this.IsBusy)
return false;
if (this.GripperType.Equals(ElectricGripper.GripperTypeE.Gripper))
{
if (this.IsClamp)
return true;
else
{
this.Clamp();
return false; ;
}
}
else if (this.GripperType.Equals(ElectricGripper.GripperTypeE.Release))
{
return this.Release();
}
else if (this.GripperType.Equals(ElectricGripper.GripperTypeE.Reset))
{
return this.IsBusy;
}
else {
return true;
}
}
public enum GripperTypeE
{
Gripper,
Release,
Reset,
None
}
}
}