Thread 中讨论的其他器件:BLE-STACK、
我有一个数组、其中每个数组在1字节下有180个有符号整数。 数组每隔几分钟就会获得新值、但它们始终小于1字节。 因此、每隔几分钟、我就需要通过 BLE 发送180字节。
这是否像将 MAX_PDU_SIZE 至少更改为180字节那样简单、然后只需调用 MyService_SetParameter、或者我是否需要多个写入 ATT 过程?
我正在运行 BLE 堆栈(2_02_00_31)。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我有一个数组、其中每个数组在1字节下有180个有符号整数。 数组每隔几分钟就会获得新值、但它们始终小于1字节。 因此、每隔几分钟、我就需要通过 BLE 发送180字节。
这是否像将 MAX_PDU_SIZE 至少更改为180字节那样简单、然后只需调用 MyService_SetParameter、或者我是否需要多个写入 ATT 过程?
我正在运行 BLE 堆栈(2_02_00_31)。
谢谢 Christin。
是否有这两种方法之一的示例? 我想进一步澄清 几个方面(我正在尝试使用 GATT_WriteLongCharDesc()函数)。 我的应用程序是对 Project Zero 的直接修改。
1.在哪里可以找到 taskId?
2.如何合并失调电压?
3.我是否只需执行以下操作即可获得连接句柄:pEvent->linkCmpl.connectionHandle?
下面是我的当前代码:我有一个单独的时钟、每隔几分钟调用一次该函数。
静态空 DATA_performTask(){
attPrepareWriteReq_t writeReq;
writeReq.offset=0;
writeReq.len = data_len;
writeReq.handle = 0;
writeReq.pValue = osal_mem_alloc (data_len);
OSAL_mem_cpy (writeReq.pValue、data、data_len);
状态= GATT_Writ延伸 CharDesc (connHandle、writeReq、???????)
}
您好!
没有使用 GATT_WriteLongCharDesc 的特定示例、但您可以查看 simple_central 项目或使用了的多角色项目
GATT_WriteCharValue()。 用法相当相似。
1.在哪里可以找到 taskId?
-->任务 ID 已在名为"selfEntity"的项目中定义
2.如何合并失调电压?
--> BLE 堆栈将负责您的移动。 您只需要设置数据结构。
3.我是否只需执行以下操作即可获得连接句柄: pEvent->linkCmpl.connectionHandle?
-->我不确定您在说 pEvent->linkcmpl.connectionHandle 时所谈论的是哪个函 数,但您始终可以通过使用以下 API GAPRole_GetParameter 获取连接句柄,并将参数设置为 GAPROLE_CONNNANDLE。
感谢您的回复。
还有3个快速问题:
1、我实际上有更多的字节、而不是180字节、因为一些值是负的。 因此、我的数组实际上是 int16_t 数组、而不是 uint8。 attPrepareWriteReq_t 将'pValue'变量设置为 uint8。 在这种情况下、Typasting 不起作用、因此是否有另一个函数?
2.我的另一端没有 BLE 监听器(只使用浅蓝色应用)、因此当我使用 GATT_WriteLongCharDesc 发送阵列时、开发套件是否会传输所有值、然后特征将返回到其初始值0? 还是一次将数据发送一个数组值、以便我可以在应用程序上看到它?
3.在项目零应用程序中,为 attPrepareWriteReq_t 结构定义的句柄在哪里? 我不知道如何找到手柄? 他们在 simple_central 项目上执行该操作的方式不是很直观、由于 launchpad 是一个外设、因此它不会应用于我的项目。 我只需将其设置为 writeReq.handle = 0、但这是不正确的。
尊敬的 Christin:
我只是使用浅蓝色应用程序来检查我的数据是否已写入特征。
我已经创建了一个自定义服务。 之前、我写入的特征最大为10字节。 我实际上可以在浅蓝色上看到值更新(使用 Service_SetParameter 函数)。
现在、对于这个新特性、我将使用 GATT_WriteLongCharDesc、因为我需要为其中一个特性发送大约250个字节。
我认为"writeReq.handle = 0;"不正确、因为我不知道特征的句柄(因为我们在声明时被告知将其保留为0)。
在没有监听器的情况下如何找到句柄?
由于手机是客户端、CC2650实际上是服务器、我只需要在手机上设置客户端代码、Launchpad 不正确? 电话只读取正在发送的数据、而不会写入服务器。
谢谢、
ARSH 缓冲器
现在、我将修改 simple_peripheral 应用。
根据开发人员指南、我使用 BT 4.2开启了 DLE。 但是、仍然不知道数据的处理方式。 我不知道如果不知道这一点,我是否可以继续前进。
由于我基本上是从其他示例复制格式、因此句柄必须不正确?
以下是我的执行任务函数中的代码:
uint8_t connHandle;
uint8_t status;
attPrepareWriteReq_t writeReq;
writeReq.handle=0;
writeReq.offset = 0;
writeReq.len = len
writeReq.pValue=数据;;
GAPRole_GetParameter (GAPROLE_CONNNANDLE、connHandle);
状态= GATT_WriteLongCharDesc (connHandle、&writeReq、self 实体);//或 GATT_WriteLongCharValue (connHandle、&writeReq、self 实体)
有趣。
我曾尝试过:
myService_SetParameter (service_data、DRUGABUSESERVICE_DATA_LEN、array_data);
其中 array_data 是180个值的数组、此特征的浅蓝色应用程序上没有显示任何内容(我正在使用 iPhone)。 但是、它确实表现为其他特性。 这是因为 iphone 可能还没有 DLE 吗? 或者、因为我收到整数截断的警告(我的数组是 int16_t)。
谢谢、
ARSH 缓冲器