完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在开发一个先锋工具包BLASEVER的软件,还有一个Android应用程序来获取传感器数据。
我试图从BLE设备向Android应用程序发送一个32位的值(SO 4字节),但是我在格式化方面遇到了问题。我使用一个UtiT8数组,长度为4,分别存储UIT32的每个字节。下面的代码存储数组中的每个字节: 测量阵列[0 ] =(测量和0xFF);测量阵列[1 ] =((测量和gt;&;8)&0xFF);测量阵列[2 ] =((测量& gt;16;)和0xFF);测量阵列[3 ] =((测量& gt;24)和0xFF); 下一行将特性句柄的值设置为数组的第一个元素。当我广播一个通知时,句柄只需要第一个字节的位置,然后它将发送所有四个字节。 MaultReal.Value.Val=和RealStale[ 0 ]; 我所面临的问题是,通过BLE发送的值是未签名的。即使我将BLE特性配置为32位签名,也没有任何区别。Auth.Value.Valb语句总是采用未签名的UTIT8。在Android应用程序方面,有两种选择。使用BrutoToStgTrimeFutualFuttualValue:FrimType,Office返回一个整数,或者使用GETValk,返回一个字节数组。我尝试了几种不同的GETInValk函数格式,但是IGET在我的数据中有很大的不连续性。在将字节转换成整数之后,我也得到了GETValk函数的不连续性。 问题是,GETValk返回的字节值基本上是一个带符号的int。当我尝试取4个字节时,做一些位移位,然后转换成int,因为签名的INT溢出了,所以存在错误。 我现在不知所措,所以任何建议都值得赞赏。如果它有帮助,我发送的数据是24位二的补码,我最初存储在一个32位的无符号int中。我不能上传我的项目,因为它是专有的。 |
|
相关推荐
2个回答
|
|
假设“数据”是在Android端接收字节的数组,那么你可以做的是:
长结果=0; 长结果=(int)数据〔0〕和0xFF; 长结果+ = 256 *((int)数据[ 1 ]和0xFF); 长结果+=256×256 *((int)数据〔2〕和0xFF); 长结果+=256×256×256 *((int)数据[3 ]和0xFF); 从数组中重新组装32位值。每个字节被转换成int第一,然后上半部分被截断,这使得它再次未签名。 |
|
|
|
对不起,我没有提前回复!这与我在Android方面的尝试非常相似,感谢大家对我的正确认识。我最终决定使用GETInValk函数可能是最可靠的,这意味着我的PSoC代码在某个地方出现了错误。谢谢你的回复。 |
|
|
|
只有小组成员才能发言,加入小组>>
752个成员聚集在这个小组
加入小组2075 浏览 1 评论
1829 浏览 1 评论
3645 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1766 浏览 6 评论
1517 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
517浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
371浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
413浏览 2评论
360浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
868浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 15:01 , Processed in 1.079262 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号