Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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
Java 处理过程中出现将字符串转换为浮点的错误_Java_Arduino_Processing - Fatal编程技术网

Java 处理过程中出现将字符串转换为浮点的错误

Java 处理过程中出现将字符串转换为浮点的错误,java,arduino,processing,Java,Arduino,Processing,我在处理过程中遇到了一个问题,当我将valuestring转换为float时,第一个值是好的,但其余的都是NaN。我找不到解决这个问题的办法。我打印字符串值以进行测试。这是正确的,但在我把它转换成float之后。那将是南 ps:数值来自序列号,我将我的Arduino与进程连接 以下是代码的一部分 whilemyport.available>0 { myString=myport.readString;//从串口读取字符串 num=floatmyString;//将字符串转换为float prin

我在处理过程中遇到了一个问题,当我将valuestring转换为float时,第一个值是好的,但其余的都是NaN。我找不到解决这个问题的办法。我打印字符串值以进行测试。这是正确的,但在我把它转换成float之后。那将是南

ps:数值来自序列号,我将我的Arduino与进程连接

以下是代码的一部分

whilemyport.available>0 { myString=myport.readString;//从串口读取字符串 num=floatmyString;//将字符串转换为float printnum;//打印numfloat,但打印第一个 //价值是好的,其余的都是“楠”。 //printmyString;//打印字符串,所有值都正确 打印“”; ifmyString!=null { //num=floatmyString; storeDatamyString; //printlmystring; //打印数据[i-1]; //println'; 延迟1000; } } 结果如下

转换完成: 不转换,仅打印字符串值 下面是arduino代码

总和=sqrtXg*Xg+Yg*Yg+Zg*Zg; 总和*=10; sum=mapsum,0,1024,0,5000/10.0; Serial.printlnsum; 延迟100;
我认为问题不在Arduino内部,而是在处理代码内部

我看了很多,我注意到有一个错误,最有可能解决你的问题

您使用了val=myport.readString;而不是val=myport.readStringUntil'\n'

差别很小,但在你的情况下会很大。 看看函数和函数

不管怎么说,这也是政府的建议


当然,在你的Arduino代码中,你必须很好地使用,就像你在做Serial.printlnsum一样;而不是Serial.printsum,因为在最后一种情况下,在发送换行之前,它不会发送到processing nothing。

我发现我的问题在Arduino代码中,因此我更改了从Arduino发送数据的方式。我用println发送数据。这就是通向南的关键。我在谷歌上搜索,然后我测试了不同的方法来改变发送方式,直到找到这个链接:


感谢法比奥的博客,他的博客介绍了解决这个问题的好方法。如果你有同样的问题,也许你可以用这个来解决。

我想你需要把字符串中的每个字符都转换成一个浮点数?尝试迭代字符串中的字符,并对每个字符调用foatc。您确定打印myString变量时得到的结果是这样的吗?这毫无意义:这些新词是从哪里来的?您使用的是print函数而不是println函数,因此它们应该都是一行。@flutillie您有此转换的示例代码吗?如果您需要,请发布,谢谢。@KevinWorkman在arduino串行端口监视器中,myString值与处理相同。或者是新行。@Peto我添加了arduino代码我修复了我的问题,谢谢你的帮助。@PetoI看不到你的链接,我的防病毒软件阻止了它,但是如果你想不使用链接,你可以自己回答,这也可以及时改变,帮助其他用户。不客气;我会的。谢谢@佩托