Processing 简单写入处理

Processing 简单写入处理,processing,Processing,这是我在processing中编写的一段代码 {import processing.serial.*; 串行端口; //从串行类int val创建对象; //从串行端口接收的数据 void setup(){size(860860); //我知道我mac上串行列表中的第一个端口 //始终是我的FTDI适配器,因此我打开Serial.list()[0]。 //在Windows计算机上,这通常会打开COM1。 //打开您正在使用的任何端口。字符串portName=Serial.list()[1]; m

这是我在processing中编写的一段代码

{import processing.serial.*;
串行端口;
//从串行类int val创建对象;
//从串行端口接收的数据
void setup(){size(860860);
//我知道我mac上串行列表中的第一个端口
//始终是我的FTDI适配器,因此我打开Serial.list()[0]。
//在Windows计算机上,这通常会打开COM1。
//打开您正在使用的任何端口。字符串portName=Serial.list()[1];
myPort=新序列号(此端口名为9600);
}  
void draw(){
背景(255);
如果((鼠标>100)&&(鼠标>50)&(鼠标按下))
{  
//如果鼠标位于正方形上方,则填充(204);
//更改颜色和myPort。写入('U');
//发送一个H来指示鼠标在正方形上println(“U”)}rect(100,50,100,100);//如果((鼠标按下)&&&&(鼠标按下)&&&&(鼠标按下)&&&&&(鼠标按下)&&&&(鼠标按下)&&&&(鼠标按下)>200)){//如果鼠标在正方形上,则填充(204);
//更改颜色和myPort.write('L');//发送一个H以指示鼠标位于方形println(“L”);}rect(50200100100);//左
如果((鼠标按下)&&&(鼠标>180)&&&(鼠标>200)){//如果鼠标位于正方形上方,则填充(204);
//更改颜色和myPort.write('R');
//发送一个H以指示鼠标位于方形打印LN(“R”)上方;
}  
rect(180200100100);
//对
如果((mousePressed)和(&&&(mouseX>100)和(&&(mouseY>350)){//如果鼠标位于正方形上方,则填充(204);
//更改颜色和myPort。写入('B');
//发送一个H以指示鼠标位于方形打印LN(“B”)上方;
}
rect(100350100100);//返回
}
}

我想在鼠标悬停在4个框中的任何一个上时,通过串行端口发送输出U、L、R、B。顶部框U、底部框D、左侧框L等。但我得到的是ULD而不是D,LUL而不是L,还有其他各种随意的输出。请帮忙。请忽略我代码中的注释。。谢谢

让我们看看代码的一部分。这是
draw()
函数中的第一条if语句:

if((mouseX>100)&&(mouseY>50)&(mousePressed))
{       
println(“U”);
} 
请仔细阅读此代码,并尝试描述逻辑将执行的操作。您可以检查
mouseX>100
mouseY>50
。但即使鼠标位于窗口的右下角,这也是事实!大概您不希望在单击窗口右下角时按下“向上”按钮

您的逻辑中的此缺陷是导致发送多条消息的原因。您没有充分限制鼠标位置。您只检查按钮的顶部和左侧边缘。您还必须对照按钮的右侧底部边缘进行检查。此if语句可能如下所示:

if(mousePressed&&mouseX>100&&mouseX<200&&mouseY>50&&mouseY<150){
println(“U”);
}
Processing editor附带了一个。只需转到
文件
示例
,然后查找
按钮
示例


此外,您可能希望开始使用和相关函数,而不是从
draw()
函数开始执行所有操作。大概你不想在按下鼠标时每秒连续发送60次“U”。使用
mouseClicked()
将帮助您隔离单个鼠标事件。

请以一种有条理且更易读的方式展示您的代码。如何?对不起,我刚加入。你的密码难以辨认。请重新格式化,并从左起4个空格缩进所有内容,以便在此处正确显示。只需在每条语句末尾(每个分号后)添加一些新行(按enter键)。然后确保在每行之前保留4个空格,以便所有这些行都显示为代码,这样可以吗@伊梅沙苏达辛哈