사용자 정의 통신
사용자가 직접 통신 프로토콜을 정의하여 통신하는 동작입니다. 시리얼 통신, TCP, UDP, 웹소켓, 공유 메모리, 블루투스를 사용하여 통신할 수 있습니다.

[사용자 정의 통신 선택]
사용할 사용자 정의 통신을 선택합니다.


[명령]
사용할 명령을 선택합니다.

- 보내기 : 설정한 데이터 프레임을 송신합니다.
- 받기 : 데이터를 수신합니다.
[수신 완료]
수신 완료 변수를 선택합니다. 데이터 수신이 완료되면 해당 변수가 true로 변경됩니다. [명령]이 “받기”인 경우에만 표시됩니다.

[프레임]
보내거나 받을 데이터 프레임을 구성합니다. 프레임은 아래와 같은 역할을 합니다.
- 데이터를 보낼때
- 보낼 데이터를 구성합니다.
- 상수, 변수, 무결성 검사 데이터를 포함할 수 있습니다.
- 변수가 포함된 경우, 보내는 시점의 변수 값이 사용됩니다.
- 무결성 검사 데이터가 포함된 경우, 보내는 데이터의 무결성을 검사하고 계산 결과를 프레임에 포함합니다.
- 데이터를 받을때
- 받은 데이터와 프레임 데이터를 비교하여 일치하는지 체크합니다.
- 상수, 변수, 무결성 검사 데이터를 포함할 수 있습니다.
- 변수가 포함된 경우, 받은 데이터를 파싱 (Parsing)하여 해당 값을 변수에 저장합니다.
- 무결성 검사 데이터가 포함된 경우, 받은 데이터의 무결성 검사를 진행하여 결과가 일치하는지 체크합니다.


> [이름]
데이터의 이름을 입력합니다. 임의의 이름을 사용할 수 있습니다.

> [타입]
데이터의 타입을 선택합니다.

- 디지털 : 디지털 타입의 상수로 true 또는 false 입니다.
- 숫자 : 숫자 타입의 상수입니다. 바이트 크기, 정수/실수 등 숫자 형식을 지정할 수 있습니다.
- 텍스트 : 텍스트 타입의 상수입니다.
- 바이트 배열 : 바이트 배열 타입의 상수입니다.
- 변수 : [디지털], [숫자], [텍스트], [바이트 배열] 타입의 변수만 선택할 수 있습니다.
- 무결성 검사 : 데이터의 에러를 체크하고 무결성을 검사합니다. 다양한 계산 방식을 제공합니다.
> [값]
상수 값을 입력합니다. [타입] “디지털”, “숫자”, “텍스트”, “바이트 배열”인 경우에만 표시됩니다.

> [숫자 형식]
숫자의 형식을 선택합니다. [타입]이 “숫자” 인 경우에만 표시됩니다.

> [바이트 크기 모름]
수신할 데이터의 바이트 크기를 모르는 경우 체크합니다. [명령]이 “받기”이고 [타입]이 “변수”인 경우에만 표시됩니다. 바이트 크기를 모르는 변수는 프레임에 1개만 존재할 수 있습니다.

> [바이트 크기]
수신할 데이터의 바이트 크기를 입력합니다. 해당 크기만큼 파싱 (Parsing)하여 변수에 저장합니다. [명령]이 “받기”이고 [타입]이 “변수인 경우에만 표시됩니다.

> [바이트 역순]
보내거나 받을 데이터의 바이트 순서를 반대로 변경합니다. 통신할 상대방과 바이트 순서 (엔디언, Endian) 처리 방식이 다를 경우 사용합니다. 상수 또는 변수의 타입이 “숫자”, “텍스트”, “바이트배열” 인 경우에만 표시됩니다.

> [검사 방법]
프레임 데이터의 무결성 검사 방법을 선택합니다. [시작 데이터] 부터 [종료 데이터] 까지 무결성을 검사합니다. [타입]이 “무결성 검사” 인 경우에만 표시됩니다.

- BYTE SUM: 데이터의 모든 바이트를 더해 합계를 계산합니다.
- WORD SUM: 데이터의 워드(16비트 단위)를 더해 합계를 계산합니다.
- BYTE XOR: 데이터의 모든 바이트를 XOR 연산으로 누적합니다.
- 7BIT SUM: 각 데이터 바이트에서 상위 1비트를 제거하고 남은 7비트만 더해 합계를 계산합니다.
- 7BIT XOR: 각 데이터 바이트에서 상위 1비트를 제거하고 남은 7비트만 XOR 연산으로 누적합니다.
- 7BIT SUM (0x20 이상): 데이터 바이트 중 값이 0x20(공백) 이상인 바이트만 7비트를 사용해 합산합니다.
- BYTE SUM (2의 보수): 모든 바이트를 더한 후 합계를 2의 보수로 변환하여 체크값을 계산합니다.
- BYTE SUM (1의 보수): 모든 바이트를 더한 후 합계를 1의 보수(비트 반전)로 변환하여 체크값을 계산합니다.
- CRC16 STANDARD: 표준 다항식을 기반으로 16비트 순환 중복 검사(CRC)를 계산합니다.
- CRC16 CCITT: CCITT 표준 다항식(0x1021)을 기반으로 16비트 CRC를 계산합니다.
- CRC16 MODBUS: Modbus 프로토콜에 사용되는 다항식(0x8005)을 기반으로 16비트 CRC를 계산합니다.
> [시작 데이터]
무결성 검사의 시작 데이터를 선택합니다. [타입]이 “무결성 검사” 인 경우에만 표시됩니다.

> [종료 데이터]
무결성 검사의 종료 데이터를 선택합니다. [타입]이 “무결성 검사” 인 경우에만 표시됩니다.

> [ASCII로 변환]
무결성 계산 데이터를 ASCII로 변환합니다. 예를 들어 계산 결과가 16진수 0x9C 라면 문자열 “9C”로 변경합니다. [타입]이 “무결성 검사” 인 경우에만 표시됩니다.
