You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Processing如何解析Arduino串口输出的两个不同距离值?

问题解决

一、拆分Arduino发送的两个距离数值

你的Arduino当前发送的格式是R[数值]CM\nL[数值]CM\n(例如R25CM\nL18CM\n),Processing可以通过字符串解析提取这两个数值,具体方案如下:

修改后的Processing代码

if(comPort.available() > 0){
  String pulse = comPort.readStringUntil('\n'); // 按换行读取完整行,避免拿到不完整数据
  if(pulse != null){
    // 提取右侧距离(R开头,CM结尾)
    if(pulse.startsWith("R")){
      int rIndex = pulse.indexOf("CM");
      if(rIndex != -1){
        String rightStr = pulse.substring(1, rIndex);
        distanceRight = Integer.parseInt(rightStr);
      }
    }
    // 提取左侧距离(L开头,CM结尾)
    else if(pulse.startsWith("L")){
      int lIndex = pulse.indexOf("CM");
      if(lIndex != -1){
        String leftStr = pulse.substring(1, lIndex);
        distanceLeft = Integer.parseInt(leftStr);
      }
    }
    
    // 用解析后的数值执行逻辑(注意原代码中val、X2需对应初始化)
    int val = distanceRight; // 示例用右侧距离,可按需调整
    int X2 = 0; // 初始化X2,根据你的场景修改初始值
    if(val >= 30){
      X2 -= 20;
    } else if(val >= 15 && val <= 30){
      X2 -= 10;
    } else if(val >= 5 && val <= 15){
      X2 += 10;
    } else if(val <= 5){
      X2 += 20;
    }
  }
}

关键说明

  • 用readStringUntil('\n')替代readString(),确保每次读取完整的一行数据,避免因串口数据分段导致解析失败。
  • 通过startsWith()判断数据归属,用indexOf("CM")定位数值边界,最后截取字符串并转换为整数。

你也可以优化Arduino的发送格式,简化解析逻辑:

// 修改Arduino串口发送部分
Serial.print(distanceRight);
Serial.print(",");
Serial.println(distanceLeft);

对应的Processing解析代码:

if(comPort.available() > 0){
  String line = comPort.readStringUntil('\n');
  if(line != null){
    String[] values = split(line, ",");
    if(values.length == 2){
      distanceRight = Integer.parseInt(values[0]);
      distanceLeft = Integer.parseInt(values[1]);
    }
  }
}

二、Arduino是否支持文件指针操作?

这取决于使用的存储介质:

  • SD卡模块:使用官方SD库创建File对象后,可调用seek()移动文件指针,用position()获取当前指针位置,完全支持传统文件指针操作逻辑。
  • 内置EEPROM:没有传统文件指针,但可通过指定内存地址直接读写,address参数相当于手动控制的指针位置,例如EEPROM.read(address)、EEPROM.write(address, value)。
  • Flash存储:程序所在的Flash区域,仅支持按地址读取常量数据,无文件指针,但可通过地址定位访问。

内容的提问来源于stack exchange,提问作者HunterM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:07:02