极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20071|回复: 6

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

[复制链接]
发表于 2016-10-27 20:53:33 | 显示全部楼层 |阅读模式
望大神来看看,提出更好的代码!
接收到的数据不连续,有时还接收到的不全!

  1. //接收蓝牙数据,主要是字符串(t,001,123456;)
  2. while(Serial.available()>0){
  3. //截取三个字符串,储存到三个数组array[i]
  4.   for(int i=0;i<3;i++)
  5.   array[i]="";
  6.   for(int index=0;index<3;){
  7.     mychar=Serial.read();
  8.     if(mychar==';')
  9.     break;
  10.     else if(mychar==',')
  11.     index++;
  12.     else array[index]+=mychar;
  13.     }
  14. }
  15.   Serial.println(array[i]);
复制代码
回复

使用道具 举报

发表于 2016-10-27 22:22:36 | 显示全部楼层
你这说的不明白,代码也不完整 ,端口波特率是多少?
回复 支持 反对

使用道具 举报

发表于 2016-10-28 09:23:26 | 显示全部楼层
参看下这个吧
要先学会搜索。。自学的基础啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 12:01:26 | 显示全部楼层
569620972 发表于 2016-10-27 22:22
你这说的不明白,代码也不完整 ,端口波特率是多少?

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

  4. Serial.begin(9600);  

  5. while(Serial.available()>0){
  6.   for(int i=0;i<3;i++)
  7.   array[i]="";
  8.   for(int index=0;index<3;index++){
  9.     mychar=Serial.read();
  10.     if(mychar==';')
  11.     break;
  12.     else if(mychar==',')
  13.     index++;
  14.     else array[index]+=mychar;
  15.     }
  16. }
  17.   for(int i=0;i<3;i++)
  18.   Serial.println(array[i]);
  19.   
  20. }
  21. void loop(){
  22.   
  23.   }
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-10-28 14:23:21 | 显示全部楼层
本帖最后由 exxew 于 2016-10-28 14:24 编辑

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

这里的index++应该使用continue;否则循环上去后,for里面的index又会+1,所以array[2]就会跳过去,没有数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 18:21:17 | 显示全部楼层
exxew 发表于 2016-10-28 14:23
else if(mychar==',')
    index++;
    else array+=mychar;

我试试!先谢谢啦!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-28 19:31:08 | 显示全部楼层
TT_TGB 发表于 2016-10-28 18:21
我试试!先谢谢啦!

大神,还没解决!能修改一下代码吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 19:50 , Processed in 0.041735 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表