본문 바로가기

공부/C언어

HMI LCD -넥션(Nextion) 코딩(문법)①

반응형

 

 Nextion HMI Instruction Set(Nextion 명령어 세트) 

 

 

 1. General Rulse and Practices(일반적 규칙 사항)

아래 규칙을 바탕으로 Nextion HMI 디스플레이 모듈과 통신을 수행 코드 또한 이 규칙들에 따라 작성

1.1 시리얼 통신 통한 모든 명령의 종료 : 데이터 송수신이 완료된 가장 마지막에 0xFF 0xFF 0xFF의 3 바이트로 종료됩니다.

1.2 모든 명령어과 그 명령어에 사용되는 각 파라미터는 ASCII 포맷으로만 접근, 제어, 사용이 가능합니다.

1.3 모든 명령어는 소문자로만 사용이 가능합니다. 따라서 Nextion Editor에서 추가적인 코드 작성 시 반드시 소문자로만 코드를 작성하여야만 합니다.

1.4 코드 상의 중괄호('{', '}') 내에 작성된 내용은 시리얼 통신을 통해 Nextion HMI 디스플레이 모듈에서 송신이 불가능 합니다.

1.5 코드 작성 시 공백 문자(Space Bar)는 특정 명령어의 파라메터와 명령어를 구분하는데만 사용됩니다. 따라서 코드 작성 시 공백 문자를 입력하면 안됩니다.

1.6 별도로 언급되지 않은 명령어의 파라미터에는 공백 문자를 입력하지 않습니다.

1.7 Nextion HMI 디스플레이 모듈은 정수 연산만 가능하며, 부동 소숫점 연산을 포함한 모든 소숫점 연산을 지원하지 않습니다.

1.8 변수의 값 할당은 연산자 이후에 위치하여야 합니다.

1.9 비교 연산 또한 기본적인 C 언어의 문법과 동일합니다. 필요에 따라 중첩 비교문을 사용할 수 있습니다.

1.10 시리얼 통신을 통해 Nextion HMI 디스플레이 모듈에 명령을 송신할 경우 Nextion HMI는 모든 명령 데이터의 수신이 완료된 이후에 해당 명령에 대한 동작을 수행합니다.

1.11 시리얼 통신 시 탈출 문자인 "\r"의 두 개의 문자(\, r)은 0x0D의 하나의 바이트값으로만 사용합니다.

1.12 Nextion Editor에서 코드 작성 시 소괄호('(', ')')에 의한 연산 우선순위를 지원하지 않으므로 주의하여야 합니다. 예를 들어 sys0=3+(8*4)는 잘못된 결과를 초래합니다.

​1.13 Nextion HMI 디스플레이 모듈은 16 비트의 RGB 565 방식으로 색상을 지정하며 0 ~ 65535가지의 색상을 선택할 수 있습니다. 참고로 RGB 565 방식은 빨강(R) - 5 Bit, 초록(G) - 6 Bit, 파랑(B) - 5 Bit로 구성되니 참고하시기 바랍니다.

1.14 텍스트 값은 코드에서 큰 따옴표('"', '"') 사이에 작성하여야 합니다. 예를 들어 Hello라는 문자를 Nextion Editor의 코드에서 사용하고 싶을 경우 "Hello"로 작성해야 합니다.

1.15 Nextion HMI 디스플레이 모듈 중 Enhanced 모델에만 사용되는 명령어는 별도로의 식별자 *K*로 구분하였으니 참고하시기 바랍니다.

1.16 투명 데이터 모드(Transparent Data Mode)는 addt 명령어와 wept 명령어에서만 사용이 가능합니다. 보다 자세한 투명 데이터 모드에 관해서 다음에 나타낸 추가 설명을 참고하시기 바랍니다.

1.16.1 MCU에서 Nextion HMI 디스플레이 모듈로 투명 데이터 모드로 데이터를 송신(예 : wept 30,20ÿÿÿ 또는 addt 1,0,320ÿÿÿ)

1.16.2 Nextion HMI 디스플레이 모듈에서 해당 데이터를 완전히 수신 받은 후 투명 데이터 전송을 준비하는데 약 5ms가 소요됩니다.

1.16.3 Nextion HMI에서 투명 데이터 모드 준비가 완료되면, “Ready” 0xFE 0xFF 0xFF 0xFF를 송신합니다.

1.16.4 MCU에서 Nextion HMI 디스플레이 모듈이 송신한 메시지를 받았다면, 지정된 수(20 바이트)의 데이터를 Nextion HMI에 전송할 수 있습니다.

1.16.5 Nextion HMI 디스플레이 모듈은 해당 데이터를 완전히 수신 받을 때까지 대기합니다. 참고로 모든 데이터가 수신이 완료될 때까지 Nextion HMI 디스플레이 모듈 해당 단계에서 대기합니다. 이 단계에서 Nextion HMI 디스플레이 모듈은 다른 명령을 실행할 수 없으며, 만약 Nextion HMI 디스플레이 모듈이 지정된 수의 데이터를 완전히 송신받지 못할 경우 무한히 대기할 수 있습니다.

1.16.6 Nextion HMI 디스플레이 모듈에서 데이터 수신이 완료되면, “Finished” 0xFD 0xFF 0xFF 0xFF를 송신합니다.

1.16.7 데이터 송수신이 완료되면, MCU와 Nextion HMI 디스플레이 모듈은 각각의 내부에 정의된 다음 명령을 실행합니다.
- 참고 : 명령어와 데이터, 통신 종료 데이터를 모두 포함해 송신 1회에 최대로 Nextion HMI 디스플레이 모듈에 송신할 수 있는 데이터의 총 수는 1024 바이트 미만이니 참고하시기 바랍니다.

1.17 Nextion Editor에서 제공하는 모든 컨트롤들이 Attribute 속성 중에서 녹색으로 표시된 부분과 읽기 전용이 아닌 시스템 변수의 구성 요소 속성만 사용자 임의로 변경이 가능합니다. 그밖에 .objname을 제외하고 모든 Attribute 속성은 읽기 전용입니다.

1.18 Nextion Editor를 사용하여 코드를 작성할 때, 변수에 16진수 표기 방식으로 값을 입력할 수 있습니다.

1.19 Nextion Editor에 작성하는 코드에 주석을 추가할 때에는 C 언어에서와 같이 이중 슬래시('//')를 이용해 주석을 추가할 수 있습니다.

 2. Assignment Statements(연산자 사용) 

이번에는 Nextion HMI 디스플레이 모듈과 Nextion Editor에서 사용되는 연산자의 사용방법에 대해서 알아보도록 하겠습니다. 다음에 소개되는 연산자들의 사용방식은 C 언어에서와 거의 유사하므로 C 언어를 잘 알고 계신분이라면 몇 가지 사항에만 주의하시면 아주 쉽게 이해할 수 있습니다.

순번 데이터형 연산자 상세 설명 및 예시
1 문자 = 문자열 대입 연산자. 해당 연산자 오른쪽의 문자열의 결과가 왼쪽으로 대입됩니다. 한편, Text 컨트롤에 문자열을 대입할 경우 해당 컨트롤의 maxl은 대입하려는 문자열의 길이보다 충분히 커야만 오류가 발생하지 않습니다.
예) t0.txt = "Hello"
2 문자 += 문자열 누적 대입 연산자. 해당 연산자 오른쪽의 문자열의 결과가 왼쪽의 값에 추가 누적되어 대입됩니다. 예를 들어 t0.txt+="Hello"는 t0.txt=t0.txt+"Hello"와 동일한 코드입니다.
3 문자 -= 문자열 제거 연산자. 해당 연산자 오른쪽에 제거하고자 하는 문자열의 개수를 넣을 경우 왼쪽에 위치한 문자열 변수의 가장 마지막 위치부터 삭제하고자 하는 문자열의 개수만큼 문자열이 삭제된 후 대입됩니다.
예) t0.txt-=4
t0.txt=t0.txt-4
상기 두 코드는 동일한 실행결과를 나타내며, t0.txt의 가장 마지막의 4개의 문자를 삭제한 후의 문자열 결과가 t0.txt에 저장됩니다.
4 문자 \ 탈출 문자. 탈출 문자로 해당 문자는 16진수값인 0x0D로 대체됩니다.(1.11 참조)
예) t0.txt="\r"
5 문자 == 논리비교 동일판단. 해당 연산자 왼쪽값을 기준으로 오른쪽값을 비교합니다. 비교결과 양쪽의 값이 동일할 경우 참 조건을 생성합니다.
예) if(t0.txt==va0.txt)
6 문자 != 논리비교 동일하지 않음 판단. 해당 연산자 왼쪽값을 기준으로 오른쪽값을 비교합니다. 비교결과 양쪽의 값이 동일하지 않을 경우 참 조건을 생성합니다.
예) if(t0.txt!=va0.txt)
7 숫자 = 대입 연산자. 해당 연산자 오른편의 수식의 결과가 왼편의 변수에 대입됩니다.
예) n0.val=bauds //n0.val 변수에 bauds라는 변수의 값을 대입합니다.
8 숫자 += 숫자 덧셈 대입 연산자. 해당 연산자 오른편의 값만큼 왼편의 변수의 값을 더합니다. n0.val+=4는 n0.val=n0.val+4와 동일한 표현입니다.
예) n0.val+=va0.val
9 숫자 -= 숫자 뺄셈 대입 연산자. 해당 연산자 오른편의 값만큼 왼편의 변수의 값을 뺍니다. n0.val-=4는 n0.val=n0.val-4와 동일한 표현입니다.
예) n0.val-=60 //n0.val 변수의 값을 60만큼 뺍니다.
10 숫자 *= 숫자 곱셈 대입 연산자. 해당 연산자 오른편의 값만큼 왼편의 변수의 값에 곱합니다. n0.val*=2는 n0.val=n0.val*2와 동일한 표현입니다.
예) n0.val*=2
11 숫자 /= 숫자 나눗셈 몫 대입 연산자. 해당 연산자 오른편의 값만큼 왼편의 변수의 값을 나눕니다. 60000/20001=2로 나머지는 모두 버리며, 정수부분의 몫만 결과로 남게됩니다.
예) n0.val/=60
12 숫자 %= 숫자 나눗셈 나머지 대입 연산자. 해당 연산자 오른편의 값만큼 왼편의 변수의 값을 나누고, 그때 발생하는 나머지 값을 왼편의 변수에 대입합니다. 60000/20001=19998로 몫은 모두 버리며, 나머지값만 결과로 남게됩니다.
예) n0.val%=60
13 숫자 << 산술 비트 왼쪽 시프트 연산자. 해당 연산자 오른편의 숫자 만큼 왼편의 값의 2진수 형태의 비트값을 왼쪽으로 시프트합니다. 아래의 16Bit 변수에 대한 예(32Bit 변수도 이와 유사)를 확인해보시기 바랍니다.
예) n0.val=n0.val<<4
0000.0011.1100.0001
0011.1100.0001.
0011.1100.0001.0000
14 숫자 >> 산술 비트 오른쪽 시프트 연산자. 해당 연산자 오른편의 숫자 만큼 왼편의 값의 2진수 형태의 비트값을 오른쪽으로 시프트합니다. 아래의 16Bit 변수에 대한 예(32Bit 변수도 이와 유사)를 확인해보시기 바랍니다. 한편, 부호가 있는(Signed) 변수형의 경우 음수형일 경우 채워지는 숫자는 1이되고, 양수일 경우에는 0이 됩니다.
예) n0.val=n0.val>>4
0000.0011.1100.0001
0000.0011.1100
0000.0000.0011.1100
15 숫자 & 논리 곱 연산자. 해당 연산자 왼쪽에 있는 2진수 Bit값과 오른쪽에 있는 2진수 Bit값을 논리 곱 연산을 합니다. 아래의 16Bit 변수의 예(32Bit 변수도 이와 유사)를 확인하시기 바랍니다.
예) n0.val=n0.val&35381
0101.1011.0010.0101 //n0.val에 저장된 값 23333
1000.1010.0011.0101 //논리 곱 연산을 할 값 35381
0000.1010.0010.0101 //논리 곱 연산 결과값 2597
16 숫자 | 리 합 연산자. 해당 연산자 왼쪽에 있는 2진수 Bit값과 오른쪽에 있는 2진수 Bit값을 논리 합 연산을 합니다. 아래의 16Bit 변수의 예(32Bit 변수도 이와 유사)를 확인하시기 바랍니다.
예) n0.val=n0.val|35381
0101.1011.0010.0101 //n0.val에 저장된 값 23333
1000.1010.0011.0101 //논리 합 연산을 할 값 35381
1101.1011.0011.0101 //논리 합 연산 결과값 56117
17 숫자 ^ 배타적 논리합 연산자. 해당 연산자 왼쪽에 있는 2진수 Bit값과 오른쪽에 있는 2진수 Bit값을 배타적 논리합 연산을 합니다. 아래의 16Bit 변수의 예(32Bit 변수도 이와 유사)를 확인하시기 바랍니다.
예) n0.val=n0.val^35381
0101.1011.0010.0101 //n0.val에 저장된 값 23333
1000.1010.0011.0101 //배타적 논리합 연산을 할 값 35381
1101.0001.0010.0000 //배타적 논리합 연산 결과값 53520
18 숫자 == 논리비교 동일판단. 해당 연산자 왼쪽값을 기준으로 오른쪽값을 비교합니다. 비교결과 양쪽의 값이 동일할 경우 참 조건을 생성합니다.
예) if(n0.val==va0.val)
19 숫자 != 논리비교 동일하지 않음 판단. 해당 연산자 왼쪽값을 기준으로 오른쪽값을 비교합니다. 비교결과 양쪽의 값이 동일하지 않을 경우 참 조건을 생성합니다.
예) if(n0.val!=va0.val)
20 숫자 < 산술 비교 연산자. 해당 연산자 왼쪽의 값을 기준으로 오른쪽의 값이 클 경우 참 조건을 생성합니다.
예) while(n0.val<va0.val)
21 숫자 <= 산술 비교 연산자. 해당 연산자 왼쪽의 값을 기준으로 오른쪽의 값이 크거나 같을 경우 참 조건을 생성합니다.
예) while(n0.val<=va0.val)
22 숫자 > 산술 비교 연산자. 해당 연산자 왼쪽의 값을 기준으로 오른쪽의 값이 작을 경우 참 조건을 생성합니다.
예) while(n0.val>va0.val)
23 숫자 >= 산술 비교 연산자. 해당 연산자 왼쪽의 값을 기준으로 오른쪽의 값이 작거나 같을 경우 참 조건을 생성합니다.
예) while(n0.val>=va0.val)
24 코드 { } 코드 블록은 "{"로 시작합니다. 시작된 코드 블록은 다시 "}"로 종료됩니다. 코딩 키워드 "if", "while", "for"문 역시 이와 같은 코드 블록 브레이스로 시작과 종료됩니다.
25 코드 && 조건 조인 논리 곱 연산자. 조건문에서 여러 종류의 각기 다른 조건을 통합하여 논리곱 조건 판단을 할 때 해당 연산자를 각 조건 사이에 사용합니다.
26 코드 || 조건 조인 논리 합 연산자. 조건문에서 여러 종류의 각기 다른 조건을 통합하여 논리합 조건 판단을 할 때 해당 연산자를 각 조건 사이에 사용합니다.
27 코드 ( ) 조건 엔클로저는 "("로 시작합니다. 시작된 조건 엔클로저는 다시 ")"로 종료됩니다. 코딩 키워드 "if", "while", "for"문을 동작시키는 조건 또한 이와 같은 시작과 종료로 이뤄집니다.
28 코드 . 마침표 구분 기호. 페이지, 화면 구성 요소 및 각 구성요소의 속성 등과 함께 사용됩니다.
예) page1.va0.val or p0.pic
29 코드 [ ] 배열의 요소를 나타낼 때 해당 기호를 사용합니다.
30 주석 // 코드에 사용자 정의의 주석을 사용할 때에 사용합니다.

 

 3. Operational Commands(동작 명령어) 

Nextion HMI Display 모듈을 사용함에 있어서 다음의 동작 명령어를 사용할 수 있습니다. 동작 명령어를 사용하여 보다 간편하고 다양한 동작을 Nextion HMI Display 모듈을 통해서 구현할 수 있습니다.

순번 명령어 인자수 상세 설명 및 예시
1 page 1 페이지를 지정된 페이지로 변경할 때 사용하는 명령어. page 명령어 뒤에 따라붙는 페이지 수에 따라서 Nextion HMI의 페이지가 변경됩니다.
사용법 : page <pid>
<pid>는 page의 index 번호 또는 pagename
예) page 0 //Nextion HMI 페이지를 page 번호 0로 변경
page main //Nextion HMI 페이지를 pagename "main"으로 변경
2 ref 1 화면 구성요소 새로고침 명령어(v0.38부터 속성 변경 시 자동으로 새로고침 명령이 수행됨).
사용법 : ref <cid>
<cid>는 화면 구성요소의 .id 또는 .objname가 될 수 있으며, 새로고침 할 화면 구성요소 입니다. <cid>가 0일 때, 화면에 나타나는 현재 페이지의 모든 구성요소가 새로고침 됩니다.
예) ref t0 //t0의 .objname을 갖는 구성요소를 새로고침
ref 3 //.id의 3을 갖는 구성요소를 새로고침
ref 0 //현재 나타는 화면 내의 모든 구성요소를 새로고침(ref 255도 동일한 표현)
3 click 2 특정 화면 구성요소의 터치 또는 릴리즈 이벤트 명령어. 해당 명령은 항상 Local로 실행되므로, page 번호 등을 붙여 사용할 필요가 없습니다.
사용법 : click <cid>,<event>
<cid>는 새로 고침할 화면 구성요소의 .id 또는 .objname 속성
<event>가 1이면 터치 이벤트, 0이면 릴리즈 이벤트
예) click b0,1 //.objname b0의 터치 누름 이벤트
click 4,0 //.id 4의 터치 릴리즈 이벤트
4 ref_stop 0 Waveform 컴포넌트 사용 시 해당 명령을 실행하면, 데이터 포인트가 추가되어도 파형이 해당 Waveform 컴포넌트에 나타나지 않음.
사용법 : ref_stop
예) ref_stop //각 데이터 포인트가 추가되더라도 Waveform 컴포넌트에 화면이 갱신되지 않음
5 ref_star 0 Waveform 컴포넌트 사용 시 해당 명령을 실행하면, 데이터 포인트가 추가됨에 따라 파형이 해당 Waveform 컴포넌트에 갱신되어 나타남.
사용법 : ref_star
예) ref_star //각 데이터 포인트가 추가됨에 따라 Waveform 컴포넌트에 화면이 갱신됨
6 get 1 시리얼 통신을 통해 화면 구성요소의 속성 또는 값을 취득하는 명령어.
사용법 : get <attribute>
<attribute>는 숫자 또는 문자열 값
예) get t0.txt //t0의 txt 속성값을 시리얼 통신으로 송신(문자열값 전달로 0x70 반환)
get “123” //문자열 "123"을 시리얼 통신으로 송신(문자열값 전달로 0x70 반환)
get n0.val //n0의 val 속성값을 시리얼 통신으로 송신(숫자값 전달로 0x71 반환)
get 123 //숫자 "123"을 시리얼 통신으로 송신(숫자값 전달로 0x71 반환)
7 sendme 0 현재 Nextion HMI 화면에 나타나고 있는 페이지 번호를 통신으로 보내는 명령어.
- 현재 화면에 로드된 페이지의 번호가 시스템 변수 dp에 저장
- 페이지의 초기화 이벤트에서 사용되는 페이지 로드 시 자동으로 전송
사용법 : sendme
예) sendme //현재 화면에 나타나고 있는 페이지 번호(반환값 0x66)
8 covx 4 변수를 숫자 형식에서 문자열 형식으로 변환하거나 문자열 형식에서 숫자 형식으로 변환하는 명령어.
- 문자열은 정수값의 문자열, ASCII 표현으로 기입
- 변환하고자 하는 결과값은 변환 대상의 변수형 크기와 동일해야 함
- 변환하고자 하는 대상이 숫자일 경우 16진수 형식으로 길이가 일치하여야 함
사용법 : covx <src>,<dest>,<length>,<format>
<src> 변환하고자 하는 대상
<dest> 변환 후 저장하고자 하는 대상
<length> 변환 결과값의 길이(0일 경우 선행되는 0은 삭제됨)
<format> 0 : 정수형 / 1 : 1000단위 구분 쉼표 추가 / 2 : 16진수형
예) covx h0.val,t0.txt,0,0 //h0 변수의 값을 문자열로 변경하여 t0에 저장(단, 의미없는 선행 0은 삭제됨)
covx t0.txt,h0.val,0,0 //t0의 문자열을 h0의 변수에 정수형으로 저장(단, 의미없는 선행 0은 삭제됨)
covx h0.val,t0.txt,4,0 //h0의 변수의 값을 정수형 형태의 문자열 4자리로 변경하여 t0에 저장
covx h0.val,t0.txt,4,1 //h0의 변수의 값을 1000단위 구분 쉼표가 추가된 정수형 형태의 문자열 4자리로 변경하여 t0에 저장
covx h0.val,t0.txt,4,2 //h0의 변수의 값을 16진수 형태의 문자열 2자리로 변경하여 t0에 저장
8a cov 3 숫자를 문자열 형태로 변환 또는 문자열을 숫자 형태로 변환하는 명령어.
- 문자열은 정수값의 문자열, ASCII 표현으로 기입
- 변환하고자 하는 결과값은 변환 대상의 변수형 크기와 동일해야 함
- 변환하고자 하는 대상이 숫자일 경우 16진수 형식으로 길이가 일치하여야 함
사용법 : covx <src>,<dest>,<length>
<src> 변환하고자 하는 대상
<dest> 변환 후 저장하고자 하는 대상
<length> 변환 결과값의 길이(0일 경우 선행되는 0은 삭제됨)
예) cov h0.val,t0.txt,0 //h0의 변수에 저장된 숫자값을 문자열 형태로 변경하여 t0 변수에 저장(단, 의미없는 선행 0은 삭제됨)
cov t0.txt,h0.val,0 //t0의 변수에 저장된 문자열값을 숫자 형태로 변경하여 h0 변수에 저장(단, 의미없는 선행 0은 삭제됨)
cov h0.val,t0.txt,4 //h0의 변수에 저장된 숫자값을 문자열 형태로 변경하여 t0 변수에 저장
9 touch_j 0 Nextion HMI Display 모듈의 터치 센서 재보정
- 사용자가 터치 스크린의 포인터를 보정할 수 있도록 4개의 보정 위치가 나타나며, 보정이 종료되면 재부팅이 진행
- 터치 스크린은 환경 조건의 변화에 의해 영향을 받을 수 있음
- 정전식 터치 스크린의 경우 사용자가 터치 보정을 할 수 없음
사용법 : touch_j
예) touch_j //감압식 터치 스크린 재보정 기능 활성화
10 substr 4 문자열 변수가 포함하고 있는 문자열의 일부를 추출할 수 있는 명령어.
사용법 : substr <src>,<dest>,<start>,<count>
<src>는 추출하고자 하는 문자열 변수명
<dest>는 추출된 문자열을 저장할 변수명
<start>는 추출하고자 하는 문자열의 문자 위치
<count>는 추출하고자 하는 문자열의 개수
예) substr va0.txt,t0.txt,0,5 //va0 문자열 변수의 문자열 중에서 왼쪽에서 0번째부터 총 5개의 문자를 추출해 t0 문자열 변수로 저장
11 vis 2 현재 페이지의 화면 구성요소를 보이게 나타내거나 감추는 명령어.
- 화면에 감춰지는 순간 해당 구성요소의 터치를 비롯한 모든 동작을 사용할 수 없음
- 구성요소가 화면에서 감춰지는 동작을 처리하는 과정 중 화면에 깜빡임 등의 잔상이 발생할 수 있음
- 해당 기능을 빈번하게 사용할 시 디버깅 어려움의 문제점이 발생할 수 있음
사용법 : usage: vis <comp><state>
<comp>는 현재 페이지의 .objname 또는 .id가 될 수 있음
<state>가 0일 경우 해당 컴포넌트 감춤, 1일 경우 해당 컴포넌트 표시
예) vis b0,0 //.objname b0를 감춤
vis b0,1 //.objname b0를 표시
vis 1,0 //.id 1의 컴포넌트를 감춤
vis 1,1 //id 1의 컴포넌트를 표시
vis 255,0 //현재 페이지의 모든 컴포넌트를 감춤
12 tsw 2 현재 페이지의 화면 구성요소에 대해 터치 이벤트 사용 또는 사용 중지 명령어.
사용법 : tsw <comp>,<state>
<comp>는 현재 페이지의 .objname 또는 .id가 될 수 있음
<state>가 0일 경우 해당 컴포넌트 터치 비활성화, 1일 경우 해당 컴포넌트 터치 활성화
예) tsw b0,0 //b0 컴포넌트의 터치 기능 비활성화
tsw b0,1 //b0 컴포넌트의 터치 기능 활성화
tsw 1,0 //.id 1 컴포넌트의 터치 기능 비활성화
tsw 1,1 //.id 1 컴포넌트의 터치 기능 활성화
tsw 255,0 //현재 페이지의 모든 컴포넌트들의 터치 기능 비활성화
13 com_stop 0 시리얼 통신으로 수신받는 모든 명령 실행 중지 명령어.
- 시리얼 통신이 재개될 때, 수신 버퍼에 저장된 명령어가 실행
- 시리얼 통신 재개 명령어는 com_star
- com_stop과 com_star 명령어를 사용할 때, 버퍼 오버플로우 문제가 발생할 수 있음
사용법 : com_stop
예) com_stop //시리얼 통신으로 전달되는 모든 명령어 처리 중지
14 com_star 0 시리얼 통신으로 수신받는 모든 명령 실행 명령어.
- com_stop으로 시리얼 통신으로 명령어 수신 처리가 중지되었을 때, 해당 명령어로 다시 동작을 재개할 수 있음
- com_star 명령을 수신받았을 때, 수신 버퍼에 저장된 모든 명령어가 수행됨
- com_stop과 com_star 명령어를 사용할 때, 버퍼 오버플로우 문제가 발생할 수 있음
사용법 : com_star
예) com_star //시리얼 통신으로 전달되는 모든 명령어 처리 재개
15 randset 2 난수 발생을 위한 명령어.
- Nextion HMI가 재부팅될 때까지 해당 난수 생성 명령의 범위는 변경되지 않음
- 사용하고자 하는 난수 생성 범위를 지정하여 사용할 수 있음
- 기본적인 난수 생성 범위는 -2147483648 ~ 2147483647까지 설정이 가능
사용법 : randset <min>,<max>
<min>는 난수 생성 범위 중 최저값의 범위
<max>는 <min>보다 큰 범위에서 생성하고자 하는 난수의 최대값 범위
예) randset 1,100 //1~1000까지의 범위에서 난수를 생성
randset 0,65535 //0~65535까지의 범위에서 난수를 생성
16 code_c 0 명령어의 실행 없이 명령어 / 데이터 큐에 버퍼에 저장된 내용을 초기화하는 명령어.
사용법 : code_c
예) code_c //버퍼에 저장된 모든 명령어와 데이터를 초기화
17 prints 2 Raw 데이터를 시리얼 통신을 통해서 MCU로 전달하는 명령어.
- 반환 형식없이 Nextion HMI의 Raw 데이터를 MCU로 전달하여 MCU에서 데이터를 다루기 위해 사용하는 명령어
- 숫자형 값은 4Byte(32Bit) Little endian 방식으로 전송됨(value=byte1+byte2*256+byte3*65536+byte4*16777216)
- 문자의 경우 1개의 ASCII 코드로 전송되며, 전송 시 Null값은 전송에서 무시됨
사용법 : prints <attr>,<length>
<attr>는 화면 구성요소의 속성 또는 값, 상수가 될 수 있음
<length>는 0 또는 수신 받고자 하는 숫자 데이터의 크기 제한값
예) prints t0.txt,0 //t0 문자열 변수의 1Byte의 값을 송신
prints t0.txt,4 //t0 문자열 변수의 첫 4Byte의 값을 송신
prints j0.val,0 //j0 숫자 변수의 4Byte 값을 Little endian 방식으로 송신
prints j0.val,1 //j0 숫자 변수의 1Byte 값을 Little endian 방식으로 송신
prints “123”,2 //문자열 "123"의 첫 2Byte의 문자열 "12"를 송신(0x31 0x32)
prints 123,2 //숫자 123의 첫 2Byte의 숫자를 송신(0x7B, 0x00)
17a print 1 Raw 데이터를 시리얼 통신을 통해서 MCU로 전달하는 명령어.
- 반환 형식없이 Nextion HMI의 Raw 데이터를 MCU로 전달하여 MCU에서 데이터를 다루기 위해 사용하는 명령어
- 숫자형 값은 4Byte(32Bit) Little endian 방식으로 전송됨(value=byte1+byte2*256+byte3*65536+byte4*16777216)
- 문자의 경우 1개의 ASCII 코드로 전송되며, 전송 시 Null값은 전송에서 무시됨
사용법 : prints <attr>
<attr>는 화면 구성요소의 속성 또는 값, 상수가 될 수 있음
예) print t0.txt //t0 문자열 변수의 첫 1Byte 문자를 송신
print j0.val //j0 숫자 변수의 값을 4Byte Little endian으로 송신
print “123” //문자열 "123"의 문자열 값을 3Byte의 ASCII값으로 송신(0x31 0x32 0x33)
print 123 //숫자 "123"의 값을 4Byte의 Little endian으로 송신(0x7B 0x00 0x00 0x00)
18 printh 1 ~ ? Raw Byte 또는 다수의 Raw Byte를 시리얼 통신을 통해서 MCU 로 전달하는 명령어.
사용법 : printh <hexhex>[<space><hexhex>][...<space><hexhex>]
<hexhex>는 16진수로 나타낸 값(0x34는 34와 동일)
<space>는 char 0x20과 동일하며 각각의 16진수값을 구분할 목적으로 사용
예) printh 0d //0x0D의 1Byte를 송신
printh 0d 0a //0x0D, 0x0A의 2Byte를 송신
19 add 3 Waveform 컴포넌트에 그릴 그래프 채널에 값을 추가하는 명령어.
- Waveform 채널의 데이터 범위는 0 ~ 255
- 1Pixel 열이 갱신될 때마다 add 명령어가 1번씩 수행됨
사용법 : add <waveform>,<channel>,<value>
<waveform>은 Waveform 컴포넌트의 .id를 지정
<channel>은 해당 Waveform 컴포넌트에서 사용할 수 있는 채널을 지정
<value>는 Waveform 컴포넌트에 나타내고자 하는 값
예) add 1,0,30 //30이라는 값을 Waveform 컴포넌트 .id 1의 채널 0에 갱신
add 2,1,h0.val //h0.val 변수에 저장된 값을 Waveform 컴포넌트 .id 2의 채널 1에 갱신
20 addt 3 Waveform 컴포넌트에 그릴 그래프 채널의 값을 특정한 수만큼 추가하는 명령어.
- Waveform 채널의 데이터 범위는 0 ~ 255
- 1Pixel 열이 갱신될 때마다 1개의 Byte의 값을 나타냄
- addt 명령어는 Transparent Data Mode에서만 사용이 가능
- Waveform 컴포넌트는 Transparent Data Mode가 완료될 때까지 갱신되지 않음
사용법 : add <waveform>,<channel>,<qty>
<waveform>은 Waveform 컴포넌트의 .id를 지정
<channel>은 해당 Waveform 컴포넌트에서 사용할 수 있는 채널을 지정
<qty>는 Transparent Data Mode에서 수신받을 데이터의 수를 지정
예) addt 2,0,20 //20Byte의 데이터를 Waveform 컴포넌트 .id 2의 채널 0에 갱신, 갱신되는 데이터는 ASCII 형식의 데이터가 아닌 Raw Byte 데이터
21 cle 3 Waveform 컴포넌트에 나타낸 각 채널 데이터를 초기화하는 명령어.
사용법 : cle <waveform>,<channel>
<waveform>은 .id로 초기화하고자 하는 Waveform 컴포넌트
<channel>은 지정한 .id의 Waveform 컴포넌트 내의 초기화 하고자 하는 채널
예)cle 1,0 //Waveform id 1의 채널 0의 데이터를 초기화
cle 2,255 //Waveform id 2의 모든 채널의 데이터를 초기화
22 rest 0 Nextion HMI Display 모듈을 초기화 하는 명령어.
사용법 : rest
예) rest //Nextion HMI Display가 해당 명령어 처리 직후 재부팅
23 doevents 0 강제적으로 Nextion HMI Display를 갱신하거나 수신된 시리얼 통신 데이터를 갱신하는 명령어.
사용법 : doevents
예) doevents //화면 또는 수신 데이터 갱신 및 리프레시
24 strlen 2 문자열 변수가 갖고 있는 문자열값의 길이를 계산하는 명령어.
사용법 : strlen <txt>,<len>
<txt>는 문자열 변수의 이름 지정
<len>계산된 문자열의 길이를 저장할 숫자 변수 이름 지정
예) strlen t0.txt,n0.val //t0 문자열 변수에 저장된 문자열의 길이를 계산하여 n0 변수로 저장
24a btlen 2 문자열 변수가 갖고 있는 문자열값의 길이를 계산하는 명령어.
사용법 : btlen <txt>,<len>
<txt>는 문자열 변수의 이름 지정
<len>계산된 문자열의 길이를 저장할 숫자 변수 이름 지정
예) strlen t0.txt,n0.val //t0 문자열 변수에 저장된 문자열의 길이를 계산하여 n0 변수로 저장
25 if Block 조건문을 통해 하위 코드 블록의 동작을 실행시킬지의 여부를 지정할 수 있는 명령어.
- C언어의 if문과 동일한 동작
26 while Block 조건 반복을 통해 하위 코드 블록의 동작을 반복 동작시킬지의 여부를 지정할 수 있는 명령어.
- C언어의 while문과 동일한 동작
27 for Block 조건 반복을 통해 하위 코드 블록의 동작을 반복 동작시킬지의 여부를 지정할 수 있는 명령어.
- C언어의 for문과 동일한 동작

 

 

 4. GUI Designing Commands(GUI 설계 명령어) 

이번에는 화면 설계에 있어 중요하게 살펴봐야 할 GUI Designing Commands에 대해서 살펴보도록 하겠습니다.

순번 명령어 인자수 상세 설명 및 예시
1 cls 1 화면을 초기화 함과 동시에 특정한 색으로 화면 전체를 채우는 명령어.
사용법 : cls <color>
<color>는 숫자 코드 형태로 된 LCD565 방식의 색상 코드
예) cls BLUE //화면 초기화 후 BLUE 색상으로 화면을 채움
cls 1024 //화면 초기화 후 1024로 지정된 색상으로 화면을 채움
2 pic 3 화면에 사진 등의 요소를 나타낼 때 사용하는 명령어.
사용법 : pic <x>,<y>,<picid>
<x> 화면에 사진을 나타낼 위치의 x 좌표
<y> 화면에 사진을 나타낼 위치의 y좌표
<picid> 화면에 나타낼 사진의 .id
예) pic 10,20,0 //x : 10, y : 20 위치에 사진 .id 0을 나타냄
pic 40,50,1 //x : 40, y : 50 위치에 사진 .id 1을 나타냄
3 picq 5 화면에 나타낸 사진을 Crop시키는 명령어.
사용법 : picq <x>,<y>,<w>,<h>,<picid>
<x> Crop할 사진의 x좌표
<y> Crop할 사진의 y좌표
<w> Crop할 영역의 폭
<h> Crop할 영역의 높이
<picid> Crop할 사진의 .id
예) picq 20,50,30,20,0 //x : 20, y : 50 좌표 위치부터 폭 30, 높이 20만큼의 영역에 있는 사진 .id 0를 Crop
4 xpic 7 향상된 기능을 제공하는 사진 Crop을 하는 명령어.
사용법 : xpic <destx>,<desty>,<w>,<h>,<srcx>,<srcy>,<picid>
예) xpic 20,50,30,20,15,15,0 //Crop영역 30×20 만큼은 (15, 15)에서부터 (44, 34)까지 수행
5 xstr 11 Nextion HMI Display 화면 임의의 위치에 문자열을 나타내도록 하는 명령어.
사용법 : xstr <x>,<y>,<w>,<h>,<font>,<pco>,<bco>,<xcen>,<ycen>,<sta>,<text>
<x> 문자열 상자의 x좌표
<y> 문자열 상자의 y좌표
<w> 문자열 상자의 폭
<h> 문자열 상자의 높이
<font> 나타내고자 하는 문자열의 글꼴
<pco> 문자열 상자에 나타내고자 하는 전경색
<bco> 문자열 상자에 나타내고자 하는 배경색
<xcen> 문자열 수평정렬(0 - 왼쪽 정렬, 1 - 가운데 정렬, 2 - 오른쪽 정렬)
<ycen> 문자열 수직정렬(0 - 윗쪽 정렬, 1 - 중간 정렬, 2 - 아랫쪽 정렬)
<sta> 배경 채움(0 - Crop Image, 1 - Solid color, 2 - image, 3 - none)
<text> 나타내고자 하는 문자열(예 : "Korea", va0.txt)
예) xstr 10,10,100,30,1,WHITE,GREEN,1,1,1,va0.txt //x : 10, y : 10에 폭 100, 높이 30의 문자열 박스를 생성하며, 글꼴 .id 1로 설정하고, 전경색은 백색, 배경색은 녹색으로된 문자열 상자에 가운데, 중간 정렬로 va0.txt의 문자열을 나타냄
6 fill 5 화면의 특정한 영역을 특정한 색상으로 채우는 명령어.
사용법 : fill <x>,<y>,<w>,<h>,<color>
<x> 특정한 색상으로 채우기 위한 영역의 x좌표
<y> 특정한 색상으로 채우기 위한 영역의 y좌표
<w> 특정한 색상으로 채우기 위한 영역의 폭
<h> 특정한 색상으로 채우기 위한 영역의 높이
<color> 특정한 색상으로 채우기 위한 색상 코드
예) fill 20,20,150,50,1024 //x : 20, y : 20 위치에서부터 폭 150, 높이 50의 영역에 색상코드 1024의 색상으로 채움
7 line 5 특정 시작점으로부터 특정 종료점까지 선을 그리는 명령어.
사용법 : line <x1>,<y1>,<x2>,<y2>,<color>
<x1> 선을 그리고자 하는 시작점의 x좌표
<y1> 선을 그리고자 하는 시작점의 y좌표
<x2> 선을 그리고자 하는 종료점의 x좌표
<y2> 선을 그리고자 하는 종료점의 y좌표
<color> 그리고자 하는 선의 색상 코드
예) line 20,30,170,200,BLUE //시작점 (20, 30)에서부터 종료점 (170, 200)에 이르는 선을 BLUE 색상으로 그림
8 draw 5 사각형 테두리를 그리는 명령어.
사용법 : draw <x1>,<y1>,<x2>,<y2>,<color>
<x1> 그리고자 하는 사각형 테두리 시작점의 x좌표
<y1> 그리고자 하는 사각형 테두리 시작점의 y좌표
<x2> 그리고자 하는 사각형 테두리 종료점의 x좌표
<y2> 그리고자 하는 사각형 테두리 종료점의 y좌표
<color> 그리고자 하는 사각형 테두리의 색상 코드
예) draw 10,10,70,70,GREEN //사각형 테두리의 시작점 (10, 10)에서부터 종료점 (70, 70)에 이르는 사각형 테두리를 그림
9 cir 4 원 테두리를 그리는 명령어.
사용법 : cir <x>,<y>,<radius>,<color>
<x> 원을 그리고자 하는 위치의 원의 중심점 x좌표
<y> 원을 그리고자 하는 위치의 원의 중짐점 y좌표
<radius> 그리고자 하는 원의 반지름
<color> 그리고자 하는 원의 색상 코드
예) cir 100,100,30,RED //x : 100, y : 100의 위치에 반지름 30의 원 테두리를 RED 색상으로 그림
10 cirs 4 원 도형을 그리는 명령어.
사용법 : cirs <x>,<y>,<radius>,<color>
<x> : 원 도형을 그리고자 하는 위치의 원의 중심점 x좌표
<y> : 원 도형을 그리고자 하는 위치의 원의 중심점 y좌표
<radius> : 그리고자 하는 원의 반지름
<color> : 그리고자 하는 원의 색상 코드
예) cir 100,100,30,RED //x : 100, y : 100의 위치에 반지름 30의 원 도형을 RED 색상으로 그림

 

 5. Color Code Constants(기본 색상명) 

이번에는 기본 색상명을 알아보도록 하겠습니다. Nextion HMI Display 모듈은 기본적으로 지정된 총 8가지의 기본 색상명이 있습니다. 기본 색상명으로 지정되지 않은 색상의 경우 색상 코드를 조합하여 임의의 색상 선택이 가능합니다.

순번 색상명 색상코드 참고
1 BLACK 0 검정색  
2 BLUE 31 파란색  
3 BROWN 48192 갈색  
4 GREEN 2016 초록색  
5 YELLOW 65504 노란색  
6 RED 63488 빨간색  
7 GRAY 33840 회색  
8 WHITE 65535 흰색  

 

 6. System Variables(시스템 변수) 

Nextion HMI Display 모듈은 보다 다양한 임베디드 프로그래밍 기능을 제공하기 위해서 내부에 별도 시스템 변수를 갖고 있습니다. 따라서 HMI 모듈과 MCU 간의 통신을 이용하여 제어를 할 때, Nextion HMI 내부의 시스템 변수의 상태를 모니터링하여 적절한 제어를 하므로써 보다 신뢰성 높은 HMI 환경을 구성할 수 있습니다.

순번 변수명 의미 상세 설명 및 예시
1 dp 현재 페이지
번호
dp=1, n0.val=dp
읽기 : 현재 Nextion HMI 화면에 나타나고 있는 페이지의 번호를 확인할 수 있음
쓰기 : 원하는 페이지의 번호로 Nextion HMI 화면을 변경시킬 수 있음
2 dim
dims
화면 밝기 dim=32, dims=100
화면 밝기를 0% ~ 100%까지 선택적으로 지정할 수 있음
dim=32는 화면밝기 32%를 나타내며, dims=32와 동일한 동작을 수행하나 dims 명령어는 Nextion HMI Display 모듈 내부에 해당 값이 저장되어 전원을 ON / OFF하여도 저장된 값으로 화면 밝기가 설정됨
3 baud
bauds
통신속도 baud=9600, bauds=9600
통신속도를 설정하는 명령어로 2400bps, 4800bps, 9600bps, 19200bps, 38400bps, 57600bps, 115200bps, 230400bps, 256000bps, 512000bps, 921600bps 중에서 설정이 가능함
baud=9600은 통신속도를 9600bps로 설정하는 것이며, bauds=9600과 동일한 동작을 수행하나 bauds 명령어는 Nextion HMI Display 모듈 내부에 해당 값이 저장되어 전원을 ON / OFF하여도 저장된 값으로 통신속도가 설정됨
4 spax
spay
폰트 조정 spax=2, spay=2
화면의 구성요소에 공통적으로 적용되는 폰트 랜더링 조정을 하는 환경변수 0 ~ 65535사이의 값으로 변경이 가능하며, 기본값으로 0이 설정되어 있음
5 thc 터치 그리기
색상 변경
thc=RED, thc=1024
화면을 터치하여 그림판과 같이 그림을 그릴 때 사용하는 색상을 변경하는 환경 변수, 0 ~ 65535까지 설정이 가능하며, 기본값으로 0이 설정되어 있음
6 thdra 터치 그리기
활성화
thdra=1 (on), thdra=0 (off)
화면을 터치하여 그림판과 같이 그림을 그릴 수 있도록 하는 기능을 활성화 하는 환경 변수, 기본값으로 0이 설정되어 있음
7 ussp 통신 대기 모드 ussp=30
Nextion HMI Display 모듈에 통신 데이터의 수신이 지정한 시간 동안 일어나지 않을 때, 자동으로 대기 모드(Sleep Mode)로 진입하도록 하는 시스템 변수, 0 ~ 65535까지 지정이 가능하며, 기본값으로 0이 설정되어 있음.(단위는 초이며, 최대 지정할 수 있는 시간은 18시간 12분 15초까지 지정이 가능)
8 thsp 터치 미사용
대기 모드
thsp=30
Nextion HMI Display 모듈에 터치 입력이 지정한 시간 동안 일어나지 않을 때, 자동으로 대기 모드(Sleep Mode)로 진입하도록 하는 시스템 변수, 0 ~ 65535까지 지정이 가능하며, 기본값으로 0이 설정되어 있음.(단위는 초이며, 최대 지정할 수 있는 시간은 18시간 12분 15초까지 지정이 가능)
9 thup 터치 자동 동작 thup=0 (do not wake), thup=1 (wake on touch)
Nextion HMI Display 모듈이 대기 모드(Sleep Mode)에 진입하였을 때, 사용자에 의한 터치 입력이 발생되면, 자동으로 동작 모드로 전환되는 기능을 설정하는 환경 변수, 기본값으로 0으로 설정됨
10 sendxy 실시간 터치
좌표 전송
sendxy=1 (start sending) sendxy=0 (stop sending)
사용자가 Nextion HMI Display 모듈에 터치 입력을 할 때, 실시간으로 터치 입력 좌표를 송신하도록 하는 기능을 활성화하는 시스템 변수, 기본값으로 0으로 설정됨
11 delay 시간 지연 delay=100
Nextion HMI Display 모듈이 코드를 실행하는 과정 중 delay 명령어를 만나면, 지정된 시간만큼 시간 지연 동작을 수행하는 시스템 변수, 0 ~ 65535까지 지연 시간 설정이 가능하며, 단위는 ms
12 sleep 대기 모드 sleep=1 (Enter sleep mode) or sleep=0 (Exit sleep mode)
Nextion HMI Display 모듈이 해당 명령어를 실행하게 되면, 대기 모드로 진입하거나 해제되는 동작을 수행, 대기 모드에서 동작 모드로 넘어올 시 자동으로 화면 갱신 동작을 동반
13 bkcmd 값 반환
성공 /실패
bkcmd=3
명령에 대한 동작 또는 값 반환의 결과 통보 수준을 결정하는 시스템 변수 기본값으로 2가 설정되어 있음
14 rand 난수값 생성 n0.val=rand
읽기 전용. 기본값으로 0 ~ 4294967295 사이의 범위에서 난수가 생성되며, 별도의 명령어로 난수 생성 범위를 조정할 수 있음
15 sys0
sys1
sys2
숫자
시스템 변수
sys0=10 sys1=40 sys2=60 n0.val=sys2
sysx 변수는 숫자형 데이터를 저장할 수 있는 전역 변수로 별도의 선언을 하지 않고도 접근하여 사용할 수 있는 미리 지정된 변수, 변수의 크기는 32-Bit이며, 0 ~ 4294967295의 범위 내에서 사용할 수 있음
16 wup 기동 페이지 wup=2, n0.val=wup
Nextion HMI Display 모듈이 대기 모드(Sleep Mode)에서 동작 모드로 전환될 때, 나타낼 페이지를 지정하는 시스템 변수, 기본값으로 255로 지정되어 있음(255는 기동 페이지가 지정되지 않은 상태를 나타냄)
17 usup 기동 통신 usup=0, usup=1
Nextion HMI Display 모듈이 대기 모드(Sleep Mode)에서 동작하고 있을 때, 외부로부터의 통신 데이터를 수신할 때, 동작 모드로 전환될 수 있도록 설정하는 시스템 변수
usup=0 일 때, 외부에서 HMI로 sleep=0ÿÿÿ를 수신받으면 동작 모드로 전환
usup=1 일 때, 외부에서 HMI로 어떠한 통신 데이터라도 수신 받으면, 동작 모드로 전환
18 tch0
tch1
tch2
tch3
터치 좌표 위치 x.val=tch0, y.val=tch1
읽기 전용. 터치 누름을 할 때, 터치가 눌린 위치의 x좌표가 tch0에 y좌표가 tch1에 저장되고, 터치 누름을 뗄 때, 터치 눌림이 떼진 위치의 x좌표가 tch2에, y좌표가 tch3에 저장됨

 

 7. Format of Nextion Return Data(반환값 형식) 

끝으로 Nextion HMI Display 모듈의 반환값 형식에 대해서 알아보도록 하겠습니다. Nextion HMI Display 모듈은 UART 통신으로 MCU 등과 같은 주제어 장치와 연결해서 사용하다보니 통신 데이터의 깨짐이나 기타 여러 가지 환경 요인 등으로 HMI 내부에서 정상적으로 명령어 처리를 못하거나 기타 예상할 수 없는 문제점이 발생할 수 있습니다.
따라서 이와 같은 문제점을 보다 신뢰성있게 극복하기 위해서는 Nextion HMI Display 모듈의 반환값 형식을 잘 알고 이를 적절하게 확인하여 Nextion HMI Display 모듈을 제어해야 할 것입니다. 그럼 아래의 표는 Nextion HMI Display 모듈에서 반환하는 형식을 나타내었습니다.

순번 Byte bkcmd 길이 상세설명
1 0x00 2,3 4 명령어 무효 0x00 0xFF 0xFF 0xFF
수신 받은 명령어가 유효하지 않은 상태로 정상적인 명령어 처리를 할 수 없을 때 송신하는 데이터
2 0x01 1,3 4 명령어 유효 0x01 0xFF 0xFF 0xFF
수신 받은 명령어가 유효한 상태로 정상적으로 명령 처리를 할 수 있을 때 송신하는 데이터
3 0x02 2,3 4 컴포넌트 ID
무효
0x02 0xFF 0xFF 0xFF
유효하지 않은 컴포넌트 ID 또는 이름을 사용하여 명령을 내렸을 때 송신하는 데이터
4 0x03 2,3 4 페이지 ID
무효
0x03 0xFF 0xFF 0xFF
유효하지 않은 페이지 ID 또는 이름을 사용하여 명령을 내렸을 때 송신하는 데이터
5 0x04 2,3 4 사진 ID
무효
0x04 0xFF 0xFF 0xFF
유효하지 않는 사진 ID를 사용하여 명령을 내렸을 때 송신하는 데이터
6 0x05 2,3 4 글꼴 ID
무효
0x05 0xFF 0xFF 0xFF
유효하지 않은 글꼴 ID를 사용하여 명령을 내렸을 때 송신하는 데이터
7 0x06 2,3 4 파일 동작 무효 0x06 0xFF 0xFF 0xFF
유효하지 않는 파일로 동작에 실패할 경우 송신하는데이터
8 0x09 2,3 4 CRC 무효 0x09 0xFF 0xFF 0xFF
CRC 검사결과 문제가 있을 경우 송신하는 데이터
9 0x11 2,3 4 통신 속도 무효 0x11 0xFF 0xFF 0xFF
유효하지 않은 통신속도를 설정했을 때 송신하는 데이터
10 0x12 2,3 4 Waveform ID 무효 0x12 0xFF 0xFF 0xFF
유효하지 않는 Waveform ID 또는 채널을 지정하여 명령을 내릴 때 송신하는 데이터
11 0x1A 2,3 4 변수명 또는 속성값 무효 0x1A 0xFF 0xFF 0xFF
유효하지 않는 변수명 또는 속성명으로 명령을 내릴 때 송신하는 데이터
12 0x1B 2,3 4 변수 연산 무효 0x1B 0xFF 0xFF 0xFF
변수 연산 시 변수의 속성에 따라 정상적인 연산이 불가할 경우 송신하는 데이터
13 0x1C 2,3 4 대입 무효 0x1C 0xFF 0xFF 0xFF
속성값을 대입할 때 잘못된 값으로 대입할 경우 송신하는 데이터
14 0x1E 2,3 4 전달인자 수
무효
0x1E 0xFF 0xFF 0xFF
명령어의 전달 인자의 수가 지정된 수에 일치하지 않을 때 송신하는 데이터
15 0x1F 2,3 4 IO 동작 실패 0x1F 0xFF 0xFF 0xFF
IO 동작에 실패할 경우 송신하는 데이터
16 0x20 2,3 4 탈출 문자 무효 0x20 0xFF 0xFF 0xFF
지원하지 않는 탈출문자를 사용했을 때 송신하는 데이터
17 0x23 2,3 4 변수명 오류 0x23 0xFF 0xFF 0xFF
변수명이 너무 길 때 오류가 발생하면 송신하는 데이터
18 0x00 - 6 Nextion 시작 0x00 0x00 0x00 0xFF 0xFF 0xFF
Nextion HMI Display 모듈의 전원 공급되어 동작하면 송신하는 데이터
19 0x24 - 4 시리얼 버퍼
오버플로우
0x24 0xFF 0xFF 0xFF
시리얼 통신 버퍼가 지정된 버퍼 수보다 많은 데이터를 수신 받아 처리가 불가할 때 송신하는 데이터
20 0x65 - 7 터치 이벤트 0x65 0x00 0x01 0x01 0xFF 0xFF 0xFF
터치 이벤트가 발생할 때 송신하는 데이터
0x00 : 페이지 번호
0x01 : 컴포넌트 ID
0x01 : 터치가 눌리면 0x01, 터치가 해제되면 0x00
21 0x66 - 5 현재 페이지
번호
0x66 0x01 0xFF 0xFF 0xFF
현재 페이지 번호 요청 명령에 따라 현재 페이지 값을 송신하는 데이터
0x01 : 현재 페이지 번호
22 0x67 - 9 터치 좌표
(동작 모드)
0x67 0x00 0x7A 0x00 0x1E 0x01 0xFF 0xFF 0xFF
sendxy=1 명령어와 함께 Nextion HMI가 동작 중인 상태일 때 좌표값 데이터를 송신
0x00 0x7A : x좌표(Big endian)
0x00 0x1E : y좌표(Big endian)
0x01 : 터치 눌림(0x00 : 터치 릴리즈)
23 0x68 - 9 터치 좌표
(대기 모드, Sleep Mode)
0x68 0x00 0x7A 0x00 0x1E 0x01 0xFF 0xFF 0xFF
sendxy=1 명령어와 함께 Nextion HMI가 대기 중(Sleep Mode)인 상태일 때 좌표값 데이터를 송신
0x00 0x7A : x좌표(Big endian)
0x00 0x1E : y좌표(Big endian)
0x01 : 터치 눌림(0x00 : 터치 릴리즈)
24 0x70 - - 문자열 데이터 반환 0x70 0x61 0x62 0x31 0x32 0x33 0xFF 0xFF 0xFF
get 명령어를 사용하여 문자열 값을 요청할 때 송신하는 데이터
0x61 0x62 0x31 0x32 0x33 : 문자열 ab123
25 0x71 - 8 숫자 데이터
반환
0x71 0x01 0x02 0x03 0x04 0xFF 0xFF 0xFF
get 명령어를 사용하여 숫자 값을 요청할 때 송신하는 데이터
0x01 0x02 0x03 0x04 : 숫자 67305985
26 0x86 - 4 자동 대기 모드 진입 0x86 0xFF 0xFF 0xFF
Nextion HMI Display 모듈이 자동으로 대기 모드에 진입하면 송신하는 데이터(단, sleep=1 명령어를 통해 대기 모드로 진입할 때에는 해당 데이터를 송신하지 않음)
27 0x87 - 4 자동 동작 모드 진입 0x87 0xFF 0xFF 0xFF
Nextion HMI Display 모듈이 대기 모드에서 자동으로 동작 모드로 진입하면 송신하는 데이터(단, sleep=0 명령어를 통해 동작 모드로 진입할 때에는 해당 데이터를 송신하지 않음)
28 0x88 - 4 Nextion 준비 0x88 0xFF 0xFF 0xFF
Nextion HMI Display 모듈이 전원 ON 이후 정상적으로 초기화 동작이 완료되었을 때 송신하는 데이터
29 0x89 - 4 Micro SD
업그레이드
시작
0x89 0xFF 0xFF 0xFF
Nextion HMI Display 모듈에서 Micro SD 카드의 입력이 감지되고 난 후 업그레이드 절차에 진입하면 송신하는 데이터
30 0xFD - 4 Transparent Data 종료 0xFD 0xFF 0xFF 0xFF
Transparent Data 모드에서 요청한 모든 데이터의 수신이 완료되면 송신하는 데이터
31 0xFE - 4 Transparent Data 준비 0xFE 0xFF 0xFF 0xFF
Transparent Data 모드의 요청이 시작되면 송신하는 데이터

 

더 많은 내용은 공식 홈페이지에서 확인하세요.
https://nextion.tech/instruction-set/#s3

반응형