我希望您的帮助能够理解一些能够在我的项目中帮助我的代码。没有太多细节,这就是导致我这么多问题的原因:
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的内容。目前我真的不知道它是否正在发送一个数组,一次一个,如果它发送一个浮点数......你能帮我理解这个吗?
谢谢!
答案 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"。