如何在串口接收的数据中读取数字和字符串
本帖最后由 ken0137 于 2014-6-23 09:24 编辑我向板子发送字符串,比如“ML100”,希望读到ML和100,参考了好多帖子,但是都做不到,求解
下面能读到字符串里的数字100String comdata = "";int led;
void setup()
{
Serial1.begin(9600); //串口开始,波特率9600
Serial1.print("Arduino ready!");//连接上电脑时发送一个字符串
}
void loop()
{
while (Serial1.available() > 0)
{
led=Serial1.parseInt();
}
}下面能读到整个字符串
String comdata = "";
void setup()
{
Serial1.begin(9600); //串口开始,波特率9600
Serial1.print("Arduino ready!");//连接上电脑时发送一个字符串
}
void loop()
{
while (Serial1.available() > 0)
{
comdata += char(Serial1.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial1.println("comdata:"+comdata);
comdata = "";
}
} Serial1.parseInt()這是返回整數型數據,你這ML100是字符,所以不會返回數據
先把全部字符讀進來,在判斷是字符還是數字並分開儲存,最後再轉換成int數據
String comdata = "";
String numData="";
String charData="";
void setup()
{
Serial.begin(9600); //串口开始,波特率9600
Serial.print("Arduino ready!");//连接上电脑时发送一个字符串
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println("comdata:");
for(int i=0;i<comdata.length();i++)
{
if(comdata>='0'&&comdata<='9')
numData+=(char)comdata;
else
charData+=(char)comdata;
}
Serial.println(numData);
Serial.println(charData);
numData="";
charData="";
comdata = "";
}
}
刚才试了一下 可以用 根据ascII码判断,不是很麻烦
好像也有判断字符和数字的函数 xiaoliumonitor 发表于 2014-6-21 15:19 static/image/common/back.gif
String comdata = "";
String numData="";
String charData="";
谢谢~~~~~~~~~~~~~~~~ 有学会了不少东西,谢谢! 请教如果发送的是时间和float值怎么办?
比如串口传送的是"2014/8/8,23:28,30.15"
如何分析并保持在3个变量中? atlas 发表于 2014-8-8 23:29 static/image/common/back.gif
请教如果发送的是时间和float值怎么办?
比如串口传送的是"2014/8/8,23:28,30.15"
日期格式,用字符串方式发送和接收;
浮点,如果是单精度浮点,存储占4个字节,可以在发送时,直接以字符方式发放浮点变量起始地址开始的4个字节,接收以后,数组强制转换还原成浮点类型,无论是发送和接收,一个MEMCPY命令就够了...... 请问一下parseInt(); 函数是什么用 同求 怎么把测距传感器的数据以坐标的形式显示在OLED上 void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available()>0){
Serial.print(char(Serial.read()));
}
}
页:
[1]