小编ash*_*ash的帖子

从arduino到处理的多个串行值?

我有一个小问题.

我从arduino附加的3轴加速度计+ 3轴磁力计+罗盘标题传递信息.这些缩放到midi范围(0-127).

ARDUINO:这是通过串行打印传递的,格式为76a45b120c23d12e23f34g

  Serial.print(shiftAx);
  Serial.print("a");
  Serial.print(shiftAy);
  Serial.print("b");
  Serial.print(shiftAz);
  Serial.print("c");
  Serial.print(shiftMx);
  Serial.print("d");
  Serial.print(shiftMy);
  Serial.print("e");
  Serial.print(shiftMz);
  Serial.print("f");
  Serial.print(shiftHead);
  Serial.print("g");
Run Code Online (Sandbox Code Playgroud)

我可以看到这使用我的串行监视器.(但我不确定是否以"g"打印为println.)

处理2:

我缓冲到我的void设置中的g()

port = new Serial(this, "/dev/tty.usbmodem411", 9600);
port.bufferUntil('g'); 
Run Code Online (Sandbox Code Playgroud)

我有这个功能

    void serialEvent (Serial port)
{

  data = port.readStringUntil('g');

  AxVal = data.substring(0, data.indexOf('a'));

  AyVal = data.substring(data.indexOf("a") + 1, data.indexOf("b"));  

  AzVal = data.substring(data.indexOf("b") + 1, data.indexOf("c"));

  MxVal = data.substring(data.indexOf("c") + 1, data.indexOf("d"));

  MyVal = data.substring(data.indexOf("d") + 1, data.indexOf("e"));

  MzVal = data.substring(data.indexOf("e") + 1, data.indexOf("f"));

  HeadVal = data.substring(data.indexOf("f") + 1, data.indexOf("g"));

}
Run Code Online (Sandbox Code Playgroud)

问题所以这不起作用.没有显示文字.(它只是一个简单的fill(),text())

我不明白为什么.问题是我的协议(如果我可以称之为),我是如何解压缩字符串的?或者其他一些问题. …

processing serial-port communication arduino serial-communication

6
推荐指数
1
解决办法
7120
查看次数