Ciao 访客, welcome back to old school! :p
@alvin213 报错原因是数组溢出。你应当自行检查q 数组的长度。提示你几点。1. 检查t 是否为null。2. 检查q 的长度。3. 用readStringUntil 更优于readString。另外,俺想问一下processing 部分的代码你是否是从哪个网站上扒下来的,俺已经不止一次地看到有人贴类似的代码询问问题,Serial 对象的名字都毫无例外的是duankou。。。。。。这作者发布前估计连自己都没编译过,太扯淡了。。。
String msg = "";String separator = ",";String endingMark = ";";int a = 10;int b = 30;void setup() { Serial.begin(9600); msg = String(a)+separator+String(b)+endingMark;}void loop() { Serial.print(msg); delay(500);}
import processing.serial.*;Serial port;int a,b;String msg;void setup() { size(200, 200); port = new Serial(this, "COM5", 9600);}void draw(){ if (port.available() > 0){ msg = port.readStringUntil(';'); if(msg != null){ String [] msgChildren = splitTokens(msg,",;"); a = int(msgChildren[0]); b = int(msgChildren[1]); println("a = "+a+", b = "+b); } }}
俺写了个例子,亲测,没有问题,直接上代码给你吧,没耐心解释了,相关函数的文档页已经贴给你了,你还问俺里面参数的意思,俺真不知道该说啥好。。。- -Arduino 代码程序代码String msg = "";String separator = ",";String endingMark = ";";int a = 10;int b = 30;void setup() { Serial.begin(9600); msg = String(a)+separator+String(b)+endingMark;}void loop() { Serial.print(msg); delay(500);}Processing 代码程序代码import processing.serial.*;Serial port;int a,b;String msg;void setup() { size(200, 200); port = new Serial(this, "COM5", 9600);}void draw(){ if (port.available() > 0){ msg = port.readStringUntil(';'); if(msg != null){ String [] msgChildren = splitTokens(msg,",;"); a = int(msgChildren[0]); b = int(msgChildren[1]); println("a = "+a+", b = "+b); } }}