天道酬勤,学无止境

HM10 ble change characteristic value AT command Arduino

Can anyone help me with the AT command to write characteristic value, Or how to send data from arduino to another ble device using Hm10 module.

The HM10 after sending the AT+START, does advertise packets, and can detect the service and characteristic, But the characteristic value is the default 0x00, How can I change that?

Have checked the data sheet multiple times but can not find an AT command that is capable of doing the same.

UPDATE: Similar problem with setting the HM10 in Central Mode:

Central Mode Setup!

1) AT+ROLE1 - Set up to Central Mode

2) AT+IMME1 - Start from RESET

3) AT+SHOW1 - Show discovered devices

4) AT+DISC? - Discover Devices Get Device MAC ID,

5) AT+CON[MAC ID]

RESULT: Always gives OK+CONNA and after 10seconds OK+CONNF

I am confused, Use of "AT+START" before "AT+DISC?" causes AT+START to not work and viceversa. Using AT+START results into a loop of OK+CONN followed by OK+LOST continuously and no more AT commands are accepted. I believe it does result in a

Can you advice on the right order?

Using LightBlue iOS app as the peripheral. How am I to select a service and subscribe to a characteristic to receive data from the application?

Thank You.

评论

There is no AT command to set a characteristic value.

The HM10 is a serial-port emulation device - whatever serial data you send to the HM10 module (aside from the AT commands) is made available on it's BLE characteristic. Unfortunately the data sheet doesn't document the service and characteristics, but this code suggests that the serial RX/TX characteristic is 0000ffe1-0000-1000-8000-00805f9b34fb

So, data written to the serial port should appear as the value of that characteristic. Data written to that characteristic should be delivered out of the TX serial port pin on the HM10 module.

This thread is a bit dated. But the HM-1X firmware now supports changing the characteristics of a module.

"AT+CHAR?" Will get the current characteristic setting for RX/TX "AT+CHAR0xFFFF" will set the TX/RX characteristics to 0xFFFF

Send: AT+CHAR0xAAA0 Recv: OK+Set:0xAAA0

These features were added v518.

If you need to update your firmware,

Link to Huamao's download site.

I don't have enough reputation to comment on Ladvien's answer, but...

Just a word of warning regarding updating the firmware with a new version from Huamao's download site. http://www.jnhuamao.cn/download_rom_en.asp?id=83

In my experience there were issues with V539, which prevented the firmware operating as an iBeacon - and there may be other problems. I was fortunately enough to find someone emailed me a copy of the V538 firmware and was able to downgrade again.

Huamao doesn't have old versions of the firmware available for download and AFIK there is no way to backup your current firmware version.

But it was possible to downgrade from V539 back to V538 if you have the bin file for V538 etc. i.e At least up as far as V539 the firmware does allow downgrades and was not checking version numbers to only allow upgrades.

No need to use any AT-commands to send data as it works like transparent serial. Currently it works good to upload sketches from iOS devices to Arduino. Check out http://www.apploader.info

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How to use BLE Shield based on HM-10 bluetooth module?
    I'm a new bie on arduino projects. I would like to ask you for some help. I bought a BLE Shield for Arduino from ( http://imall.iteadstudio.com/development-platform/arduino/shields/im130704001.html ). They made this shield using Hm-10 Bluetooth module(http://www.jnhuamao.cn/bluetooth.asp?ID=1). Itead Studio has no sample codes using this shield. I have no idea on how to program it or send AT commands from Arduino. I read the “AT commands” at the data sheet (ftp://imall.iteadstudio.com/Shield/IM130704001_ITEAD_BLE_Shield/DS_IM130704001_ITEAD_BLE_Shield.pdf) and I tried to send "AT commands”
  • SWIFT-BLE通信(SWIFT - BLE communications)
    问题 我有一个SWIFT应用程序,该应用程序必须使用蓝牙LowEnergy模块向我的Arduino发送一个值! 我已经正确完成了搜索和连接部分,但是无法发送和接收任何数据。 这是我的代码,以获取可用的BLE设备列表,并将所有这些内容放入表格视图中,然后在单击单元格后,应用程序提供了将设备与其连接的功能! 所有这些都可以正常工作,但是我不知道例如将“ a”字符从应用程序发送到BLE,并将答案从arduino发送回应用程序! import UIKit import CoreBluetooth class BluetoothList: UITableViewController,CBCentralManagerDelegate, CBPeripheralDelegate { var listValue = [Lista]() var Blue: CBCentralManager! var conn: CBPeripheral! var a: String! var char: CBCharacteristic! func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI
  • SWIFT - BLE communications
    I've got a SWIFT application that have to send a value to my Arduino with Bluetooth LowEnergy module! I've done correctly the search and connection parts but I'm not able to send and receive any data. Here is my code to get a list of BLE devices available and put all this in a table view then after click in a cell the app provide to connect the device with them! All this works perfectly but I don't know to send for example a "a" character from app to BLE and get back the answer from arduino to app! import UIKit import CoreBluetooth class BluetoothList: UITableViewController
  • 蓝牙BLE: ATT协议层中属性(Attribute)
    ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式。属性(Attribute)概念是ATT层的核心,ATT层定义了属性的内容,规定了访问属性的方法和权限。以编程的眼光来看,属性是一个数据结构,它包括了数据类型和数据值,就如同C语言结构体的概念,开发者可以设计独特的结构,来描述外部世界实体。属性包括三种类型:服务项、特征值和描述符。三者之间存在树状包含关系,服务项包含一个或多个特征值,特征值包含一个或多个描述符,多个服务项组织在一起,构成属性规范(Attribute Profile)。对于常用的属性规范,比如体重计、心率计,SIG(蓝牙技术联盟)做了具体定义,这样的话,只要BLE主从设备均遵守某个Profile来进行设计,那么二者就能够优雅的通信。ATT层相关的东西与开发者比较近,易于理解,但是章节内容图表较少,阐述偏多。一. 属性的组成(数据结构)属性主要由以下四部分组成:属性句柄(Attribute Handler)、属性类型(Attribute Type)、属性值(Attribute Value)、属性权限(Attribute Permissions)。1.1 属性句柄属性句柄(Attribute Handle)犹如指向属性实体的指针,对端设备可通过属性句柄来访问该属性,它是一个2字节长度的十六进制码
  • Android BLE API:未收到GATT通知(Android BLE API: GATT Notification not received)
    问题 用于测试的设备:Nexus 4,Android 4.3 连接工作正常,但从未调用过我的回调的onCharacteristicChanged方法。 但是我在onServicesDiscovered内部使用onServicesDiscovered setCharacteristicNotification(char, true)注册通知,该函数甚至返回true。 设备日志(当应该显示通知/通过蓝牙设备发送通知时,实际上根本没有消息): 07-28 18:15:06.936 16777-16809/de.ffuf.leica.sketch D/BluetoothGatt: setCharacteristicNotification() - uuid: 3ab10101-f831-4395-b29d-570977d5bf94 enable: true 07-28 18:15:06.936 4372-7645/com.android.bluetooth D/BtGatt.GattService: registerForNotification() - address=C9:79:25:34:19:6C enable: true 07-28 18:15:06.936 4372-7645/com.android.bluetooth D/BtGatt.btif: btif_gattc_reg
  • 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!
    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯; 2、如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源! 文章目录 前言 一、材料准备二、实现过程三、蓝牙模块初始化四、微信小程序编程4.1 搜索设备4.2 连接设备4.3 获取服务列表4.4 获取服务下的特征列表4.5 如何接受设备发来的数据4.6 如何发送数据到设备另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 前言 接着上篇环境搭建,我们这篇玩下如何通过微信小程序蓝牙控制TB02开发板; 接触微信硬件生态已经有2年了,微信客户端如果能够实现以蓝牙控制设备,无非是从微信公众号或微信小程序入手,但微信公众号蓝牙控制设备,那么设备必须支持AirSync协议; AirSync协议已经很久很久没有维护了,个人认为官网已经不维护了!如果想要通过微信公众号蓝牙控制设备,那么设备必须支持AirSync协议,而且要经过微信硬件平台认证才可以发布!而安信可TB02开发板暂不开放支持AirSync协议! 微信AirSync协议介绍: https://iot
  • What are the steps to get notified by Bluetooth Low Energy (BLE) device?
    I am working on a Bluetooth Low Energy (BLE) app. I have a BLE device (scale) which measures weight. I am able to connect with this device. But I am not getting how to read data (weight value) from it. I want to know if my app is connected to any BLE device, so what are the steps to get notified by device in order to get updated data. Okay, following is the for my Activity which I am using.. public class BlogBLEActivity extends Activity implements OnItemClickListener { private final static String TAG = BlogBLEActivity.class.getSimpleName(); private BluetoothAdapter bluetoothAdapter
  • BLE地址类型
    1. 前言也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address、Random Device Address、Static Device Address、Private Device Address等等。如果不了解内情,大家肯定会被它们绕晕。不过存在即合理,这样看似奇怪的设计,实际上反映了BLE的设计思路以及所针对的应用场景。让我们通过本文一窥究竟。2. BLE设备的地址类型一个BLE设备,可以使用两种类型的地址(一个BLE设备可同时具备两种地址):Public Device Address和Random Device Address。而Random Device Address又分为Static Device Address和Private Device Address两类。其中Private Device Address又可以分为Non-resolvable Private Address和Resolvable Private Address。它们的关系如下所示: 3. Public Device Address在通信系统中,设备地址是用来唯一识别一个物理设备的,如TCP/IP网络中的MAC地址、传统蓝牙中的蓝牙地址等。对设备地址而言,一个重要的特性,就是唯一性(或者说一定范围内的唯一),否则很有可能造成很多问题
  • Android蓝牙开发系列文章-玩转BLE开发(一)
    我们在《Android蓝牙开发系列文章-策划篇》中计划讲解一下蓝牙BLE,现在开始第一篇:Android蓝牙开发系列文章-玩转BLE开发(一)。计划要写的BLE文章至少分四篇,其他三篇分别讲解:BLE Server端编码(用手机模拟外围设备),BLE Beacon功能,BLE设备通信(利用自有协议实现Client和Server端通信,在Server端信息改变时,自动上报给Client)。 本文主要内容:编码实现BLE Client端,实现手机与蓝牙体重秤之间的通信 所用的设备:华为荣耀7手机,微信小程序,乐心体重秤 目录 1.基本概念 2.先来认识一下我们的设备 3、认识BLE Client编码 3.1 扫描BLE设备 3.2 建立GATT连接 3.3 解析设备支持的characteristic 3.4 读取characteristic值 3.5 写characteristic值 3.6 设置indication 4、总结 1.基本概念 在这里先讲解一下BLE(Bluetooth Low Energy)的一些简单概念。 本文会涉及一个概念叫“GATT连接”,那我们先说一下什么是GATT,GATT(GenericAttribute Profile)译为通用属性配置文件。GATT连接利用的是在外设(体重秤)与中心设备(手机)之间建议一种联系,这种联系利用的是双方之间都能够识别
  • BLE协议分析
    一,Bluetooth Low Energy协议基本组成蓝牙系统核心架构可分为三个方面:BLE Application和BLE Host 属于应用层APIHCI(Host Controller Interface)为中间层BLE Controller为底层蓝牙芯片 其中在HOST层有的两个比较核心的协议:ATT、GATT1,ATT(Attribute Protocol)该协议将数据以属性(Attribute)的方式抽象出来,用UUID定义不同的属性,并提供一下方法以供远端设备读取、修改这些属性的值。每个属性又由三个元素组成:一个16bits的Handle一个16bits/32bits/64bits的UUID确定长度的属性值需要注意的是,Handle是用于识别唯一属性的数字,而非UUID,因为一个BLE设备中可能有多个属性拥有同一个UUID,UUID由更上层的GATT定义。UUID用于确定属性中存放的值所对应的服务,其中主要包括一下几种:Service UUIDCharacteristic UUIDProfile UUIDVendor-Specified UUID和属性相关的读写权限保存于属性值中,但它也由更上层的GATT定义,ATT本身并不关心。ATT本身有两个角色,即C/S架构,其中Server存储属性,Client什么也不存,Client主动发起请求读写Server端数据
  • 如何抓包分析BLE 空口报文(GAP + GATT + LESC procedure)?
    文章目录 一、如何抓取BLE 空口报文?二、BLE 通信报文是如何交互的?2.1 GAP Discovery and Connection establishment procedures2.2 Link Layer Control procedure2.3 GATT Service Discovery and Characteristic Read/Write procedure2.4 LE secure connections Pairing procedure 更多文章: 前篇博文介绍了如何调试嵌入式代码? 但对于通讯协议,我们要了解通讯过程的详细信息,需要获取通讯过程中交互的报文以及时间,如何抓取通讯报文呢?如何解析抓取到的报文呢? 一、如何抓取BLE 空口报文? 我们最常使用的以太网抓包工具有wireshark 和tcpdump,前者提供可视化界面,方便直观了解报文格式,后者侧重命令行工具,方便通过自动化脚本抓包。这些抓包工具可以抓取BLE / Wi-Fi 这类无线通讯协议报文吗? 对于以太网这类有线通讯协议,数据包的传送分发主要是通过路由器和交换机完成的,路由器和交换机分发数据包主要是靠维护的路由表和MAC 地址表获知数据包下一跳的分发路径的。对于BLE / Wi-Fi 这类无线局域网通讯协议,主从设备之间通讯并没有路由器或交换机,无线数据报文是如何传送转发的呢?
  • 使用蓝牙LE在iOS和Android之间进行通信(Communicating between iOS and Android with Bluetooth LE)
    问题 我有一个使用CoreBluetooth可以在iPad(中央)和iPhone(外围设备)之间进行通信的应用程序。 我有一项服务有两个特点。 我有一个运行最新的Android 4.3(支持BTLE)的Nexus 7。 Android赶上BTLE潮流有点晚了,但似乎他们采用的方法与iOS相似,最初它们仅支持充当中心功能,而更高版本则采用外围模式。 我可以加载示例Android BTLE应用并浏览附近的外围设备。 使用我的iPhone广告作为外围设备,我可以在Android端附近的外围设备列表中看到CBAdvertisementDataLocalNameKey的值。 我可以连接到iPhone,并且建立连接后,蓝牙符号会从浅灰色变为黑色。 连接始终会精确地持续10秒钟,然后断开连接。 在Android方面,我应该会在连接后立即看到可用服务和特性的列表。 我已经证明Android代码设置正确,因为我可以将其连接到我拥有的TI CC2541DK-SENSOR硬件上,并且在连接到它时会列出所有服务和特性。 最近几天,我花了很多时间对问题进行故障排除。 问题是我无法确定哪个设备出现错误并因此导致断开连接。 在连接阶段或服务发现阶段,没有来自CBPeripheralManagerDelegate的回调,所以我不知道在什么时候发生错误(如果错误是在iOS端)。 在Android方面
  • 从BLE设备读取数据(Read data from BLE device)
    问题 我正在尝试从蓝牙设备(BR-LE4.0-S2)读取数据。 我能够连接BLE设备,但无法从其中读取数据。我没有关于BLE服务及其特性的任何规范。 这是我的问题- (void)peripheral:didUpdateValueForCharacteristic:error:没有被调用。 我遵循了教程“ https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/PerformingCommonCentralRoleTasks/PerformingCommonCentralRoleTasks.html#//apple_ref/doc/uid/TP40013257-CH3-SW2”。代码。 我的要求是从BLE设备连续读取数据。 任何帮助是极大的赞赏。 - (void)viewDidLoad { self.myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; self.peripheral = [[CBPeripheral alloc] init]; self.peripheral.delegate = self;
  • 微信小程序 - 蓝牙BLE小程序开发
    1.前言 最近领导看我比较闲,安排我开发一个蓝牙BLE微信小程序,刚开始接到这个项目时,我第一反应时,"卧槽“”。老子在公司的岗位是做Windows和Android 软件开发的,看我闲,竟然让我去做小程序,我从来没有接触过。后面领导说给你一个星期,看不看能不能完成,实在没有办法,只能硬着头皮去学习小程序。 2.BLE蓝牙相关知识 2.1 经典蓝牙和蓝牙BLE的区别 蓝牙1.0~3.0都是经典蓝牙,有些人一直认为蓝牙4.0就是蓝牙BLE,是错误的。因为4.0是双模的,既包括经典蓝牙又包括低能耗蓝牙。蓝牙BLE相比于经典蓝牙的优点是搜索、连接的速度更快,关键就是BLE(Bluetooth Low Energy)低能耗,缺点呢就是传输的速度慢,传输的数据量也很小,每次只有20个字节。但是蓝牙BLE低能耗,在智能穿戴设备(手环和各种智能硬件)应用越来越广泛。 2.2 相关概念 (参考 通用属性配置文件(GATT)及其服务,特性与属性介绍 )和 (BLE4.0教程二 蓝牙协议之服务与特征值分析) 2.2.1 特性 一个特性至少包含2个属性:一个属性用于声明,一个属性用于存放特性的值。 所有通过GATT服务传输的数据必须映射成一系列的特性,可以把特性中的这些数据看成是一个个捆绑起来的数据,每个特性就是一个自我包容而独立的数据点。 例如,如果几块数据总是一起变化
  • 如何通过低功耗蓝牙(BLE)链接发送数据?(How to send data over a Bluetooth Low Energy (BLE) link?)
    问题 我能够发现并连接到蓝牙。 源代码 - - 通过蓝牙连接到远程设备: //Get the device by its serial number bdDevice = mBluetoothAdapter.getRemoteDevice(blackBox); //for ble connection bdDevice.connectGatt(getApplicationContext(), true, mGattCallback); Gatt回呼状态: private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { //Connection established if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) { //Discover services gatt.discoverServices(); } else if (status == BluetoothGatt
  • nrf51822蓝牙学习笔记二
    目录 蓝牙协议简要图应用层控制层 主机主协议层:通用访问规范(GAP)角色广播扫描发起连接 通用属性配置文件(GATT)角色GATT规范层次属性特性描述符服务profile(数据配置文件) 代码讲解协议栈初始化初始化时钟协议栈使能设置回调 GAP初始化设置设备名称其他 广播服务初始化连接参数更新初始化开始广播主循环 目前手里面有几个项目用的是nrf51822这款蓝牙芯片。由于我从未接触过蓝牙协议,所以在很多地方磕磕绊绊的,所以最近准备系统学习一下该芯片。并做一下笔记放在我的博客里面。系统学习资料来源于B站青峰电子。视频名称为 蓝牙nrf51822视频教程资料 编程开发 协议栈开发 青峰电子例程。 蓝牙协议简要图 应用层 SIG官方网站已经发布了GATT规范列表,包括警告通知、血压测量、心率、电池等等。 在ble_services中有已经进行通用定义的一些服务。如ble_bas是电池服务等。 控制层 1,主机控制器(HCI) 也称设备管理器,是基带中的一个功能模块,控制一般的蓝牙设备行为。负责所有与数据无关的蓝牙系统操作,例如询问附件蓝牙设备是否存在,连接蓝牙设备或者让本地的蓝牙设备可以被其他设备发现和连接。 为了实现响应的功能,设备管理器要求通过基带的资源控制器访问传输媒介。同时,设备管理器还通过HCI命令提供本地设备行为的控制功能。 2,链路层(LL) 负责链路管理、链路控制
  • Android BLE蓝牙配置全流程(二) 附APP源码
    事务的难度远远低于对事物的恐惧 0.前言 在 Android BLE蓝牙配置全流程(一) 附APP源码 中已经完成了前期的准备工作,在这里我们得到了需要连接的蓝牙设备的名字和地址,需要完成蓝牙设备的连接和数据传输功能。 1.初始化界面 首先需要完成对这个界面包含的控件进行初始化,代码如下: private TextView text1, text2; private EditText editText; private Button btn_send; private String status = "Disconnected"; private final static String TAG = "hello"; //界面初始化 private void initView() { text1 = findViewById(R.id.text1); text2 = findViewById(R.id.text2); editText = findViewById(R.id.edit_text); btn_send = findViewById(R.id.btn_send); text1.setText("状态:" + status); btn_send.setOnClickListener(this); } 控件text1中显示目前的连接状态,控件text2中显示接收到的数据
  • Connecting hc-05 with iPhone SE iOS(v11.0)
    I have done some research on core bluetooth framework. Successfully setup discovery of peripheral of other iPhone, connect, discovered services and characteristics and write some values. All went well. Surprisingly come to know there is apple MIFI program (need to research on ot) In excitement I ordered iPhoneSE, HC-05 bluetooth module, Arduino Builder's Kit R2 with original Arduino UNO. It took some days/wasted in shipment and decent amount and now it's not working. I write proper set up/initialization for peripheral and central classes, adopted delegates and I think it's all correct. However
  • 夏天热急得直跺脚?送它给女友,竟能轻轻松松获得清凉?
    夏天想开空调找不到遥控器!遥控器找到之后,想要调节温度又要起身拿遥控器! 如何摆脱麻烦? 红外遥控,远程操作,随心开启、调节、关闭空调,全靠它! 红外遥控和舵机控制通过 涂鸦智能 App 下发 打开空调 指令控制红外发射模块发射指令打开格力空调,下发 开/关门 指令控制舵机实现开关门功能。 本教程内容均为涂鸦开发者 @时浩文 提供,经其授权编辑发布。 物料清单 硬件 (4) 软件 (1) 涂鸦三明治 Wi-Fi MCU 通信板(WB3S) 数量:1 适用于涂鸦 IoT 自定义方案中,照明、台灯、灯 丝灯、调光器、照明遥控器、排插、开关、家电、运动健康、传感类产品原型。 涂鸦三明治红外遥控功能板 数量:1 一款无线发射与接收装置,能学习中心频率为37.9KHz 的红. 外信号,通过控制红外发射管的通断来达到控制红外设备的目的。 Arduino 开发板 数量:1 一个开发各类设备,让您比台式电脑更能充分感知和控制物理世界的生态系统。查看详情 STM32f103C8t6 数量:1 适用于电机驱动、应用控制、医疗和手持设备、PC 和游戏外设、GPS 平台、工业应用、PLC、变频器、打印机、扫描仪、报警系统、视频对讲和 HVAC 等应用。 步骤 WB3S模组的 Wi-Fi 板(测试) 在 涂鸦 IoT 平台 上创建一款 万能遥控器 产品,开发方案选择自定义方案。输入产品名称,型号,选择 Wi
  • 蓝牙发送超过20个字节出错(BLE设备发送超过20个字节)
    文章目录 解决方案BLE数据包空中传输规定了20byte一次,如果单包数据超过20个字节要分包发送,我测试两包数据间隔0.1毫秒也是ok的(启示:如果能把收到的命令用队列保存起来,那么两条完整的命令间隔时间非常短也是可以处理的) ios(swift)参考代码android参考代码 相关信息和连接 解决方案 BLE数据包空中传输规定了20byte一次,如果单包数据超过20个字节要分包发送,我测试两包数据间隔0.1毫秒也是ok的(启示:如果能把收到的命令用队列保存起来,那么两条完整的命令间隔时间非常短也是可以处理的) ios(swift)参考代码 // MARK: - 发数据 func sendBytes() { var send:[UInt8] = []; var mode:Int = 20; if bytes.count > mode { var i:Int = 1; var total = bytes.count/mode+1; while i<=total { if i==total{ if (i-1)*mode <= bytes.count-1 { send = Array(bytes[(i-1)*mode...(bytes.count-1)]); }else{ break } }else{ send = Array(bytes[(i-1)*mode...(mode*i-1)