18 uint8_t NexTouch::__buffer[256] = {0};
30 while (nexSerial.available() > 0)
35 if (NEX_RET_EVENT_TOUCH_HEAD == c)
37 if (nexSerial.available() >= 6)
40 for (i = 1; i < 7; i++)
42 __buffer[i] = nexSerial.read();
46 if (0xFF == __buffer[4] && 0xFF == __buffer[5] && 0xFF == __buffer[6])
48 iterate(list, (NexPid)__buffer[1], (NexCid)__buffer[2], (NexEventType)__buffer[3]);
70 NexTouchEventCb pop,
void *pop_ptr,
71 NexTouchEventCb push,
void *push_ptr)
78 this->__cbpop_ptr = pop_ptr;
79 this->__cbpush_ptr = push_ptr;
120 dbSerialPrint((uint32_t)
this);
132 dbSerialPrint(
"(null)");
135 dbSerialPrint((uint32_t)cbPush);
137 dbSerialPrint((uint32_t)cbPop);
138 dbSerialPrintln(
"]");
141 void NexTouch::attachPush(NexTouchEventCb push,
void *ptr)
144 this->__cbpush_ptr = ptr;
147 void NexTouch::detachPush(
void)
150 this->__cbpush_ptr = NULL;
153 void NexTouch::attachPop(NexTouchEventCb pop,
void *ptr)
156 this->__cbpop_ptr = ptr;
159 void NexTouch::detachPop(
void)
162 this->__cbpop_ptr = NULL;
165 void NexTouch::iterate(
NexTouch **list, NexPid pid, NexCid cid, NexEventType event)
175 for(i = 0; (e = list[i]) != NULL; i++)
180 if (NEX_EVENT_PUSH == event)
184 else if (NEX_EVENT_POP == event)
194 void NexTouch::push(
void)
198 cbPush(__cbpush_ptr);
202 void NexTouch::pop(
void)
222 uint8_t temp[4] = {0};
224 nexSerial.setTimeout(timeout);
225 if (
sizeof(temp) != nexSerial.readBytes((
char *)temp,
sizeof(temp)))
230 if (temp[0] == NEX_RET_CMD_FINISHED
241 dbSerialPrintln(
"recvRetCommandFinished ok");
245 dbSerialPrintln(
"recvRetCommandFinished err");
258 while (nexSerial.available())
263 nexSerial.print(cmd);
264 nexSerial.write(0xFF);
265 nexSerial.write(0xFF);
266 nexSerial.write(0xFF);
282 bool str_start_flag =
false;
283 uint8_t cnt_0xff = 0;
284 String temp = String(
"");
288 if (!buffer || len == 0)
294 while (millis() - start <= timeout)
296 while (nexSerial.available())
298 c = nexSerial.read();
314 else if (NEX_RET_STRING_HEAD == c)
316 str_start_flag =
true;
327 ret = ret > len ? len : ret;
328 strncpy(buffer, temp.c_str(), ret);
332 dbSerialPrint(
"recvRetString[");
333 dbSerialPrint(temp.length());
336 dbSerialPrintln(
"]");
354 uint8_t temp[8] = {0};
361 nexSerial.setTimeout(timeout);
362 if (
sizeof(temp) != nexSerial.readBytes((
char *)temp,
sizeof(temp)))
367 if (temp[0] == NEX_RET_NUMBER_HEAD
373 *number = (temp[4] << 24) | (temp[3] << 16) | (temp[2] << 8) | (temp[1]);
381 dbSerialPrint(
"recvRetNumber :");
382 dbSerialPrintln(*number);
386 dbSerialPrintln(
"recvRetNumber err");
392 bool NexTouch::getBrightness(uint32_t *brightness)
406 nexSerial.begin(9600);
438 uint8_t temp[5] = {0};
446 nexSerial.setTimeout(500);
447 if (
sizeof(temp) != nexSerial.readBytes((
char *)temp,
sizeof(temp)))
452 if (temp[0] == NEX_RET_CURRENT_PAGE_ID_HEAD
466 dbSerialPrint(
"recvPageId :");
467 dbSerialPrintln(*pageId);
471 dbSerialPrintln(
"recvPageId err");
491 dbSerialPrintln(
"TouchCalibration ok ");
496 dbSerialPrintln(
"TouchCalibration err ");
515 dbSerialPrintln(
"disableTouchFocus ok ");
520 dbSerialPrintln(
"disableTouchFocus err ");
540 dbSerialPrintln(
"pauseSerialCommand ok ");
545 dbSerialPrintln(
"pauseSerialCommand err ");
564 dbSerialPrintln(
"recoverySerialCommand ok ");
569 dbSerialPrintln(
"recoverySerialCommand err ");
588 utoa(dimValue, buf, 10);
596 dbSerialPrint(
"setCurrentBrightness[ ");
597 dbSerialPrint(dimValue);
598 dbSerialPrintln(
"]ok ");
604 dbSerialPrintln(
"setCurrentBrightness err ");
623 utoa(dimDefaultValue, buf, 10);
631 dbSerialPrint(
"setDefaultBrightness[");
632 dbSerialPrint(dimDefaultValue);
633 dbSerialPrintln(
"]ok");
638 dbSerialPrintln(
"setDefaultBrightness err ");
657 if(mode != 0 && mode != 1)
659 dbSerialPrintln(
"mode input ok ");
670 dbSerialPrintln(
"sleepMode ok ");
675 dbSerialPrintln(
"sleepMode err ");
694 utoa(baudrate, buf, 10);
702 dbSerialPrintln(
"setCurrentBaudrate ok ");
707 dbSerialPrintln(
"setCurrentBaudrate err ");
726 utoa(defaultBaudrate, buf, 10);
734 dbSerialPrintln(
"setDefaultBaudrate ok ");
739 dbSerialPrintln(
"setDefaultBaudrate err ");
NexPid getPid(void)
Get page id.
bool setDefaultBaudrate(uint32_t defaultBaudrate)
Set default baudrate.
NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
Constructor of Nextouch.
bool nexInit(void)
Init Nextion's baudrate,page id.
static void sendCommand(const char *cmd)
Send command to Nextion.
const char * getObjName(void)
Get component name.
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
void print(void)
Print current object address,page id,component id, component name,pop event function address...
static uint8_t mainEventLoop(NexTouch **list)
Watting for Nextion's touch event.
bool disableTouchFocus(void)
Disable all touch hot.
NexCid getCid(void)
Get component id.
bool setDefaultBrightness(uint8_t dimDefaultValue)
Set default backlight brightness value.
bool sendCurrentPageId(uint8_t *pageId)
Return current page id.
bool recoverySerialCommand(void)
Recovery serial instruction execution.
bool sleepMode(uint8_t mode)
Set device in sleep mode.
bool setCurrentBaudrate(uint32_t baudrate)
Set current baudrate.
bool pauseSerialCommand(void)
Pause serial instruction execution.
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)
Receive string data.
bool setCurrentBrightness(uint8_t dimValue)
Set current backlight brightness value.
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Root Class of Nextion Components.
bool touchCalibration(void)
Touch screen calibration.