>>> 星瞳科技|OpenMV中国官方网站 <<<

>>> 星瞳科技店铺地址|OpenMV中国官方代理,全球九大代理商之一 <<<

>>> OpenMV3 Cam M7 官方高配版上市啦~戳我戳我戳我~ <<<

>>> 星瞳科技-OpenMV中文教程网 <<<

这节其实不是OpenMV的教程,而是Arduino的教程,因为有些同学不知道如何正确解析OpenMV上传输的数据,所以这里分享一下。

Talk is cheap, show the code!

/*
 * test for communicate with openmv
 *Serial data is like
 *[(1,2)(22,4)(444,333)(0,-22)(22,-111)]
 */

typedef struct
{
  int data[50][2] = {{0,0}};
  int len = 0;
}List;
List list;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  if(Serial.available())
  {
    getList();
    for (int i=0; i<list.len; i++)
    {
      Serial.print(list.data[i][0]);
      Serial.print('\t');
      Serial.println(list.data[i][1]);
    }
    clearList();
  }

}


String detectString()
{
  while(Serial.read() != '[');
  return(Serial.readStringUntil(']'));
}
void clearList()
{
  memset(list.data, sizeof(list.data),0);
  list.len = 0;
}
void getList()
{
  String s = detectString();
  String numStr = "";
  for(int i = 0; i<s.length(); i++)
  {
    if(s[i]=='('){
      numStr = "";
    }
    else if(s[i] == ','){
      list.data[list.len][0] = numStr.toInt();
      numStr = "";
    }
    else if(s[i]==')'){
      list.data[list.len][1] = numStr.toInt();
      numStr = "";
      list.len++;
    }
    else{
      numStr += s[i];
    }
  }
}

结果是这样的:


和上节一起用的话,就是第一个小球的坐标是(1,2),第二个小球的坐标是(22,4)。。。。。