【问题标题】:Taking serial data from Arduino and sorting it in python从 Arduino 获取串行数据并在 python 中对其进行排序
【发布时间】:2013-04-04 01:59:43
【问题描述】:

我有一个 arduino 草图,它接收来自 3 个电位器的模拟数据写入外部 EEPROM。当我读回数据时,我会打印出地址号和模拟值,以便在串行监视器中得到类似:

0:221

1:548

2:1023

3:221

4: 548

5:1023

6:221

7:548

8: 1023

我最终需要使用我在处理草图中得到的数字,所以我想在 python/处理中编写一些代码,分别对每个电位器的数据进行排序,以便以后可以轻松地将其传输到处理草图。

任何帮助将不胜感激,我是初学者。

【问题讨论】:

  • 您遇到了什么问题?什么是绊脚石?
  • 排序是什么意思?您的意思是将其从第一个数字的递增索引(0,1,2,3,4...)更改为“p1:221,p2:548,p3:1023”等?
  • 我希望数字 [0, 3, 6, etc] 是一个数组, [1, 4, 7, etc] 是另一个数组, [2, 5, 8] 是另一个数组。
  • 可能是一个简单的 switch() 测试每个字符串的第一部分并相应地对其进行排序......

标签: java python serial-port arduino processing


【解决方案1】:

我一直在做类似的事情,使用处理。

对我有用的是将每组数据放入一个数组中,然后使用 saveStrings() 将数组保存到一个文本文件中。然后,如果需要,我可以将其重新导入,或者在 Excel 中轻松绘制图表。

  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    String[] split = split(inString, ',');
    inFloat0 = float(split[0]);
    inFloat1 = float(split[1]);

    float pot0 = inFloat0;
    pot0list = append(pot0list, pot0);
    float pot1 = inFloat1;
    pot1list = append(pot1list, pot1); 

该代码用于串行字符串中的逗号分隔值,并带有指示数据字符串结尾的换行符。

  //Create string for saving to text file
  String[] pot0listString = new String[pot0list.length];
  for (int i = 0; i < pot0list.length; i++) {
    listString[i] = (Float.toString(pot0list[i]) + ',' + Float.toString(pot1list[i]));
  }

  //Save to text file
  saveStrings("list.txt", listString);

这会将其保存为文本文件,需要对 3 组数据进行一些修改,但它相当简单。

如果你也想使用它,它还有一个 sort.list 可以对你的数据进行排序。

干杯,马特

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2019-05-19
    • 2017-02-14
    • 1970-01-01
    • 2021-10-15
    相关资源
    最近更新 更多