CC2540主模式如何发送大容量数据?
Hi, TI' experts:
最近在学习CC2540主模式的开发,目前master和slaver可以正常连接并且可以发送数据,但是数据包的大小仅仅限制在20bytes,我想知道对于大容量的数据(比如128bytes或者256bytes等)该怎么发送呢?我在论坛里看到有朋友说GATT_WriteLongCharValue()函数可以实现大数据的发送,而且该函数会自动分包,然后多次发送。我在我的代码中也调用了这个函数,但是slaver端并没有收到任何数据,我不知道问题出在哪里了?我调用GATT_WriteCharValue()函数来发送数据时,slaver是可以收到数据的。我的代码是以SimpleBLECentral为模板改的。
以下是我代码中发送的部分:希望各位专家们能帮我解答,谢谢!
if(simpleBLEDoWrite) //Do a write
{
unsigned int dataLength = (unsigned int)sizeof(senddata); //取得数据包的长度
uint8 *ptr = senddata;
gattPrepareWriteReq_t req;
req.handle = simpleBLECharHdl;
req.len = dataLength;
req.offset = 0;
req.pValue = (uint8 *)osal_mem_alloc(dataLength); //locate space
osal_memset(req.pValue, 0, dataLength); //mem clear
osal_memcpy(req.pValue, ptr, dataLength); //memcpy
status = GATT_WriteLongCharValue(simpleBLEConnHandle, &req, simpleBLETaskId);
}
打扰了,写成了么。情况如何。
alen,
回得有点晚,不好意思哈。
后来怎么样了?我看代码没什么太大问题。试过用pValue 指针指向一个固定数据,而不用动态分配的方式吗?
另外,空中抓包看过吗?packet sniffer.
请问一下,一次最多发送20个字节,是ble4.0规定的,还是ti的协议规定的啊?
BLE 4.0协议规定了一次发送最大不超20个字节
谢谢susan的回复!
协议文档实在是太多了,太难找了,不知道你看的是不是Core_V4.0.pdf文档,具体在哪个章节有介绍,能告诉一下吗?
你好 jack wong
网上关于蓝牙4.0各种包结构分析的很多,你可以随便搜一下,比看 Core_V4.0.pdf 来的快~o(∩_∩)o 哈哈
你好,不好意思打扰了啊。请问你这样实施成功了没?我也这样试了,但是一次最多只能传18个字节的数据,而且还容易造成死机问题