你好。
我试图为我的目的重写Sample128服务。
我将第一个特征的长度更改为32字节。
对于对此特征的写入数据,我使用Windows 8.1 API函数BluetoothGattSetCharacteristicValue。
当我发送20个字节的数据似乎很好,但是当我尝试发送32个字节函数时,BluetoothGattSetCharacteristicValue首次返回OK,但下次返回ERROR_BAD_NET_RESP。在此之后,我可以发送任何东西,直到我再次删除此设备并对对。
同样在第二种情况下在函数gattc_write_cmd_ind_handler(sample128_task.c)中,我收到一条消息,我从Win(32字节)发送,分两部分拼接,其中第一是长度= 18&offset = 0和第二长度= 14&offset = 18。
在哪一方(DA14580或WIN)有错误?
如果我将第一个char属性更改为att_char_prop_wr_no_rep,我也可以发送超过20个字节(bluetoothgattsetcharacteristicvalue return reter_invalid_function)。
我做错了什么?
设备:
嗨斯拉夫,
请检查这篇文章http://support.dialog-semicondiondiondum/how-send-data-more-20-bytes.。
你试过转移吗?数据使用Android设备看出结果是否相同?
谢谢mt_dialog.
是的,我看到了这个帖子。我此刻没有BT4.0没有Android设备。
是否应在函数gattc_write_cmd_ind_handler中的零件上收到或拆分消息(> 20字节)?
如果在部件上拆分,则接收到参数 - >值收集的数据?
嗨斯拉夫,
如果邮件在Gattc_Write_cmd_ind_handler中超过20个字节,则不必组装或拆分零件。
这由堆栈的下层完成。
谢谢mt_dialog.
嗨,谢谢你的回复。
所以出于目的的目的是Param-> Offset和Param->最后一次在Gattc_Write_cmd_ind中?
如果我在gattc_write_cmd_ind_handler中正确了解你,我应该收到整个消息(如果我发送32个字节,则我应该在一个调用gattc_write_cmd_ind_handler中收到所有32个字节,offset = 0和length = 32)?
嗨斯拉夫,
对不起,我误解了你的问题(与我告诉你检查的人混淆了)......参数 - >最后一个是表示这是已经发送的最后一块数据,以便在特征时发出一个指示是写的。数据在块中展示块,并且调用Gattc_Write_cmd_ind_handler为每个已完成的块调用,Param-> Value具有您所需的所有数据,其由函数Attmdb_att_set_value()或attmdb_att_update_value()组装在结尾您将拥有所需的所有数据。
谢谢mt_dialog.