Binary 프로토콜의 모든 명령어는 다음과 같은 포맷을 갖추고 있습니다.
<DLE><STX><본체><DLE><ETX> |
<DLE> = 16 진수 10
<STX> = 16 진수 02
<ETX> = 16 진수 03
사용예)
항목 | DLE | STX | DrawLine | 0 | 0 | 1000 | 1000 | DLE | ETX | |
---|---|---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 11 | 00-00 | 00-00 | E8-03 | E8-03 | 10 | 03 |
16 비트, 또는 32 비트 수를 보낼때에는 아랫쪽 바이트를 먼저 보내주어야 합니다. 즉, 3E8 을 보내려면 E8 을 먼저보내고 03 을 나중에 보내야 합니다.
인수(Arguments)는 다음과 같은 type이 사용됩니다.
Argument Type | 설명 |
---|---|
Real Number | 10 을 곱한 좌표. 예: 123.4 는 1234 로 써줍니다. |
UInt8 | 8-bit 부호없는 정수 |
Int16 | 16-bit 부호있는 정수 |
UInt16 | 16-bit 부호없는 정수 |
UInt32 | 32-bit 부호없는 정수 |
Color | 부호가 없는 32-bit 정수 , 16 진수 (AARRGGBB) Alpha(AA, 00 = 불투명, FF = 투명), Red(RR), Green(GG), Blue(BB) 예) 000000FF = 불투명 파랑 0000FF00 = 불투명 녹색 00FF0000 = 불투명 빨강 |
Text | 문자열, 맨뒤에는 NULL 문자가 필요합니다. |
이중 Real Number 는 소수점 밑 한자리를 포함하는 좌표를 뜻합니다. 123.4 를 원하면 위해서는 1234 를 사용합니다. 즉 실제값에서 곱하기 10 한 값을 사용하는 것입니다.
COLOR 는 24 비트로 표현하지만, 내부적으로는 16 비트 (565 비트)로 처리됩니다.
DrawLine 에 해당하는 코멘드 코드인 11 을 사용하였습니다.
항목 | DLE | STX | 코멘드 code(DrawLine) | 0 | 0 | 1000 | 1000 | DLE | ETX |
---|---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 11 | 00-00 | 00-00 | E8-03 | E8-03 | 10 | 03 |
본체에 <DLE>코드값인 10 이 포함되어 있다면, <DLE><DLE>로 보내주어야 합니다. 즉 10 을 두번 연속 보내주어야 합니다.
항목 | DLE | STX | DrawLine | 16 | 0 | 1000 | 1000 | DLE | ETX |
---|---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 11 | 10-10-00 | 00-00 | E8-03 | E8-03 | 10 | 03 |
문자열 뒤에는 반드시 00 을 보내야 합니다.
항목 | DLE | STX | FillText | 1000 | 1000 | Helllo | DLE | ETX |
---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 1A | E8-03 | E8-03 | 48-65-6C-6C-6F-00 | 10 | 03 |
M DISPLAY는 모든 명령어에 대해 Status code를 포함한 응답 멧세지를 보내줍니다.
Status Code (Hex) | 설명 |
---|---|
0000 | Success |
0001 | Unknown command |
0002 | Wrong number of command arguments |
0003 | Invalid command argument |
0004 | Error reading from a file |
0005 | Memory allocation error |
0006 | Serial communication error |
0007 | Checksum error |
FFFF | Unspecified error |
다음과 같은 포맷을 응답멧세지를 보내줍니다.
성공시 ACK (HEX 06)을 포함하고 있습니다.
항목 | DLE | STX | ACK | 성공 | DLE | STX |
---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 06 | 00-00 | 10 | 03 |
비정상적인 실행의 경우 NAK(HEX 15)를 포함하고 있습니다.
항목 | DLE | STX | NAK | 알수없는 명령어 | DLE | STX |
---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 15 | 01-00 | 10 | 03 |
체크섬 On 모드에서는 다음과 같은 방법으로 체크섬을 추가해서 보내주어야 합니다.
<DLE><STX>를 제외한 모든 Byte 를 합산하여 사용합니다.
(11 + 00 + 00 + 00 + 00 + E8 + 03 + E8 + 03 = 01E7)
항목 | DLE | STX | DrawLine | 0 | 0 | 1000 | 1000 | Checksum | DLE | STX |
---|---|---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 11 | 00-00 | 00-00 | E8-03 | E8-03 | E7-01 | 10 | 03 |
응답 멧세지도 체크섬을 포함하고 있습니다. (06 + 00 + 00 + 00 + 00 = 0006)
항목 | DLE | STX | ACK | 성공 | Checksum | DLE | STX | |
---|---|---|---|---|---|---|---|---|
Byte(Hex) | 10 | 02 | 06 | 00-00-00-00 | 06-00 | 10 | 03 |