arduino与Processing通信问题

网友投稿 1093 2022-11-18

arduino与Processing通信问题

arduino与Processing通信问题

我在网上查到好多资料都是讲的是传输一个数据的问题,没有讲到传输多个数据的问题,我通过一天的摸索,终于找到用arduino给processing传输多个数据的解决方法。下面是讲传输三个数据的代码。 1、先看我的arduino代码我把关键地方写出来,供参考

light = BH1750(); Serial.print(light); Serial.print(','); // smoke(); wenshidu(); if (humidity < 30) { jdq(); } if (temperature > 40) { speak();/*这块的延时也挺重要的,发送数据的速度不能太快,要不然processing接收有可能接收混乱,我这是三个数据,我延时了4秒,我发现可以读取到,而且不出错,我看有的人是发送2个数据是用了0.1秒作为延时,然后如果是其他更多的或者更少的数据,可以试着通过延时来解决,processing那边接收可能混乱的问题。*/ delay(4000);}void wenshidu() { DHT11.read(DHT11PIN); // Serial.print("temperature:"); Serial.print((byte)DHT11.temperature); Serial.print(','); temperature = DHT11.temperature; //Serial.print("humidity:"); Serial.print((byte)DHT11.humidity); Serial.println(','); humidity = (byte)DHT11.humidity; //delay(100);}

这段代码是我的arduino程序主要是向串口发送三个数据,用逗号分隔开,最后以换行作为数据分隔单元的依据。 2、下面是processing的代码 还是将主要的列出来,供大家参考

import processing.serial.*;Serial myPort;byte[] inBuffer = new byte[100];int Hum = 0;int Tem = 0;int light = 0;void setup(){ myPort=new Serial(this,"COM7",9600 ); myPort.clear();/*下面是读取数据的代码,也是最关键的地方,由这里可以读取到arduino传过来的数据也是它们两交互的关键,希望大家好好看看这段代码*/ void readQ(){ if(myPort.available()>0 ) { //receive=myPort.read()+""; if(myPort.readBytesUntil(10,inBuffer)>0) //这里的10是代表换行的ASCLL码是10,所以说只要是你arduino程序是以换行为一组数据的结尾的话,这里的读取单元数据,第一个参数必须是10. { String inputString = new String(inBuffer); String[] inputStringArr = split(inputString,','); light = int(inputStringArr[0]); println(light); Tem = int(inputStringArr[1]); println(Tem); Hum = int(inputStringArr[2]); println(Hum); } //light=myPort.read(); // println(light); //Tem=myPort.read(); //println(Tem); //Hum=myPort.read(); //println(Hum); } }void draw(){ readQ(); /*后面的程序就是利用传输到的数据来进行画图,做各种交互效果了,由自己发挥了*/

好这就是我这个问题的解决方案,如果哪里有问题,恳请指正。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《汇编语言程序设计》余朝琨 课后习题参考答案
下一篇:前端性能的一些理解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~