-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWebSocketService.cs
64 lines (54 loc) · 1.76 KB
/
WebSocketService.cs
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
using System;
using System.Collections.Generic;
using System.Text;
namespace NanoPanel
{
class WebSocketService
{
WebSocketServer webSocketServer;
AnalogPinState _analogPinState;
DigitalPinState _digitalPinState;
public AnalogPinState AnalogPinState
{
get => _analogPinState;
set
{
if(_analogPinState is not null)
{
_analogPinState.AnalogPinChanged -= _analogPinState_AnalogPinChanged;
}
_analogPinState = value;
_analogPinState.AnalogPinChanged += _analogPinState_AnalogPinChanged;
}
}
public DigitalPinState DigitalPinState
{
get => _digitalPinState;
set
{
if(_digitalPinState is not null)
{
_digitalPinState.DigitalPinChanged -= _digitalPinState_DigitalPinChanged;
}
_digitalPinState = value;
_digitalPinState.DigitalPinChanged += _digitalPinState_DigitalPinChanged;
}
}
private void _digitalPinState_DigitalPinChanged(object sender, DigitalPinChangedArgs e)
{
byte[] data = { 2, (byte)e.pin, e.next ? 1 : 0 };
webSocketServer.Send(data);
}
private void _analogPinState_AnalogPinChanged(object sender, AnalogPinChangedArgs e)
{
List<byte> data = new() { 1, (byte)e.pin };
data.AddRange(BitConverter.GetBytes(e.next));
webSocketServer.Send(data.ToArray());
}
public WebSocketService()
{
webSocketServer = new();
webSocketServer.Start();
}
}
}