需要帮助理解Writefile

时间:2016-05-11 09:49:03

标签: arduino serial-port writefile

我希望您的帮助能够理解一些能够在我的项目中帮助我的代码。没有太多细节,这就是导致我这么多问题的原因:

    bool Serial::WriteData(char *buffer, unsigned int nbChar)
{
    DWORD bytesSend;

    //Try to write the buffer on the Serial port
    if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
    {
        //In case it don't work get comm error and return false
        ClearCommError(this->hSerial, &this->errors, &this->status);

        return false;
    }
    else
        return true;
}

我使用此函数通过串口将变量发送到我的Arduino Uno,如下所示:

snprintf(Data, sizeof(Data) - 1, "%3.1f", (int)(pf->speedKmh)*1.0);
SP->WriteData(Data, sizeof(Data) - 1); printf("\nData\n");

一些有用的信息:

  • speedkmh是一个浮动

  • char数据[8] =“”;

所以我的问题是:我想知道完全发送给Arduino的内容。目前我真的不知道它是否正在发送一个数组,一次一个,如果它发送一个浮点数......你能帮我理解这个吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

以下行:     snprintf(数据,sizeof(数据) - 1,"%3.1f",(int)(pf-> speedKmh)* 1.0);

将浮点数转换为字符串(字符数组)。然后

SP->WriteData(Data, sizeof(Data) - 1); printf("\nData\n");

一次一个地通过串口发送这些字符。

顺便说一下,为什么你将你的浮点数转换为整数,然后再转换为浮点数(通过乘以1.0),然后转换为字符串,这一点并不十分清楚。正如我所看到的,这会导致截断浮点数的小数部分,然后附加一个误导性的" .0"到字符串(来自" .1f"控制字符串的一部分)。也就是说,1.0和1.4都将转换为" 1.0"。