CC2541 关于profile的疑问
TI工作人员你们好!
由于项目上的较为紧急(之前也未接触过CC2541),所以我也没办法仔细去研究蓝牙的协议,再次还希望诸位能给与帮助帮忙解答CC2541 SimpleBLEPeripheral demo 上的几个疑问,非常感谢。
目前蓝牙能在demo上修改能收到数据通过串口输出,但是发送还没有成功,修改过程中对profile中的特征值非常迷惑(修改也参考了其他部分教程):
1. 我简单看了下蓝牙中特征值可以用来传输数据,NOTIFY也可以传输部分数据,这两种有什么区别呢?
2. 16位的UUID 的特征值。示例中有char1到char5 。 如果我的功能要求只是数据简单传输。那么是不是我只需要一个特征值就足够?
3. 能允许有多个char值都是读/写属性么?假如允许的话,那么central端究竟会以哪个特征值来传输数据?
假如char1和char4都具有读写属性,但是我希望第一包数据以char4的特征值传输,怎么样设置才能达到这个结果?
4. 对于多个具有读写属性的特征值,我在发送数据的时候是不是可以任意切换利用不同的特征值来发送?
5. 对于某个具有读/写属性的特征值,我是否可以即用它来接收central端发来的数据,同样也可以利用该属性发送数据到central端呢?
1.蓝牙是通过特征值传输数据的,peripheral这边具体有notify(不需要主机回复)和indicate(需要主机回复)两种方式
2.是的
3.可以有多个char具有读写属性。以哪个特征值传输数据是需要代码来控制的,比如SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR5, osal_strlen((char *)data), data);就是利用char5传递数据。SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR4, osal_strlen((char *)data), data);同理
4.可以,理由同3
5.是的,同时具备读和写的属性的特征值就可以
le,
1. Notify 是从外设到手机,write是从手机到外设。
2. 是的,一个就够,但是如果是双向传输的话,最好用两个,一面冲突。
3. 允许。central端会根据不同的attribute handle来判断是往哪个特征值传输,不会冲突。
4. 只要你的两边协商好,完全没有问题。
5. 可以。写就是central端发送出去,读的话就是central去主动读取peripheral的那个特征值,所以当然可以用于向central发送数据。