-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathForm1.cs
More file actions
102 lines (89 loc) · 3.5 KB
/
Copy pathForm1.cs
File metadata and controls
102 lines (89 loc) · 3.5 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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OPCCommunication
{
public partial class Form1 : Form
{
private Opc.Da.Server server = null;
private OpcCom.Factory factor = new OpcCom.Factory();
private Opc.Da.Item[] items;
private Opc.Da.Subscription group;
private Opc.IRequest req;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
OpcCom.ServerEnumerator serverEnumerator = new OpcCom.ServerEnumerator();
Opc.Server[] servers = serverEnumerator.GetAvailableServers(Opc.Specification.COM_DA_30);
listBox1.Items.Clear();
foreach (Opc.Server tmp in servers)
listBox1.Items.Add(tmp.Url.ToString());
}
private void button1_Click(object sender, EventArgs e)
{
if ((server != null) && (server.IsConnected))
server.Disconnect();
if (listBox1.SelectedItems.Count != 0)
{
Opc.URL url = new Opc.URL(listBox1.SelectedItem.ToString());
server = new Opc.Da.Server(factor, null);
server.Connect(url, new Opc.ConnectData(new System.Net.NetworkCredential()));
Opc.Da.SubscriptionState subscriptionState = new Opc.Da.SubscriptionState();
group = (Opc.Da.Subscription)server.CreateSubscription(subscriptionState);
items = new Opc.Da.Item[2];
items[0] = new Opc.Da.Item();
items[0].ItemName = "Bucket Brigade.Int1";
items[1] = new Opc.Da.Item();
items[1].ItemName = "Bucket Brigade.Int2";
items = group.AddItems(items);
}
}
private void button2_Click(object sender, EventArgs e)
{
Opc.Da.ItemValue[] itemValues = new Opc.Da.ItemValue[group.Items.Count()];
Random random = new Random();
for (int i = 0; i < group.Items.Count(); i++)
{
Opc.Da.ItemValue itemValue = new Opc.Da.ItemValue(group.Items[i].ItemName);
itemValue.ItemPath = group.Items[i].ItemPath;
itemValue.ServerHandle = group.Items[i].ServerHandle;
itemValue.Value = random.Next(0, 100);
itemValues[i] = itemValue;
}
group.Write(itemValues, 1, WriteCompleteCallback, out req);
}
private void button3_Click(object sender, EventArgs e)
{
group.Read(group.Items, 0, ReadCompleteCallback, out req);
}
private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[] results)
{
foreach (Opc.Da.ItemValueResult readResult in results)
{
listBox2.BeginInvoke((MethodInvoker)delegate
{
listBox2.Items.Insert(0, readResult.Value);
});
}
}
private void WriteCompleteCallback(object clientHandle, Opc.IdentifiedResult[] results)
{
foreach (Opc.IdentifiedResult writeResult in results)
{
listBox2.BeginInvoke((MethodInvoker)delegate
{
listBox2.Items.Insert(0, writeResult.ResultID);
});
}
}
}
}