将 ASCII 连接到字符串以进行比较

Concatenate ASCII to String for comparaison

我将 Arduino 与串行总线一起使用,并尝试根据我在总线上发送的 ASCII 字词使其进行交互。我浏览了很多网站并找到了很多解决方案,但无法真正找到我要找的东西。

例如,如果我发送“123”:

char requestBuffer[10];    
void loop(){
   if (Serial.available() > 0){
       int bytesRead = Serial.readBytesUntil('\n', requestBuffer, 10);

       char mott[3];
       mott[0] = (int)requestBuffer[0];
       mott[1] = (int)requestBuffer[1];
       mott[2] = (int)requestBuffer[2];

       Serial.println(mott); // it does print 123
       if ( mott == 123 ){   // doesn't works
           blablabla.
       }
   } 
}

我真的不知道如何将键入的内容正确存储在变量中以便进行比较。我对 C 不太友好,所以也许有一些方法可以做到这一点,但我还不明白。

char mott[3]; 必须是 char mott[4] = {0}; 否则您的 println 调用中没有 NUL 终止符。目前你的程序的行为是未定义的。由于不幸的事故,您的 println 目前可以正常工作。

获得 mott 数组后,使用 int n = atoi(mott);char 字符串转换为 int。这里数组 mott 衰减 char* 指针,这是 atoi.

可接受的类型

(表达式 mott == 123 将指向 mott 数组第一个元素的 char* 指针与 123 进行比较,这几乎肯定不是。)