双向通信-Processing接收字符串

Posted 村头陈师傅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向通信-Processing接收字符串相关的知识,希望对你有一定的参考价值。

双向通信-Processing接收字符串

公众号:STCode

1-效果

在Processing里面画一个矩形,当在矩形区域内单击时,向Arduino发送字符’a’,Arduino接收到后点亮板载的LED灯,同时向Processing发送”The light turn ON“,Processing接收到后显示在屏幕的左上角。当单击矩形框外时,Processing向Arduino发送字符‘b’,Arduino板载的LED灯熄灭,与此同时向Processing发送“The light turn OFF”,Processing接收到字符串后显示在屏幕的左上角。

2-源代码

Processing端:

import processing.serial.*;//导入serial库
Serial myPort;//实例化一个Serial对象
int lf = 10;//换行符号的ASCII码值
String myString = null;//定义一个字符串变量
void setup()
{
	size(300,300);//设置画布大小
	background(125);//设置画布背景颜色
	myPort = new Serial(this, "COM10", 9600);//初始化myPort(根据Arduino分配的端口号填写)
	myPort.clear();
}
void draw()
{
	rect(100,100,50,50);//绘制矩形
	while (myPort.available() > 0)//监听端口
	{
		myString = myPort.readStringUntil(lf); //读字符串,直到出现换行符号后,将字符串赋值给myString变量    
		if(myString!=null)
		{
			background(125);//每次清空屏幕  
			text(myString,10,30);//灯光开启、关闭提示显示在屏幕左上角
		}
	}
}
void mouseClicked()
{
	if((mouseX>=100)&(mouseX<=150)&(mouseY>=100)&(mouseY<=150))//当鼠标在矩形区域内单击时
	{
		myPort.write("a");//往串口发送字母a
	}
	else
	{
		myPort.write("b");//当在矩形区域外单击时,往串口发送字母b
	}
}

Arduino端:

int c=0;
void setup()
{
	Serial.begin(9600);//比特率9600
	pinMode(13,OUTPUT);//设置数字引脚第13脚为输出模式
	digitalWrite(13,LOW);//设置该引脚的初始值为低电平
}
void loop()
{
	if(Serial.available())
	{
		c=Serial.read();
		if(c==97)//如果接收到字母a(ASCII码值为97 )
		{
			digitalWrite(13,HIGH);//第13引脚置高电平,LED灯亮
			Serial.println("The light turn ON");
		}
		else if(c==98)//如果接收到字母b(ASCII码值为98)
		{
			digitalWrite(13,LOW);//第13引脚置低电平,LED灯灭
			Serial.println("The light turn OFF");//向Processing发送灯已关闭的字符串,结尾处有换行符号
		}
	}
}

3-演示

点击方块 image.png

观察Arduino控制器,当点击白色方块内部时,板载的LED灯将点亮,当点击白色方块外部时,板载的LED灯将熄灭。

以上是关于双向通信-Processing接收字符串的主要内容,如果未能解决你的问题,请参考以下文章

通信交互方式

sql [SQL查询片段]用于在命令行或通过R和其他工具使用SQL的快速代码段#tags:sql,R,text processing,命令li

NRF24L01双向无线通信

php只能做网站?基于swoole+websocket开发双向通信应用

计算机网络_物理层

springboot整合websocket实现客户端与服务端通信