Не рабочий пример в библиотеке Nextion

andrwgldmn
andrwgldmn аватар
Offline
Зарегистрирован: 05.12.2018

Имеется стандартный пример из библиотеки Nextion для работы с кнопкой:

/**
 * @example CompButton.ino
 * 
 * @par How to Use
 * This example shows that when the button component on the Nextion screen is released,
 * the text of this button will plus one every time.      
 *
 * @author  Wu Pengfei (email:<pengfei.wu@itead.cc>)
 * @date    2015/7/10
 * @updated 2016/12/25 bring HMI up to v0.32 to avoid too old issues
 * @convert by Patrick Martin, no other changes made
 * @copyright 
 * Copyright (C) 2014-2015 ITEAD Intelligent Systems Co., Ltd. \n
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 */

#include "Nextion.h"

/*
 * Declare a button object [page id:0,component id:1, component name: "b0"]. 
 */
NexButton b1 = NexButton(1, 4, "b1");

char buffer[100] = {0};

/*
 * Register a button object to the touch event list.  
 */
NexTouch *nex_listen_list[] = 
{
    &b1,
    NULL
};

/*
 * Button component pop callback function. 
 * In this example,the button's text value will plus one every time when it is released. 
 */
void b1PopCallback(void *ptr)
{
    uint16_t len;
    uint16_t number;
    NexButton *btn = (NexButton *)ptr;
    dbSerialPrintln("b0PopCallback");
    dbSerialPrint("ptr=");
    dbSerialPrintln((uint32_t)ptr); 
    memset(buffer, 0, sizeof(buffer));

    /* Get the text value of button component [the value is string type]. */
    btn->getText(buffer, sizeof(buffer));
    
    number = atoi(buffer);
    number += 1;

    memset(buffer, 0, sizeof(buffer));
    itoa(number, buffer, 10);

    /* Set the text value of button component [the value is string type]. */
    btn->setText(buffer);
}

void setup(void)
{    
    /* Set the baudrate which is for debug and communicate with Nextion screen. */
    nexInit();

    /* Register the pop event callback function of the current button component. */
    b1.attachPop(b1PopCallback, &b1);
    
    dbSerialPrintln("setup done"); 
}

void loop(void)
{   
    /*
     * When a pop or push event occured every time,
     * the corresponding component[right page id and component id] in touch event list will be asked.
     */
    nexLoop(nex_listen_list);
}



Сразу скажу что моя кнопка находится на странице 2, т.е page1 (ид кнопки и номер страницы указаны в скетче правильно). При загрузке скетча на нажатие кнопки реакции 0 (всё подключено правильно).

В порте видно это:

19:57:24.513 -> ⸮⸮⸮bkcmd=1⸮⸮⸮page 0⸮⸮⸮

 Такое впечатление что нету перехода на вторую страницу (page1). Если это так, то какие возможные пути решения? Интернеты рыл, но ничего не нашёл.. Спасибо.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот один из самых стандартных способов решения

http://arduino.ru/forum/apparatnye-voprosy/crumbuino-128-svoimi-rukami?page=1#comment-291171