Dreamine.PLC.Omron.Fins
1.0.1
Dreamine.PLC.Omron.Fins 산업 자동화 및 I/O 기능을 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
OmronFinsTcpPacket.cs
이 파일의 문서화 페이지로 가기
1
using
System.Text;
2
3
namespace
Dreamine.PLC.Omron.Fins.Protocol
;
4
13
public
static
class
OmronFinsTcpPacket
14
{
23
private
static
readonly
byte
[]
Signature
= Encoding.ASCII.GetBytes(
"FINS"
);
24
57
public
static
byte
[]
Wrap
(IReadOnlyList<byte> finsFrame)
58
{
59
ArgumentNullException.ThrowIfNull(finsFrame);
60
61
var packet =
new
byte
[16 + finsFrame.Count];
62
Buffer.BlockCopy(
Signature
, 0, packet, 0,
Signature
.Length);
63
OmronFinsEndian
.
WriteInt32
(packet, 4, 8 + finsFrame.Count);
64
OmronFinsEndian
.
WriteInt32
(packet, 8, 2);
65
OmronFinsEndian
.
WriteInt32
(packet, 12, 0);
66
67
for
(var index = 0; index < finsFrame.Count; index++)
68
{
69
packet[16 + index] = finsFrame[index];
70
}
71
72
return
packet;
73
}
74
107
public
static
byte
[]
Extract
(ReadOnlySpan<byte> packet)
108
{
109
if
(packet.Length < 16)
110
{
111
throw
new
InvalidOperationException($
"FINS/TCP packet is too short. Length={packet.Length}."
);
112
}
113
114
if
(packet[0] !=
Signature
[0] || packet[1] !=
Signature
[1] || packet[2] !=
Signature
[2] || packet[3] !=
Signature
[3])
115
{
116
throw
new
InvalidOperationException(
"Invalid FINS/TCP signature."
);
117
}
118
119
var errorCode =
OmronFinsEndian
.
ReadInt32
(packet, 12);
120
if
(errorCode != 0)
121
{
122
throw
new
InvalidOperationException($
"FINS/TCP error: 0x{errorCode:X8}."
);
123
}
124
125
return
packet[16..].ToArray();
126
}
127
}
Dreamine.PLC.Omron.Fins.Protocol
Definition
OmronFinsCommand.cs:1
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian
Definition
OmronFinsEndian.cs:12
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.WriteInt32
static void WriteInt32(Span< byte > buffer, int offset, int value)
Definition
OmronFinsEndian.cs:279
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.ReadInt32
static int ReadInt32(ReadOnlySpan< byte > buffer, int offset)
Definition
OmronFinsEndian.cs:143
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsTcpPacket
Definition
OmronFinsTcpPacket.cs:14
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsTcpPacket.Extract
static byte[] Extract(ReadOnlySpan< byte > packet)
Definition
OmronFinsTcpPacket.cs:107
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsTcpPacket.Wrap
static byte[] Wrap(IReadOnlyList< byte > finsFrame)
Definition
OmronFinsTcpPacket.cs:57
Dreamine.PLC.Omron.Fins.Protocol.OmronFinsTcpPacket.Signature
static readonly byte[] Signature
Definition
OmronFinsTcpPacket.cs:23
Protocol
OmronFinsTcpPacket.cs
다음에 의해 생성됨 :
1.17.0