【问题标题】:converting string sent via Arduino Serial to Processing将通过 Arduino 串行发送的字符串转换为处理
【发布时间】:2015-10-12 21:48:22
【问题描述】:

我正在从 Arduino 发送一个字符串。 字符串看起来像这样

2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1/ 

其中第一个数字是 Arduino 引脚,然后由角分隔,然后引脚状态 1 = 高 0 = 低

所以这里是引脚 2 = 低,引脚 3 = 低 .... 引脚 13 = 高

当这个字符串开始处理时,我需要将字符串拆分并将值分配给与引脚对应的变量

类似

int p2 = 0; 诠释 p3 = 0; .. .. .. int pin8 = 1;

什么是实现这一目标的好方法?

我在这里得到的输入就是我所做的,

rawInput = "2,0/3,0/4,0/5,0/6,0/7,0/8,1/9,1/10,1/11,1/12,1/13,1";
pinNumber = split(rawInput, '/');
for (int i =0; i < pinNumber.length; i++) {
  pinValue = split(pinNumber[i], ",");
  hm.put(Integer.parseInt(pinValue[0]), Integer.parseInt(pinValue[1]));
}

这里有什么明显的缺陷吗?似乎在工作

【问题讨论】:

  • 对我来说听起来像是 HashMap 的工作,具有值的唯一键。然后你甚至不必维护多个变量。如果您想获得高/低的实际文本或赋予代码可读性,则可以有一个枚举,或者如果这不重要,您可以只评估该值

标签: java arduino processing


【解决方案1】:

除了存储为 HashMap。您可以将字符串按",/" 拆分为字符串数组。然后使用您的模式,偶数索引是您的引脚编号,奇数索引是您的引脚值。一个循环可以快速实现这一点。

String str = "1,0/2,1"
String[] strArr = str.split("/,");
Map<String, Integer> storeMap = new HashMap(); 
for (int i = 0, i < strArr.length; i++) {
    if (i % 2 == 0) {
        storeMap.put(String.valueOf(i), Integer.parseInt(strArr[i + 1]));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多