本帖最后由 shinykongcn 于 2017-7-24 23:59 编辑
cdcs bc项目除了Thread组网功能,还具有ble peripheral的功能,用于提供wireless uart service,以便于手机可以整个thread网络的通信。
kw41z的ble实现的是uart功能,定义了一个service和一个characteristic
- UUID128(uuid_service_wireless_uart, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x00, 0x01, 0xFF, 0x01)
- UUID128(uuid_uart_stream, 0xE0, 0x1C, 0x4B, 0x5E, 0x1E, 0xEB, 0xA1, 0x5C, 0xEE, 0xF4, 0x5E, 0xBA, 0x01, 0x01, 0xFF, 0x01)
复制代码
注意这里的两个128位的uuid在iOS编程中对应的值为
- #define NXP_URAT_SERVICE_UUID @"01FF0100-BA5E-F4EE-5CA1-EB1E5E4B1CE0"
- #define NXP_UART_CHAR_UUID @"01FF0101-BA5E-F4EE-5CA1-EB1E5E4B1CE0"
复制代码
最开始死活找不到service,后面穷举一下发现,是倒序的!
另外kw41z的ble可以通过修改gatt_db.h头文件的gap,这样手机搜索到设备之后,会显示自定义的名称:
- PRIMARY_SERVICE(service_gap, gBleSig_GenericAccessProfile_d)
- CHARACTERISTIC(char_device_name, gBleSig_GapDeviceName_d, (gGattCharPropRead_c) )
- VALUE(value_device_name, gBleSig_GapDeviceName_d, (gPermissionFlagReadable_c),[color=#ff00ff] 8, "EEW_CDCS"[/color])
- CHARACTERISTIC(char_appearance, gBleSig_GapAppearance_d, (gGattCharPropRead_c) )
- VALUE(value_appearance, gBleSig_GapAppearance_d, (gPermissionFlagReadable_c), 2, 0x00, 0x00)
复制代码
另外可以通过修改app.h头文件进行蓝牙连接的绑定和配对密码等功能配置:
#define gAppUsePairing_d 1 //为1则为启用密码验证
然后就是iOS的编程了,xcode新建工程,和kw41z的通信通过uart service下的uart characteristic实现。
具体流程就是先扫描到前面设置的名称为EEW_CDCS的设备之后,连接,接着通过连接后获取到的service,找到对应的characteristic,就可以对这个characteristic进行读写了。这里奇怪的是这个characteristic只能写,不能读。而通过kinetis BLE toolbox app却可以,so。。。卡壳了,好尴尬。。。眼看着是没法交作业了,先把目前的代码分享出来吧。操作节目很简单,点击scan之后找到对应的设备,然后选择就可以跳转连接,进行读写操作,然而还只能写,估计哪个姿势没摆好。。。
app节目
先这样吧,末班车是赶不上了
iOS APP 代码工程:
BLE_CDCS.zip
(50.05 KB, 下载次数: 10)
-------------------无耻分割------------------------
所以总结一下,打通整个流程还需要:1.iOS app顺利读取到kw41z的数据,并进行处理
2.传感器节点数据采集,如采集和计算踏频
3.其它balabala。。。。
此内容由EEWORLD论坛网友shinykongcn原创,如需转载或用于商业用途需征得作者同意并注明出处