【发布时间】:2015-03-01 00:15:56
【问题描述】:
我正在为我的 arduino 写一个草图,我想检查我的字符串的最后一个字符。
例如:
如果输入是cats-,我想看看最后一个字符(在我的例子中是“-”)是否是实际的 -
我使用的代码:
串行事件函数
void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '.') {
stringComplete = true;
}
}
}
这是通过检查输入是否与- 相等来检查输入字符串是否完成。但是,这仅适用于控制台,因为我使用的 python 脚本将所有内容一起发送
void loop() {
if (stringComplete) {
Serial.println(inputString);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.println("Altitude:");
display.println(inputString);
display.display();
// clear the string:
inputString = "";
stringComplete = false;
}
知道如何检查吗?
【问题讨论】:
-
为什么这个标签是 Python?
-
if (inputString[strlen(inputString) - 1] == '-')? -
我认为您的“== '.'”在这里只是一个错字,实际上在您的代码中是“== '-'”?
-
抱歉,您似乎遗漏了关键点,即 这不是有效的 C 语法。不管你有没有意识到,它一定是 C++。
-
这一行:'inputString += inChar;',在 C 中,不会将字符附加到字符串。将字符附加到 inputString 的地址的作用是什么。如果您启用了所有编译器警告,它会告诉您有问题。一个可用的方法是: inputString[strlen(inputString)+1] = '\0'; inputString[strlen(inputString)] = inChar;仅当代码在插入字符之前跳过将 inputString[] 缓冲区清除为所有 '\0' 时才需要第一条语句