====== Binary 프로토콜 ====== Binary 프로토콜의 모든 명령어는 다음과 같은 포맷을 갖추고 있습니다. | <본체> | = 16 진수 10 \\ = 16 진수 02 \\ = 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 사용예 ===== 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 | 본체에 코드값인 10 이 포함되어 있다면, 로 보내주어야 합니다. 즉 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 | ---- ===== Binary 모드 체크섬 사용시 ===== 체크섬 On 모드에서는 다음과 같은 방법으로 체크섬을 추가해서 보내주어야 합니다. 를 제외한 모든 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 | [[mdisplay:index|M Display 시리얼 칼라 그래픽 디스플레이]]