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
Arduino串行至处理-can';t将字符串转换为int_Arduino_Serial Port_Integer_Processing - Fatal编程技术网

Arduino串行至处理-can';t将字符串转换为int

Arduino串行至处理-can';t将字符串转换为int,arduino,serial-port,integer,processing,Arduino,Serial Port,Integer,Processing,我希望这很简单: Arduino正在以DEC字符串的形式发送传感器读数。该代码正在工作…它发送一连串的距离传感器读数。“数字”字符串标识传感器,然后告知距离。202173100410 这是它从Arduino发送的方式: void打印距离(int-id,int-dist){ Serial.print(id);//id是传感器 如果(距离>=150 | |距离0){ myString=myPort.readStringUntil(lf); int val=Integer.parseInt(myStr

我希望这很简单:

Arduino正在以DEC字符串的形式发送传感器读数。该代码正在工作…它发送一连串的距离传感器读数。“数字”字符串标识传感器,然后告知距离。202173100410

这是它从Arduino发送的方式:

void打印距离(int-id,int-dist){
Serial.print(id);//id是传感器
如果(距离>=150 | |距离0){
myString=myPort.readStringUntil(lf);
int val=Integer.parseInt(myString);
//int val=Integer.valueOf(myString);
如果(val>=0){
//中心传感器

如果((val>=30&&val=310&&val=3100&&val=20)&(val=210)&&(val=2100)&&&(val尝试使用myString.toInt(myString必须是字符串对象而不是字符数组)

这些行中的任何一行都应该工作:

int val=Integer.parseInt(myString);
int val=Integer.valueOf(myString);
如果不是,则说明
myString
有问题。通常错误是由
String
变量包含非数字字符引起的,如
“ABC”
“XYZ”

但是,它看起来像是数值,因为它正在打印出
“30”
。所以发生了其他事情

我想知道是否有额外的不可见字符被添加到
myString
变量中。请尝试以下操作:

println(myString);
println(myString.length());

您还可以检查
Character
类中的有用函数,然后检查
myString
中的每个字符,以确保它包含您期望的内容。

正确的语句在代码中,但已注释掉。请使用Integer.parseInt()谢谢,但我尝试了这两个语句,并且都抛出了相同的错误…我将检查行终止符。Arduino println命令添加终止符,以便您知道它是行或字符串的结尾。使用trim(MyString)删除终止符。@mOpenG Yep,这正是我猜测的结果。
trim()的好建议
功能。