双向通信-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-演示

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

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

串口通信接收区出现多余的乱码怎么解决

通信交互方式

操作系统 直接通信和间接通信的区别在于

NRF24L01双向无线通信

计算机网络_物理层

python 中的multiprocessing 模块