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

더 자세히 ...

Public 멤버 함수

PlcResult< byte[]> ExtractPayload (IReadOnlyList< byte > frame)
PlcResult< bool[]> ParseBits (IReadOnlyList< byte > payload, int count)
PlcResult< short[]> ParseWords (IReadOnlyList< byte > payload, int count)

상세한 설명

Omron FINS 메모리 영역 응답을 구문 분석합니다.

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

멤버 함수 문서화

◆ ExtractPayload()

PlcResult< byte[]> Dreamine.PLC.Omron.Fins.Protocol.OmronFinsResponseParser.ExtractPayload ( IReadOnlyList< byte > frame)
inline

FINS 응답 프레임을 검증하고 페이로드 바이트를 추출합니다.

매개변수
frame검사할 FINS 응답 프레임입니다.
반환값
추출된 페이로드 또는 프레임·종료 코드 오류를 포함하는 결과입니다.
예외
ArgumentNullExceptionframenull일 때 발생합니다.

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

48 {
49 ArgumentNullException.ThrowIfNull(frame);
50
51 if (frame.Count < 14)
52 {
53 return PlcResult<byte[]>.Failure($"The FINS response frame is too short. Length={frame.Count}.");
54 }
55
56 var buffer = frame as byte[] ?? frame.ToArray();
57 var endCode = OmronFinsEndian.ReadUInt16(buffer, 12);
58 if (endCode != 0)
59 {
60 return PlcResult<byte[]>.Failure($"FINS end code indicates failure: 0x{endCode:X4}.", endCode);
61 }
62
63 return PlcResult<byte[]>.Success(buffer[14..]);
64 }

다음을 참조함 : Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.ReadUInt16().

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

◆ ParseBits()

PlcResult< bool[]> Dreamine.PLC.Omron.Fins.Protocol.OmronFinsResponseParser.ParseBits ( IReadOnlyList< byte > payload,
int count )
inline

FINS 페이로드 바이트에서 비트 값을 구문 분석합니다.

매개변수
payload구문 분석할 페이로드 바이트입니다.
count기대하는 비트 수입니다.
반환값
구문 분석된 비트 값 또는 길이 오류를 포함하는 결과입니다.
예외
ArgumentNullExceptionpayloadnull일 때 발생합니다.

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

107 {
108 ArgumentNullException.ThrowIfNull(payload);
109
110 if (payload.Count < count)
111 {
112 return PlcResult<bool[]>.Failure($"The FINS bit payload is too short. Expected={count}, Actual={payload.Count}.");
113 }
114
115 var values = new bool[count];
116 for (var index = 0; index < count; index++)
117 {
118 values[index] = payload[index] != 0;
119 }
120
121 return PlcResult<bool[]>.Success(values);
122 }

◆ ParseWords()

PlcResult< short[]> Dreamine.PLC.Omron.Fins.Protocol.OmronFinsResponseParser.ParseWords ( IReadOnlyList< byte > payload,
int count )
inline

FINS 페이로드 바이트에서 빅 엔디언 워드 값을 구문 분석합니다.

매개변수
payload구문 분석할 페이로드 바이트입니다.
count기대하는 워드 수입니다.
반환값
구문 분석된 워드 값 또는 길이 오류를 포함하는 결과입니다.
예외
ArgumentNullExceptionpayloadnull일 때 발생합니다.
OverflowExceptioncount 에 2를 곱한 값이 int 범위를 벗어날 때 발생합니다.

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

173 {
174 ArgumentNullException.ThrowIfNull(payload);
175
176 var expectedLength = checked(count * 2);
177 if (payload.Count < expectedLength)
178 {
179 return PlcResult<short[]>.Failure($"The FINS word payload is too short. Expected={expectedLength}, Actual={payload.Count}.");
180 }
181
182 var buffer = payload as byte[] ?? payload.ToArray();
183 var values = new short[count];
184 for (var index = 0; index < count; index++)
185 {
186 values[index] = OmronFinsEndian.ReadInt16(buffer, index * 2);
187 }
188
189 return PlcResult<short[]>.Success(values);
190 }

다음을 참조함 : Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.ReadInt16().

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

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