Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过Arduinos串行连接解析浮点数_Python_Serial Port_Pyserial_Arduino Uno - Fatal编程技术网

Python 通过Arduinos串行连接解析浮点数

Python 通过Arduinos串行连接解析浮点数,python,serial-port,pyserial,arduino-uno,Python,Serial Port,Pyserial,Arduino Uno,我用Arduino Uno控制来自磁性传感器的脉冲。在操作开始之前,我需要读取两个浮点数作为计算的参数。 我的arduino代码如下: int i=0; while (true) //wait until parameters are read { if (Serial.available()) { inData[i++]=Serial.parseFloat(); } if (i>=initLength) { return true; } } 如果

我用Arduino Uno控制来自磁性传感器的脉冲。在操作开始之前,我需要读取两个浮点数作为计算的参数。 我的arduino代码如下:

int i=0;
while (true) //wait until parameters are read
{
  if (Serial.available())
  {
    inData[i++]=Serial.parseFloat();
  }
    if (i>=initLength) {
    return true;
  }
}
如果我使用内置串行监视器没有问题,我可以输入,即“1.5 2.5”,然后按enter键,参数读取正确。 但是如果我使用自己的python程序,它就不再工作了。我用pyserial把参数发送到Arduino

sstr='{0} {1}'.format(1.5,2.5)
ser.write(sstr.encode('ascii'))
ser.flush()
如果使用python发送数据,则以下内容将保存到变量中:

inData[0]: 0.00
inData[1]: 1.5

这似乎是某种编码问题,但我还没有解决。

您的python字符串不能以表示浮点数2.5也已完成的字符结尾。pyserials的
Serial.flush
也不能确保这一点,它只意味着确保缓冲的串行数据是“在线的”。因此,您不会看到
inData[2]=2.5
,即使它几乎就在那里。基本上,Arduino仍在等待字符,因为它不知道2.5是否终止,或者后面是否还会有更多的数字

至于
inData[0]
为0.00,我只能猜测这是未完成解析的剩余部分

试一试

并确保从一开始就有一个空的串行连接

sstr='{0} {1}\n'.format(1.5,2.5)