【问题标题】:Concatenate ASCII to String for comparaison将 ASCII 连接到字符串以进行比较
【发布时间】:2020-02-13 09:28:09
【问题描述】:

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

【问题讨论】:

    标签: c string arduino comparison ascii


    【解决方案1】:

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

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

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

    【讨论】:

    • 这个解决方案实际上工作得很好,谢谢伙计。我从未听说过 atoi()
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2012-10-06
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多