作者 主题: 菜鸟求教!谢谢大家!  (阅读 13085 次)

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 菜鸟求教!谢谢大家!
« 回复 #15 于: 五月 09, 2013, 04:22:48 上午 »
@alvin213

报错原因是数组溢出。你应当自行检查q 数组的长度。提示你几点。

1. 检查t 是否为null。

2. 检查q 的长度。

3. 用readStringUntil 更优于readString。


另外,俺想问一下processing 部分的代码你是否是从哪个网站上扒下来的,俺已经不止一次地看到有人贴类似的代码询问问题,Serial 对象的名字都毫无例外的是duankou。。。。。。这作者发布前估计连自己都没编译过,太扯淡了。。。

alvin123

  • Newbie
  • *
  • 帖子: 32
Re: 菜鸟求教!谢谢大家!
« 回复 #16 于: 五月 11, 2013, 09:30:08 下午 »
@alvin213

报错原因是数组溢出。你应当自行检查q 数组的长度。提示你几点。

1. 检查t 是否为null。

2. 检查q 的长度。

3. 用readStringUntil 更优于readString。


另外,俺想问一下processing 部分的代码你是否是从哪个网站上扒下来的,俺已经不止一次地看到有人贴类似的代码询问问题,Serial 对象的名字都毫无例外的是duankou。。。。。。这作者发布前估计连自己都没编译过,太扯淡了。。。


不是抄的!自己写的!只不过是之前学的书里面写着duankou ,然后编的时候一时想不到什么就也用duankou了

alvin123

  • Newbie
  • *
  • 帖子: 32
Re: 菜鸟求教!谢谢大家!
« 回复 #17 于: 五月 12, 2013, 11:15:39 下午 »
@alvin213

报错原因是数组溢出。你应当自行检查q 数组的长度。提示你几点。

1. 检查t 是否为null。

2. 检查q 的长度。

3. 用readStringUntil 更优于readString。



另外,俺想问一下processing 部分的代码你是否是从哪个网站上扒下来的,俺已经不止一次地看到有人贴类似的代码询问问题,Serial 对象的名字都毫无例外的是duankou。。。。。。这作者发布前估计连自己都没编译过,太扯淡了。。。





你好!!我用println(q.length + " values found");检查了数组q的长度为一!

问题1:那么按我原来的代码在A里面应该传送给P一个字符串“10,20“!拆分出来数组应该长度为2啊?

问题2:这句代码String[] q = splitTokens(t, ", ")用来 拆分”t“ ,括号里面的逗号是什么意思?这句怎么用?

问题3:怎么判断t是否为null ,我用一个if判断报错说nill为boolean什么的?

谢谢解答!

alvin123

  • Newbie
  • *
  • 帖子: 32
Re: 菜鸟求教!谢谢大家!
« 回复 #18 于: 五月 13, 2013, 10:11:17 下午 »
@RavenKwok  可以解答一下吗?在学习这个卡住了!万分感谢!

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 菜鸟求教!谢谢大家!
« 回复 #19 于: 五月 14, 2013, 04:45:58 上午 »
俺写了个例子,亲测,没有问题,直接上代码给你吧,没耐心解释了,相关函数的文档页已经贴给你了,你还问俺里面参数的意思,俺真不知道该说啥好。。。- -

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);
    }
  }
}
« 最后编辑时间: 五月 14, 2013, 04:56:49 上午 作者 RavenKwok »

alvin123

  • Newbie
  • *
  • 帖子: 32
Re: 菜鸟求教!谢谢大家!
« 回复 #20 于: 五月 14, 2013, 11:46:28 上午 »
俺写了个例子,亲测,没有问题,直接上代码给你吧,没耐心解释了,相关函数的文档页已经贴给你了,你还问俺里面参数的意思,俺真不知道该说啥好。。。- -

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);
    }
  }
}


谢谢!感谢你耐心解答!

Tags: