如何取出从PC 的串口监视器送到Arduino的多个数值

常常有人问到要一次传许多个整数给 Arduino, 我来写一个简单函数给大家用:

// 首先弄个全局便量 Global Variable 存放答案:

long iAns[13]; // 最多 12 个, 是 Global variable
// iAns[0] 第 0 个故意不用, 浪费一个 :-)
///
// 用法:
///// int howMany = getNums( );
////// 如果 howMany 是 0 表示没 data
/// 函数如下
int getNums( ) {
  if ( ! Serial.available( ) ) return 0;
  String gg = "";
  while (Serial.available( ) ) {
    gg += (char)Serial.read( );
    delay(2);
  }
  String tmps = " ";
  int p, t, len;
  len = gg.length( );
  p = t = 0;
  for (int i = 1; i < 13; ++i) {
    t = gg.indexOf(",", p); // 找下一个 ","
    if (t < 0) t = len; // 没找到 ! 已经最后一个 !
    tmps = gg.substring(p, t);
    tmps.trim( ); // 去掉头尾空白
    iAns[i] = tmps.toInt( );
    p = t + 1;
    if (t == len) return i;
  } // for(
  return 12; // 最多支援 12
} // getNums(
/////////
void setup( ) {
  Serial.begin(9600);
  //...
}
void loop( ) {
  int ans = getNums( );
  if (ans > 0) {
    Serial.print(iAns[1]);
    for (int i = 2; i <= ans; ++i)
      Serial.print(String(", ") + iAns);
    Serial.println("\r\n========");
    for (int i = 1; i <= ans; ++i) {
      Serial.println(String("") + i + ": " + iAns);
    }
  } // if(
}// loop(

/************
好啦, 你可以测试看看从 Serial Monitor 串口监视器, 输入 123, 5566, 33888, 432, 55555, 999999, 然后按 ENTER 或点 Send


如果要输入友小数点的 float 也可以呢 ?
很简单, 把前面 long iAns[13]; 的 long 改为 float 即可
当然
for Loop 内那句
kk[ i ] = tmps.toInt( );
要改为
kk[ i ] = tmps.toFloat( );
这样就可以了 !
**************************************************/

猜你喜欢

转载自blog.csdn.net/acktomas/article/details/88365098