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 controlP5数字框变量打印_Arduino_Processing_Control P5 - Fatal编程技术网

Arduino controlP5数字框变量打印

Arduino controlP5数字框变量打印,arduino,processing,control-p5,Arduino,Processing,Control P5,我正在尝试使用controlp5在数字框中打印一个变量。数据从串行端口读取并存储在变量中。我想打印数字框中的值,但它不起作用。当我在控制台中打印它时,它会显示值,但不会显示在数字框中 这是我的密码: 导入控制p5.*; 输入处理。串行。*; 控制p5-cp5; 字体; 在这里输入代码 无效设置(){ 大小(300450); 端口=新序列号(此“COM3”,19200); cp5=新控制P5(本); font=createFont(“calibri light bold”,20); cp5.添加按

我正在尝试使用controlp5在数字框中打印一个变量。数据从串行端口读取并存储在变量中。我想打印数字框中的值,但它不起作用。当我在控制台中打印它时,它会显示值,但不会显示在数字框中

这是我的密码:

导入控制p5.*;
输入处理。串行。*;
控制p5-cp5;
字体;
在这里输入代码
无效设置(){
大小(300450);
端口=新序列号(此“COM3”,19200);
cp5=新控制P5(本);
font=createFont(“calibri light bold”,20);
cp5.添加按钮(“增加”).设置位置(100,50)
.setSize(120,70).setFont(font);
cp5.添加按钮(“减少”).设置位置(100250)
.setSize(120,70).setFont(font);
cp5.addNumberbox(“温度”)设置位置(100160)
.setSize(120,70).setFont(font).SetString值(val);
作废提款(){
背景(150,0150)`
填充(0,255,0);
文本字体(字体);
文本(“控制”,80、30);
如果(端口可用()>0)
{ 
val=port.readStringUntil('\n');
}
println(val);
空隙增加(){
port.write('r');
}
空隙减少(){
port.write('b');
}

在此代码中,
val
是变量,数据从串行端口读取并存储在
val
中。setString值(val)
没有打印
val
的值。但是,如果我在命令控制台中打印
val
,它会显示变量
val

的值。请尝试发布有效代码。此代码将无法编译,因为缺少括号,我们无法运行它,因为它不是一个

我还建议你养成了解发生了什么的习惯。逐行检查你的代码,找出每一行是什么时候发生的

具体来说,您仅在此处设置值:

cp5.addNumberbox("temp").setPosition(100,160)
.setSize(120,70).setFont(font).setStringValue(val);
val
设置为默认值时,这一行代码在开头出现一次。(请注意,您甚至没有在发布的代码中声明变量。请发布MCVE。)

稍后在代码中,您将更新
val
变量:

if ( port.available() > 0) 
{ 
  val = port.readStringUntil('\n'); 
}
println(val); 

但请注意,您没有更新显示在数字框中的值。更新
val
变量不会自动更新已使用该变量的位置。
每次值更改时,您都需要手动更新数字框。

使用
.setValue()
而不是
。setString值()

您必须调用
Integer.valueOf(val)
将其转换为您的Numberbox将接受的类型

生成的代码可能如下所示:

if ( port.available() > 0) 
{ 
  val = port.readStringUntil('\n');
  cp5.get("temp").setValue(Integer.valueOf(val));
}


但是,如果您只是想显示该值,我建议使用Processing的
text()
或CP5
TextArea
textlab
,因为
Numberbox
旨在为用户提供一种简单的方式来更改/指定值,而不仅仅是显示值。当鼠标位于框上方时,可以通过滚动鼠标中键来调整Numberbox的值。

可以打印值在数字框中,您是否在读取值之前未读取且仅读取一次?