Dreamine.PLC.Core 1.0.1
Dreamine.PLC.Core 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.PLC.Core.Devices.DefaultPlcAddressParser 클래스 참조sealed

더 자세히 ...

Dreamine.PLC.Core.Devices.DefaultPlcAddressParser에 대한 상속 다이어그램 :
Dreamine.PLC.Core.Devices.DefaultPlcAddressParser에 대한 협력 다이어그램:

Public 멤버 함수

PlcResult< PlcAddress > Parse (string text)
bool TryParse (string text, out PlcAddress address)

정적 Private 멤버 함수

static ? string FindDevicePrefix (string text)
static PlcDeviceType ConvertDeviceType (string devicePrefix)

정적 Private 속성

static readonly string[] KnownDevicePrefixes

상세한 설명

기본 PLC 주소 파서를 제공합니다.

DefaultPlcAddressParser.cs 파일의 15 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ ConvertDeviceType()

PlcDeviceType Dreamine.PLC.Core.Devices.DefaultPlcAddressParser.ConvertDeviceType ( string devicePrefix)
inlinestaticprivate

디바이스 접두사를 PLC 디바이스 타입으로 변환합니다.

매개변수
devicePrefix변환할 접두사입니다.
반환값
대응 타입이며 지원되지 않으면 Unknown입니다.

DefaultPlcAddressParser.cs 파일의 231 번째 라인에서 정의되었습니다.

232 {
233 return devicePrefix switch
234 {
235 "D" => PlcDeviceType.D,
236 "M" => PlcDeviceType.M,
237 "X" => PlcDeviceType.X,
238 "Y" => PlcDeviceType.Y,
239 "B" => PlcDeviceType.B,
240 "W" => PlcDeviceType.W,
241 "R" => PlcDeviceType.R,
242 "ZR" => PlcDeviceType.ZR,
243 _ => PlcDeviceType.Unknown
244 };
245 }

다음에 의해서 참조됨 : Parse().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FindDevicePrefix()

? string Dreamine.PLC.Core.Devices.DefaultPlcAddressParser.FindDevicePrefix ( string text)
inlinestaticprivate

알려진 디바이스 접두사 중 텍스트 시작과 일치하는 값을 찾습니다.

매개변수
text검사할 주소 텍스트입니다.
반환값
일치하는 접두사이며 없으면 null입니다.

DefaultPlcAddressParser.cs 파일의 194 번째 라인에서 정의되었습니다.

195 {
196 foreach (var prefix in KnownDevicePrefixes)
197 {
198 if (text.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
199 {
200 return prefix;
201 }
202 }
203
204 return null;
205 }

다음을 참조함 : KnownDevicePrefixes.

다음에 의해서 참조됨 : Parse().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Parse()

PlcResult< PlcAddress > Dreamine.PLC.Core.Devices.DefaultPlcAddressParser.Parse ( string text)
inline

디바이스 접두사, 오프셋 및 선택적 비트 오프셋으로 PLC 주소를 구문 분석합니다.

매개변수
textPLC 주소 텍스트입니다.
반환값
구문 분석된 주소 또는 실패 메시지입니다.

DefaultPlcAddressParser.cs 파일의 61 번째 라인에서 정의되었습니다.

62 {
63 if (string.IsNullOrWhiteSpace(text))
64 {
65 return PlcResult<PlcAddress>.Failure("The PLC address text must not be empty.");
66 }
67
68 var normalizedText = text.Trim().ToUpperInvariant();
69 var devicePrefix = FindDevicePrefix(normalizedText);
70
71 if (devicePrefix is null)
72 {
73 return PlcResult<PlcAddress>.Failure($"Unsupported PLC device prefix. Address: {text}");
74 }
75
76 var deviceType = ConvertDeviceType(devicePrefix);
77 if (deviceType == PlcDeviceType.Unknown)
78 {
79 return PlcResult<PlcAddress>.Failure($"Unknown PLC device type. Address: {text}");
80 }
81
82 var body = normalizedText[devicePrefix.Length..];
83 if (string.IsNullOrWhiteSpace(body))
84 {
85 return PlcResult<PlcAddress>.Failure($"PLC address offset is missing. Address: {text}");
86 }
87
88 var split = body.Split('.', StringSplitOptions.TrimEntries);
89 if (split.Length > 2)
90 {
91 return PlcResult<PlcAddress>.Failure($"Invalid PLC bit address format. Address: {text}");
92 }
93
94 if (!int.TryParse(split[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out var offset))
95 {
96 return PlcResult<PlcAddress>.Failure($"Invalid PLC address offset. Address: {text}");
97 }
98
99 if (offset < 0)
100 {
101 return PlcResult<PlcAddress>.Failure($"PLC address offset must be greater than or equal to zero. Address: {text}");
102 }
103
104 int? bitOffset = null;
105
106 if (split.Length == 2)
107 {
108 if (!int.TryParse(split[1], NumberStyles.Integer, CultureInfo.InvariantCulture, out var parsedBitOffset))
109 {
110 return PlcResult<PlcAddress>.Failure($"Invalid PLC bit offset. Address: {text}");
111 }
112
113 if (parsedBitOffset is < 0 or > 15)
114 {
115 return PlcResult<PlcAddress>.Failure($"PLC bit offset must be between 0 and 15. Address: {text}");
116 }
117
118 bitOffset = parsedBitOffset;
119 }
120
121 return PlcResult<PlcAddress>.Success(new PlcAddress(deviceType, offset, bitOffset));
122 }

다음을 참조함 : ConvertDeviceType(), FindDevicePrefix(), TryParse().

다음에 의해서 참조됨 : TryParse().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryParse()

bool Dreamine.PLC.Core.Devices.DefaultPlcAddressParser.TryParse ( string text,
out PlcAddress address )
inline

PLC 주소 텍스트의 구문 분석을 시도합니다.

매개변수
textPLC 주소 텍스트입니다.
address성공 시 구문 분석된 주소입니다.
반환값
성공하면 true입니다.

DefaultPlcAddressParser.cs 파일의 156 번째 라인에서 정의되었습니다.

157 {
158 var result = Parse(text);
159
160 if (!result.IsSuccess)
161 {
162 address = default;
163 return false;
164 }
165
166 address = result.Value;
167 return true;
168 }

다음을 참조함 : Parse().

다음에 의해서 참조됨 : Parse().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ KnownDevicePrefixes

readonly string [] Dreamine.PLC.Core.Devices.DefaultPlcAddressParser.KnownDevicePrefixes
staticprivate
초기값:
=
[
"ZR",
"D",
"M",
"X",
"Y",
"B",
"W",
"R"
]

Known Device Prefixes 값을 보관합니다.

DefaultPlcAddressParser.cs 파일의 25 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : FindDevicePrefix().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: