Arduino,检查字节数组内的字符



我正在为一个项目编码,在这个项目中,我使用串口命令更新LCD 16x2屏幕上显示的时间。我使用的更新时间的命令是{I,A, H,H,M,M,F},其中表示它的初始化,A表示添加,HH和MM表示要更新到的小时和分钟,F表示完成。

我创建了一个全局字节数组来保存这个输入:

byte bufferEntrada[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

问题:我需要检查命令中可能的字母,但我不知道怎么做。

示例:IA1245F为有效命令,IA12C5F为无效命令。

任何帮助都非常感谢。

如果我正确理解您的问题,您正在发送字符,不是字节。虽然这只是一个细微的差别,但对于你的项目来说,它会产生一些不同。

您正在发送ASCII字符。这意味着字符'0'可以表示为十进制值48。如果查看ASCII表,可以看到字符'0'到'9'的值为48到57(包括)。这些值是您需要接受的整型数字。

if (aChar >= 48 && aChar <= 57) { ... } else { /* not a number */ }

在C中,这可以变得更可读:

if (aChar >= '0' && aChar <= '9') { ... } else { /* not a number */ }

或使用isdigit()标准函数

if (isdigit(aChar)) { ... } else { /* not a number */ }

注意:在Arduino上,对应的函数是isDigit()

好吧,事实证明我很愚蠢,每个字符读取为一个十进制数字引用它在ASCII表中,所以检查是否有任何字符,我只需要运行一个for循环检查是否有任何值在字节数组中是>10 .

最新更新