蓝牙在传输大数据_ble蓝牙数据传输同时接收数据和发送数据 - CSDN
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

    蓝牙一个包最多只能发送20字节的命令,如果一个命令为30字节,那么肯定要分包发送

    1字节 2个长度 如:0x01

     

    那么分包发送需要一套规则,来让设备端解析,然后把包合起来,才能收到完整命令

     

     

    比如要发送30个字节命令如下:

    12345678900987654321ABCDEFFEDCBA01  23456789012345678901234567  (60个长度)

     

     

    规定 0400 开头的表示 分包数据开始

     

    那么app发送的第一个包为:0400 02   其中的02 表示,分包的总包数为2

     

    那么第二个包为:0401  01  12345678900987654321ABCDEFFEDCBA01(17个数据字节)

                       其中0401 表示这是分包数据  01 表示 这是第1个包  后面的17个 字节就是第一个包的数据

     

    第三个包为:0401  02  23456789012345678901234567  (13个数据字节)

                       其中0401 表示这是分包数据  02 表示 这是第2个包  后面的13个 字节就是第二个包的数据

     

    设备那边收到这些命令 可以得到 总包数 为2 ,然后拼装起来得到总命令。

    这只是一个简单的规则,大致表达了这个意思。

    欢迎加入我的交流群:416157653

     

     

    转载于:https://my.oschina.net/u/3043165/blog/790524

    展开全文
  • 那问题来了,如何用BLE来进行较大数据的读写呢,原理很简单,只需要将大数据进行拆分再合并既可;

        众所周知,蓝牙低功耗(BLE)是为省电而设计,其省电原理是因为通过特征值进行读写的时候,自定义的特征值一次最大传输的数据量为20字节;由于一次传输的数据量很小,所以,非常省电;

       那问题来了,如何用BLE来进行较大数据的读写呢,原理很简单,只需要将大数据进行拆分再合并既可;

       开发过BLE的人都会有这种感觉:蓝牙连接太不稳定了,拆分了再合并靠谱吗,会不会中途断开,发送的顺序会不会在对方收到后会不会乱掉,等等诸多问题。

       结论:现在测试过后发现:蓝牙并没有想象中的那么不堪,在测试中经过多次测试,发现蓝牙协议很靠谱,在发送一段数据过程中,蓝牙如果断开,其会立即重新连接,再上次断开的地方继续发送,很是靠谱;

       另外,关于拆分和合并,不同人有不同的方法,我的方法很简单,就是将20字节的数,20字节包含序号位+内容;合并的时候采用了map来存储序号和内容,序号作为键值;

       PS:如何实现大数据的读写呢?

       中心设备上有onCharacteristicRead() 和onCharacteristicWrite()的回调;外设有onCharacteristicReadRequest()和onCharacteristicWriteRequst()回调;大家可以尽可能多的使用这几个回调;

       以中心向外设写大数据为例:首先大数据已经被拆分了,先向外设写序号1 的内容,然后当onCharacteristicWrite()回调时,则说明上次的写完成了,此时可以在回调中继续写序号2……,直到结束,当然外设在收到每一段数据后都需要进行合并处理啊~;记住:一定要等到收到回调之后才可以进行下一次读写,否则就会失败;

    展开全文
  • Android bluetooth 通信,简单蓝牙连接分析。监听蓝牙连接状态。完美发送接收超长文本。蓝牙聊天,可发送表情及文字。
  • 使用环境(蓝色粗体字为特别注意内容) 1、软件环境:Keil uv5.15 2、硬件环境:STM32F103C8T6、蓝牙BLE4.0模块 一个项目中需要用到蓝牙BLE传图片...需要将摄像头采集到JPEG图片通过蓝牙传输到上位机,图片大小大...

    使用环境(蓝色粗体字为特别注意内容)

    1、软件环境:Keil uv5.15

    2、硬件环境:STM32F103C8T6、蓝牙BLE4.0模块

    在一个项目中需要用到蓝牙BLE传图片,(巨坑,亏我想的出来。。。。),没办法自己选的路趴着也要走下去_^_ ,还好图片是用JPEG压缩过的,数据量小了不少!我用的蓝牙模块如下图所示:

     需要将摄像头采集到JPEG图片通过蓝牙传输到上位机,图片大小大约有18kb左右,调来调去,直接将单片机和电脑串口相连数据传输就很稳定,但是通过蓝牙模块串口透传之后数据变得很不稳定,出错的概率很大,导致crc校验失败。后来发现是蓝牙模块传输的问题,在使用蓝牙传输大量数据的时候,需要注意以下两点:

    ①一次性不能给太多数据

    如使用 printf("%02X", databuf[i]);的方式将大量数据传送出去即databuf的长度很大的话容易出问题,正确的处理方式是将所有数据拆分成多段发送出去,这时候databuf就不会太长,测试中取40比较合适,超过50就容易出现误码。

    ②每次给完数据需要delay一小段时间。

    测试中必须大于100ms

    这里贴上一些关键代码:

    void print_str(const void *data, uint32_t start, u8 str_len)
    {
        uint32_t end = start + str_len;
        for (;  start < end; start++)
        {
            //value = *((uint8_t *)data +start);
            printf("%02X", imgbuf[start]);
    
        }
        //  printf("-");
    
        delay_ms(SEND_DELAY);
    }
     if(i)
            {
                if((i + 1) % SEND_SIZE == 0) // 分段发送
                {
                    print_str(data, i - SEND_SIZE_I, SEND_SIZE);
    
                }
                else if(i == size - 1) // 是最后一段且不满一段长度
                {
                    print_str(data, i - (i % SEND_SIZE), size % SEND_SIZE);
    
                }
            }

     

     

    展开全文
  • iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时数据大于20个字节 如何搞iOS 蓝牙4.0传输数据时...
  • 1.概述 * MTU: 最大传输单元(MAXIMUM TRANSMISSION UNIT) , 指一个PDU (Protocol Data Unit: 协议数据单元,一个传输单元中的有效传输数据)能够传输的最大数据量(多少字节可以一次性传输到对方)。...

    1.概述
      * MTU: 最大传输单元(MAXIMUM TRANSMISSION UNIT) , 指在一个PDU (Protocol Data Unit: 协议数据单元,在一个传输单元中的有效传输数

    据)能够传输的最大数据量(多少字节可以一次性传输到对方)。
      * MTU 交换是为了在主从双方设置一个PDU中最大能够交换的数据量,通过MTU的交换和双方确认(注意这个MTU是不可以协商的,只是通知对方,双方在知道对方的极限后会选择一个较小的值作为以后的MTU,比如说,主设备发出一个150个字节的MTU请求,但是从设备回应MTU是23字节,那么今后双方要以较小的值23字节作为以后的MTU),主从双方约定每次在做数据传输时不超过这个最大数据单元
        MTU交换通常发生在主从双方建立连接关系后(参见"一分钟读懂低功耗蓝牙连接数据包")
        做个对比就可以知道BLE MTU 比较小(不过新的BLE 标准MTU 已经大幅提升,详见即将发表在VIEWTOOL BBS上的后续文章)。
      ****************************************************************“*************************      
       以太网:1500
      IEEE 802.3/802.2: 1492
      X.25: 576
      BLE: 23   => 这就是为什么WIFI 可以用于传输视频,传统蓝牙(BT)可以传输音频,而低功耗蓝牙(BTLE 或者BLE)只能够传输控制数据的原因了。
      ******************************************************************************************
      * MTU 交换命令:属于ATT 命令
      * MTU 交换过程:如下图
        MTU Exchange.png 
      * MTU 两个命令(“MTU 请求”及“MTU 响应”)详解如下(见“4”)

    2.关键字:Hollong BLE 侦听仪,低功耗蓝牙嗅探器, BLE 分析仪,BLE 数据抓取
      Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture

    3.抓取数据包的准备工作
      * 硬件:一个BLE设备(从设备)及对应的主设备(如智能手机里面的相关应用程序,或者通用BLE 工具软件);
               一台HOLLONG BLE SNIFFER (Hollong BLE 侦听仪)
      * 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件, 使用本软件可以打开本文中的数据包附件,进而可以更加方便及更加全面地了解更多细节(包括最全面的数据及数据解析)
            下载链接:
           http://www.viewtool.com/index.ph ... hollong-4-0-4-1-ble

    4. MTU 请求(REQEUST)
       完整数据(以下关注蓝色标注部分)
        MTU request complete.png 
        1)  存取地址
        Access Address: 0xaf9a8c69
        固定为4个字节,其值由连接请求数据包指定(详见“一分钟读懂低功耗蓝牙连接数据包”)

        MTU req access address.png 

       2) 头信息
     Data Header: 0x0706    000. .... = RFU: 0
        ...0 .... = More Data: False
        .... 0... = Sequence Number: 0
        .... .1.. = Next Expected Sequence Number: 1
        .... ..10 = LLID: Start of an L2CAP message or a complete L2CAP message with no fragmentation (0x2)
        000. .... = RFU: 0
        ...0 0111 = Length: 7
        MTU req header info.png 

     3) L2CAP 长度
        在BLE中,GAP,GATT,SMP 都使用L2CAP 通道将命令及数据打包送到链路层(LINK LAYER),L2CAP 打包过程中需要指定L2CAP的长度及通道号。
        Length: 3
        MTU req l2cap size .png 

       4) L2CAP 通道号(CID):channel ID
       CID: Attribute Protocol (0x0004)
        MTU req l2cap channel ID.png    

        5) ATT 命令
         标准发下:
          MTU REQUEST ATT FORMAT.png      
         实际数据包:
        Opcode: Exchange MTU Request (0x02)
        0... .... = Authentication Signature: False
        .0.. .... = Command: False
        ..00 0010 = Method: Exchange MTU Request (0x02)
          MTU req l2cap opcode.png     


       6) MTU 值 (请求的值)
        Client Rx MTU: 185
        MTU req l2cap MTU value.png 
       
       7) CRC 
        MTU req CRC.png 

    4. MTU 响应(RESPONSE)
        完整数据包:
        mtu rsp complete.png 
        1) 存取地址
        Access Address: 0xaf9a8c69
        固定为4个字节,其值由连接请求数据包指定(详见“一分钟读懂低功耗蓝牙连接数据包”)
        mtu rsp access address.png 

        2. 头信息
        Data Header: 0x0712    000. .... = RFU: 0
        ...1 .... = More Data: True
        .... 0... = Sequence Number: 0
        .... .0.. = Next Expected Sequence Number: 0
        .... ..10 = LLID: Start of an L2CAP message or a complete L2CAP message with no fragmentation (0x2)
        000. .... = RFU: 0
        ...0 0111 = Length: 7
        mtu rsp header info.png 

        3. L2CAP 长度
            解释同(请求包)。
            Length: 3
           mtu rsp l2cap size.png 

        4. L2CAP 通道号
            解释同(请求包)。
           CID: Attribute Protocol (0x0004)
           mtu rsp l2cap channel ID.png 

        5. ATT 命令
           标准:
           MTU Response ATT FORMAT.png 

           实例:
           Opcode: Exchange MTU Response (0x03)    0... .... = Authentication Signature: False
        .0.. .... = Command: False
        ..00 0011 = Method: Exchange MTU Response (0x03)
           mtu rsp opcode.png 

         6) MTU 值
          Server Rx MTU: 23
           mtu rsp mtu value.png 

          7)CRC
           CRC: 0xf4767e
        [Expert Info (Note/Checksum): CRC unchecked, not all data available]
           mtu rsp crc.png

    展开全文
  • android蓝牙数据传输 要开发通过蓝牙(BT)进行数据传输的Android应用,从逻辑上讲,应从Android开发者的蓝牙页面开始,该页面详细描述了所有必需的步骤:设备发现,配对,客户端/服务器套接字,RFCOMM通道,等等 ...
  • 全球范围内新型冠状病毒肆虐,做好对感染者和...推出的蓝牙追踪器设备可以有效追溯感染者确诊前密切接触的人群,对感染者接触的多代高危接触者做到精准筛选。 现在中国的新冠病毒无症状感染者占到了现阶段一半左...
  • 智能产品种类越来越多,运用智能家居上的...当下的物联网应用中,无线传输技术可谓众多,但细数下来,应用范围最广且最具潜力的无非是蓝牙、Wifi与ZigBee三种,那么这三种无线传输技术谁能一统天下呢? Wifi  ...
  • 前面谈完了蓝牙5大数据传输,远距离传输,还剩最后也是很重要的一个特性,蓝牙5大广播包数据。首先我们来科普一下何为蓝牙的广播包,以及它的用途。 蓝牙广播 蓝牙从机设备正常工作时会以一定频率发送广播包,告知...
  • app与设备进行大数据交互时,容易断: 解决方法:修改设备的蓝牙连接间隔10-20ms 连接间隔修改方法: 1.设备中有做好接收app发送指令后修改的:根据设备商提供的协议往设备上发送连接间隔时间(如ti芯片就有该...
  • 采用 ti的cc2540协议栈,采用通知方式从机向主机发送大数据 发送20k byte用时3.35s
  • 蓝牙有两种模块: 经典蓝牙(Classic Bluetooth, 简称BT)、低功耗蓝牙(Bluetooth Low Energy, 简称BLE) 经典蓝牙: 蓝牙4.0以下都是&amp;amp;amp;amp;amp;amp;amp;quot;经典蓝牙&amp;amp;amp;amp;amp;amp;amp;...
  • 关于蓝牙的连接及通讯功能实现,欢迎查阅下一篇文章:Android蓝牙开发(二)蓝牙消息传输实现。 蓝牙模块 从蓝牙4.0开始包含两个蓝牙芯片模块: 传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙...
  • 首先针对2.0的蓝牙设备对于数据的传送很有局限,每次只能传输20个字节,如果传输大数据还会特别不稳定,所以关于固件升级,能不通过蓝牙升级就不要通过蓝牙升级,但是有时候必须实现这种需求,就没办法,一定得入坑...
  • Wi-Fi行业长久以来一直致力于让Wi-Fi技术成为物联网领域内的首选无线传输选项,总的来说,WiFi将物联网最后的成功中发挥重要的作用。只是物联网设备的WiFi连接,一个反复出现的批评就是电量消耗和资源占用的增多。...
  • 首先针对2.0的蓝牙设备对于数据的传送很有局限,每次只能传输20个字节,如果传输大数据还会特别不稳定,所以关于固件升级,能不通过蓝牙升级就不要通过蓝牙升级,但是有时候必须实现这种需求,就没办法,一定得入坑...
  • 注:本文由音序为GD的童鞋原创,此代为发表 摘要: 当前,以物联网、大数据和云计算为代表的新一代信息技术发展迅猛,目前正在由IT时代转向DT时代。物联网技术正在通过与其它新技术的不断融合,加速向智能医疗、新...
  • 低功耗蓝牙BLE4.0的数据收发问题

    千次阅读 2018-05-29 10:38:20
    最近有项目需要做一些硬件开发,使用的是Bluno beetle,一个可穿戴设备开发板,自带了BLE 蓝牙。 本来并没有太在意蓝牙之间的区别,感觉集成了蓝牙芯片挺好的。项目是IMU上采集传感器数据传给上位机,通过USB...
  • 本次要实现的功能是基于CC2640R2完成串口与手机app的数据透传,即串口...1.蓝牙数据的传输都是基于Characteristic来操作,simple_gatt_profile.c文件中定义了5个Characteristic,其中Characteristic3具有写权限,...
1 2 3 4 5 ... 20
收藏数 1,289
精华内容 515
关键字:

蓝牙在传输大数据