我正在为一个项目编码,在这个项目中,我使用串口命令更新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 .