完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用 RFM69 库传输数据时,我遇到了一种奇怪的 ESP8266 行为,同时将缓冲数据转换为使用各种数据类型的数据结构。
我发现重现问题的最简单方法是附加脚本。 这是映射一个字节数组: 转换成一个数据结构(字节、短整型、长整型): 我使用“短”和“长”整数类型来保持与 Arduino 的兼容性,其中整数实际上只有 2 个字节(ESP8266 为 4 个字节)。 所以脚本的打印给出了一个常规的Arduino: 这显然是正确的 现在使用通用ESP8266结果是: 只有拳头数据正确对齐,在此字节边界丢失之后 此问题仅在使用混合数据类型时出现,并且在引入 char 和 float 类型或混合短整型和长整型时变得更加复杂。 有人可以解释这个问题,当然应该是解决方案。 罗伯特 脚本 代码:全选volatile byte radioBuf[] ={0x40, 0x41,0x42, 0x43,0x44,0x45,0x46}; // Byte ShortInt "Long"Int typedef struct { byte byte0; short int short1; long int long2; } Payload; Payload theData; void setup () { Serial.begin(115200); theData = *(Payload*)radioBuf; } void loop () { Serial.print ("radioBuf dump in HEX: "); for (int i = 0; i< sizeof(radioBuf); i++) { Serial.print(radioBuf,HEX); } Serial.println(); Serial.print("byte0= "); Serial.print (theData.byte0), Serial.print(" and byte0 in HEX "); Serial.println (theData.byte0,HEX); Serial.print("short1= "); Serial.print (theData.short1), Serial.print(" and short1 in HEX ");Serial.println(theData.short1,HEX); Serial.print("long2= "); Serial.print (theData.long2), Serial.print(" and long2 in HEX ");Serial.println(theData.long2,HEX); Serial.println (); delay (1000); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
321 浏览 0 评论
1178 浏览 1 评论
586浏览 6评论
483浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
442浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 03:10 , Processed in 0.572569 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号