0

我正在使用带有串行总线的 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 不是超级友好,所以也许有一些方法可以做到这一点,但我还不明白。

4

1 回答 1

2

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

一旦你有你的mott数组,使用int n = atoi(mott);char字符串转换为int. 这里数组mott 衰减到一个char*指针,这是一个可接受的类型atoi

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

于 2020-02-13T09:30:17.200 回答