我使用我的arduino作为硬件在环(HIL)模拟以及simulink。现在我想要的是将带有十进制元素的矩阵串行传输到我的arduino,让arduino执行一些简单的计算并返回小数值。
这是我用于我的arduino接收数据的代码:
#include <MatrixMath.h>
float incomingbyte;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>0){
incomingbyte = Serial.read();
}
Serial.write(incomingbyte*2);
delay(1000);
}
总是会给我以下错误:
exit status 1
call of overloaded 'write(float)' is ambiguous
我所做的simulink图如下所示:
我注意到只通过串口发送uint8有效,我在发送之前没有尝试将数字转换为uint8,基本上没有任何反应。
有没有办法传输带十进制元素的矩阵?
感谢。
答案 0 :(得分:1)
如果你想以文本格式发送浮动,你必须使用Serial.print(float_var);
和一些分隔符,如空格或换行符(使用println
)。
如果要在其二进制表示中发送浮点值,则必须使用Serial.write((byte*)&float_var, sizeof(float_var));
,因为写入目的是发送原始字节。
我没有使用你的float incomingbyte
,因为这是一个非常误导的名字。