【教程】如何取出从PC 的串口监视器送到Arduino的多个数值
常常有人问到要一次传许多个整数给 Arduino,
我来写一个简单函数给大家用:
// 首先弄个全局便量 Global Variable 存放答案:
long iAns; // 最多 12 个, 是 Global variable
// iAns 第 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 = 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);
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;
的 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;
的 long 改为 float 即可
当然
for Loop 內那句
kk[ i ] = tmps.toInt( );
要改为
kk[ i ] = tmps.toFloat( );
这样就可以了 ! 谢谢分享学习一下 你好,我想问下怎么通过串口调试助手向stm32f411re单片机发数据,主要是它的设置程序怎么写啊,谢谢
songboliu 发表于 2015-5-15 17:13 static/image/common/back.gif
你好,我想问下怎么通过串口调试助手向stm32f411re单片机发数据,主要是它的设置程序怎么写啊,谢谢
沒用過通过串口调试助手向stm32f411re单片机发数据
Sorry :(
页:
[1]