常常有人问到要一次传许多个整数给 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[i]);
- Serial.println("\r\n========");
- for(int i = 1; i <= ans; ++i) {
- Serial.println(String("") + i + ": " + iAns[i]);
- }
- } // 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( );
- 这样就可以了 !
- **************************************************/
复制代码
好啦, 你可以测试看看从 Serial Monitor 串口监视器
输入 123, 5566, 33888, 432, 55555, 999999
然后按 ENTER 或点 Send
******
Q: 如果要输入友小数点的 float 也可以呢 ?
A: 很简单,
把前面 long iAns[13];
的 long 改为 float 即可
当然
for Loop 內那句
kk[ i ] = tmps.toInt( );
要改为
kk[ i ] = tmps.toFloat( );
这样就可以了 ! |