TT_TGB 发表于 2016-10-27 20:53:33

蓝牙接收字符串,并且将字符串通过标识符来截取到数组

望大神来看看,提出更好的代码!
接收到的数据不连续,有时还接收到的不全!

//接收蓝牙数据,主要是字符串(t,001,123456;)
while(Serial.available()>0){
//截取三个字符串,储存到三个数组array
for(int i=0;i<3;i++)
array="";
for(int index=0;index<3;){
    mychar=Serial.read();
    if(mychar==';')
    break;
    else if(mychar==',')
    index++;
    else array+=mychar;
    }
}
Serial.println(array);

569620972 发表于 2016-10-27 22:22:36

你这说的不明白,代码也不完整 ,端口波特率是多少?

Paderboy 发表于 2016-10-28 09:23:26

:loveliness:参看下这个吧
要先学会搜索。。自学的基础啊

TT_TGB 发表于 2016-10-28 12:01:26

569620972 发表于 2016-10-27 22:22
你这说的不明白,代码也不完整 ,端口波特率是多少?

就是将截取到的字符串通过串口监视器打印出来,求完美的代码!
String array;
char mychar;
void setup() {

Serial.begin(9600);

while(Serial.available()>0){
for(int i=0;i<3;i++)
array="";
for(int index=0;index<3;index++){
    mychar=Serial.read();
    if(mychar==';')
    break;
    else if(mychar==',')
    index++;
    else array+=mychar;
    }
}
for(int i=0;i<3;i++)
Serial.println(array);

}
void loop(){

}

exxew 发表于 2016-10-28 14:23:21

本帖最后由 exxew 于 2016-10-28 14:24 编辑

else if(mychar==',')
    index++;
    else array+=mychar;

这里的index++应该使用continue;否则循环上去后,for里面的index又会+1,所以array就会跳过去,没有数据。

TT_TGB 发表于 2016-10-28 18:21:17

exxew 发表于 2016-10-28 14:23
else if(mychar==',')
    index++;
    else array+=mychar;


我试试!先谢谢啦!

TT_TGB 发表于 2016-10-28 19:31:08

TT_TGB 发表于 2016-10-28 18:21
我试试!先谢谢啦!

大神,还没解决!能修改一下代码吗?
页: [1]
查看完整版本: 蓝牙接收字符串,并且将字符串通过标识符来截取到数组