... | ... | @@ -406,7 +406,7 @@ Task<int> cmdTask = SendRecvCommandAsync(client, ipAddr, cmd, ctag, sessionID); |
|
|
Task timeoutTask = Task.Delay(timeoutMillis);
|
|
|
```
|
|
|
* ENC로 부터 PDU를 전송받아 calla_id로 변환된 값을 반환하는 Task인 SendRecvCommandAsync()를 cmdTask에 저장한다.
|
|
|
* 현재 Method에서 매개변수로 받은 값인 timeoutMillis(기본 값:10000) 만큼 Delay 하는 Task를 timeoutTask에 저장한다.
|
|
|
* 현재 Method에서 매개변수로 받은 값인 timeoutMillis(기본값:10000) 만큼 Delay 하는 Task를 timeoutTask에 저장한다.
|
|
|
|
|
|
---
|
|
|
|
... | ... | @@ -604,7 +604,7 @@ string myCmd = "%%" + cmd; |
|
|
int calla_id = -1;
|
|
|
```
|
|
|
* 전송할 명령어 앞에 기본적으로 "%%"를 추가한다. (ex. %%TEST)
|
|
|
* calla_id를 –1로 초기화해준다. (Invalid = -1)
|
|
|
* calla_id를 -1로 초기화해준다. (Invalid = -1)
|
|
|
|
|
|
---
|
|
|
|
... | ... | @@ -644,7 +644,7 @@ Array.Clear(paddedCmdBytes, 0, paddedCmdBytes.Length); |
|
|
Array.Copy(cmdBytes, paddedCmdBytes, cmdBytes.Length);
|
|
|
```
|
|
|
* 명령어 크기만큼의 byte 배열(paddedCmdBytes)을 생성한다.
|
|
|
* paddedCmdBytes 배열의 모든 값을 기본 값인 0으로 초기화한다.
|
|
|
* paddedCmdBytes 배열의 모든 값을 기본값인 0으로 초기화한다.
|
|
|
* cmdBytes 배열 전체를 paddedCmdBytes에 복사한다. paddedCmdBytes에는 전송할 Payload를 저장하고 있다.
|
|
|
|
|
|
---
|
... | ... | @@ -692,7 +692,7 @@ Array.Reverse(checksumBytes); |
|
|
Array.Copy(checksumBytes, 0, sendBuffer, (int)AppConst.PduHeader.checksun, checksumBytes.Length);
|
|
|
```
|
|
|
* paddedCmdBytes에 대한 CRC 값을 checksum을 저장한다.
|
|
|
* checksum을 byte 로 Convert 해서 checksumBytes에 저장한다.
|
|
|
* checksum을 byte로 Convert 해서 checksumBytes에 저장한다.
|
|
|
* checksumBytesd를 뒤집어서 sendBuffer의 6~7번 요소에 복사한다. (Endian 변환)
|
|
|
|
|
|

|
... | ... | @@ -879,9 +879,9 @@ while (remainLength > 0) |
|
|
destIndex += readAmount;
|
|
|
}
|
|
|
```
|
|
|
* 전송받은 후 남은 데이터의 길이를 확인할 변수인 remainLength에 Payload의 길이를 저장하고, 현재까지 전송받은 데이터의 길이를 확인할 변수인 destIndex에 0을 초기화 해준다.
|
|
|
* 전송받은 후 남은 데이터의 길이를 확인할 변수인 remainLength에 Payload의 길이를 저장하고, 현재까지 전송받은 데이터의 길이를 확인할 변수인 destIndex에 0을 초기화해준다.
|
|
|
* 이 전에 ReadAsync()를 통해 Header 부분은 전송을 받았으므로, Body 부분부터 전송을 받을 것이다. 전송받은 index(destIndex)부터 남은 데이터의 길이(remainLength)만큼의 byte 데이터를 비동기 처리로 전송받는다.
|
|
|
* 한 번에 많은 데이터를 전송받지 못 하므로 readAmount에 전송받은 데이터의 길이를 저장하여 남은 길이를 확인할 것이다.
|
|
|
* 한 번에 많은 데이터를 전송받지 못하므로 readAmount에 전송받은 데이터의 길이를 저장하여 남은 길이를 확인할 것이다.
|
|
|
* 남은 데이터의 길이(remainLength)가 있음에도 전송받은 데이터(readAmount)가 없으면 오류로 판단하여 -1을 반환한다.
|
|
|
* 남은 데이터의 길이(remainLength)에서 전송받은 데이터의 길이(readAmount)를 제외한다. 또한, 다음에 전송받은 데이터를 이어서 저장하기 위해 recvBuffer의 index를 확인하는 변수인 destIndex에 전송받은 데이터의 길이(readAmount)를 더해준다.
|
|
|
|
... | ... | |