Arduino字符串在FreeRTOS任务中不起作用

时间:2016-09-17 21:31:41

标签: c++ arduino freertos

我正在尝试使用内置的String对象读取Arduino Mega 2560上的串行数据,但是当在FreeRTOS任务中使用时不会打印串行数据,如下面的代码

void TaskSerialIn(void *pvParameters)
{
    String json;

    for(;;) {
        while(Serial.available()) {
            json = Serial.readStringUntil('\n');
            Serial.println(json); // this code not printing anything
        }

        vTaskDelay(200 / portTICK_PERIOD_MS);
    }
}

即使我将String声明为全局变量,它也不起作用。 当字符数组用于存储字节

时,以下代码有效
char serialJson[65];

void TaskSerialIn(void *pvParameters)
{
    char * jsonStr;
    int i = 0;

    for(;;) {
        i = 0;

        while(Serial.available()) {
            char inChar = (char) Serial.read();
            serialJson[i++] = inChar;
            if(inChar == '\n') {
                serialJson[i] = '\0';
                Serial.print(serialJson);
            }
        }

        vTaskDelay(200 / portTICK_PERIOD_MS);
    }
}

如何使用String读取串行数据,我们将不胜感激。

0 个答案:

没有答案