我正在尝试检查/显示我按下的按钮,有人告诉我专门使用双字符数组。
使用下面的代码,我得到以下输出:1 7 8 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还是很陌生的),并且通过开关它可以很好地工作,
如果有人可以看到原因
答案 0 :(得分:2)
每个人都说我只是忘记了NULL终止符,因为4个字符不足以容纳它。
谢谢大家。