Dreamine.PLC.Core
1.0.1
Dreamine.PLC.Core 산업 자동화 및 I/O 기능을 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
PlcSimulatorProtocol.cs
이 파일의 문서화 페이지로 가기
1
using
System.Globalization;
2
3
namespace
Dreamine.PLC.Core.Simulation
;
4
13
public
static
class
PlcSimulatorProtocol
14
{
23
public
const
string
ReadBits
=
"READ_BITS"
;
24
33
public
const
string
ReadWords
=
"READ_WORDS"
;
34
43
public
const
string
WriteBits
=
"WRITE_BITS"
;
44
53
public
const
string
WriteWords
=
"WRITE_WORDS"
;
54
79
public
static
string
Ok
(
string
? payload =
null
)
80
{
81
return
string
.IsNullOrWhiteSpace(payload) ?
"OK"
: $
"OK {payload}"
;
82
}
83
108
public
static
string
Error
(
string
message)
109
{
110
return
$
"ERR {message.Replace('\r', ' ').Replace('\n', ' ')}"
;
111
}
112
137
public
static
string
FormatBits
(IEnumerable<bool> values)
138
{
139
return
string
.Join(
','
, values.Select(x => x ?
"1"
:
"0"
));
140
}
141
166
public
static
string
FormatWords
(IEnumerable<short> values)
167
{
168
return
string
.Join(
','
, values.Select(x => x.ToString(CultureInfo.InvariantCulture)));
169
}
170
203
public
static
bool
[]
ParseBits
(
string
payload)
204
{
205
return
SplitValues
(payload)
206
.Select(
ParseBit
)
207
.ToArray();
208
}
209
250
public
static
short
[]
ParseWords
(
string
payload)
251
{
252
return
SplitValues
(payload)
253
.Select(x =>
short
.Parse(x, CultureInfo.InvariantCulture))
254
.ToArray();
255
}
256
289
public
static
string
ReadOkPayload
(
string
line)
290
{
291
if
(line.StartsWith(
"OK"
, StringComparison.OrdinalIgnoreCase))
292
{
293
return
line.Length > 2 ? line[3..].Trim() :
string
.Empty;
294
}
295
296
if
(line.StartsWith(
"ERR"
, StringComparison.OrdinalIgnoreCase))
297
{
298
var message = line.Length > 3 ? line[4..].Trim() :
"PLC simulator error."
;
299
throw
new
InvalidOperationException(message);
300
}
301
302
throw
new
InvalidOperationException($
"Invalid PLC simulator response: {line}"
);
303
}
304
329
private
static
string
[]
SplitValues
(
string
payload)
330
{
331
return
payload.Split(
','
, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
332
}
333
366
private
static
bool
ParseBit
(
string
text)
367
{
368
return
text
switch
369
{
370
"1"
=>
true
,
371
"0"
=>
false
,
372
_ when
bool
.TryParse(text, out var value) => value,
373
_ =>
throw
new
FormatException($
"Invalid bit value: {text}"
)
374
};
375
}
376
}
Dreamine.PLC.Core.Simulation
Definition
PlcSimulatorClientOptions.cs:1
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol
Definition
PlcSimulatorProtocol.cs:14
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.FormatWords
static string FormatWords(IEnumerable< short > values)
Definition
PlcSimulatorProtocol.cs:166
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ReadBits
const string ReadBits
Definition
PlcSimulatorProtocol.cs:23
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ParseBits
static bool[] ParseBits(string payload)
Definition
PlcSimulatorProtocol.cs:203
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ReadOkPayload
static string ReadOkPayload(string line)
Definition
PlcSimulatorProtocol.cs:289
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.FormatBits
static string FormatBits(IEnumerable< bool > values)
Definition
PlcSimulatorProtocol.cs:137
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.WriteWords
const string WriteWords
Definition
PlcSimulatorProtocol.cs:53
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.Ok
static string Ok(string? payload=null)
Definition
PlcSimulatorProtocol.cs:79
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.SplitValues
static string[] SplitValues(string payload)
Definition
PlcSimulatorProtocol.cs:329
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.WriteBits
const string WriteBits
Definition
PlcSimulatorProtocol.cs:43
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ParseWords
static short[] ParseWords(string payload)
Definition
PlcSimulatorProtocol.cs:250
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ReadWords
const string ReadWords
Definition
PlcSimulatorProtocol.cs:33
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.ParseBit
static bool ParseBit(string text)
Definition
PlcSimulatorProtocol.cs:366
Dreamine.PLC.Core.Simulation.PlcSimulatorProtocol.Error
static string Error(string message)
Definition
PlcSimulatorProtocol.cs:108
Simulation
PlcSimulatorProtocol.cs
다음에 의해 생성됨 :
1.17.0