C - Двойной анализ массива символов - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь проверить / показать, какую кнопку я нажимаю, мне сказали использовать конкретно массив двойных символов.

С приведенным ниже кодом я получаю следующий вывод: 1 78 9 10 11 MuteRec LockPlay и lcd не обновляются, чтобы ничего не писать.

int displayButton(int buttonActivated)
{
    int parse = 0;
    char buttonNameArray[21][4] = {
        {"1   "},{"2   "},{"3   "},{"4   "},
        {"5   "},{"6   "},{"7   "},{"8   "},
        {"9   "},{"10  "},{"11  "},{"12  "},
        {"13  "},{"14  "},{"15  "},{"16  "},
        {"Mute"},{"Rec "},{"Lock"},{"Play"},
        {"    "}
    };

    for(parse = 0; parse < 3; parse++)
    {
        DRV_HD44780_putString(16 + parse, 1, &buttonNameArray[buttonActivated][parse]);
    }
    return(21);
}

void testKeyboardTask()
{
    int nbButton = 0;
    int buttonActivated = 21;

    while(1)
    {
        DRV_KEYBOARD_readKeyboard();
        int buttonId;
        for (buttonId=0;buttonId<20;buttonId++)
        {
            if (buttonStateArray[buttonId] == 1 && nbButton < 20)
            {
                buttonActivated = buttonId;
                nbButton++;
            }
        }
        if(nbButton > 1)
        {
            DRV_HD44780_putString(0, 3, "Error Multiple Press");
            osDelay(1000);
            DRV_HD44780_putString(0, 2, "                    ");
        }
        else
            buttonActivated = displayButton(buttonActivated);

        nbButton = 0;
    }
 }

Кажется, что кнопка активируется с течением времени (добавляя 6 к себе).Я не могу понять, почему я получаю этот вывод (я довольно новичок в c), и с переключателем он работает просто отлично,

Если кто-нибудь может понять, почему

1 Ответ

0 голосов
/ 26 июня 2018

Как все говорят, я просто забыл о нулевом терминаторе, так как 4 символа не хватило для его удержания.

Спасибо всем вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...