完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
从传感器独到的数据不知道怎么传出去....用例程改他传出去都是ascall码,不是具体数据...比如我读到温度是20,怎么把温度传出去而不是传ascall码20
|
|
相关推荐
5个回答
|
|
收发都是你自己定义的呀接收端处理就可以了
|
|
|
|
将温度拆开传(T为传感器采集的温度),shi=T/10; ge=T%10;加上一个简单的包头包尾例如0xaa,shi,ge,0xbb。这样接收端接收一个数据包后只需要定义一个变量TT,然后 TT=shi*10+ge就可以了,我还是比较喜欢用ascall码传输的。我有发表的一篇NRF24L01+的学习心得希望对你有用。
|
|
|
|
用ASCALL码怎么传呀,能举个例子吗?
|
|
|
|
你的发送buff不是32 的吗,最简单的就是弄个32长度的结构体和发送buff定义到一个共同体
typedef struct _data_struct{ u8 data1; //占用2字节 u16 data2; //占用2字节 u32 data3; //占用4字节 float data4; //占用4字节 //可以继续添加,累加和小于等于32就可以了 }data_struct; typedef union _data_union { u8 tx_buff[32]; data_struct data_temp; }data_union; 主函数里面 data_union data; data.data_temp.data1=0x0a; data.data_temp.data2=0x123; data.data_temp.data3=0x9876; data.data_temp.data4=987.654; for(i=0;i<32;i++) { printf("%x,",data.tx_buff); } printf("rn"); 下面是printf的结果 a,ff,23,1,76,98,0,0,db,e9,76,44,c8,46,0,20,c8,46,0,20,c8,46,0,20,0,0,0,0,5f,2,0,8, 上面实现了,你每次nrf发送data.tx_buff就可以了这种方法的好处是,不用复制不同类型的数据到发送buff还要自己定位了 |
|
|
|
定义比如说 25.5度 你可以放大十倍后去掉小数,然后 a=255/100=2; b=255%100/10=5; c=255%10=5; 分别得到温度的每个位 然后转成ascll码a=a+0x30;b=b+0x30; c=c+0x30; 为什么加上0x30,0x30在ascll中对应为0x30,就是说0x30='0',字符型的0. 而非数值0,那么a='2',b='5',c='5'。具体你可以查看ascll码表,这样还有一个好处就是在用串口打印后用文本格式显示方便调试更直观,还有就是限定了数据包中数据部分的组成为0x30-0x39(对应为字符0-9),这样数据包更可靠一些,更容易区分数据包的数据部分和其他部分(如包头包尾)怎么讲呢举个例子;我定义一个传输数据包协议为0xaa(数据包头),a,b,c,0xbb(数据包尾);添加了包头和包尾使其接收端更容易识别,数据传输更可靠。接收端接收后T=(a-0x30)*100+(b-0x30)*10+(c-0x30);//得到放大十倍后的温度,就可以根据需求来用T。 如果说不用ascll格式传输,并且我以简单数据包的形式传输,0xaa, 0xff(255), 0xbb;在这样看来没有问题,假如说我读到的温度是17.0度,放大十倍后是170度,那么就会出现这种情况-0xaa,0xaa(T),0xbb;//这种情况下出现了两个包头,数据接收端就会出错。当然如果不用ascll格式传输也可以,小心使用就行。其实这些数据传输都是一些简单的,自己随便定义,好用就行。像传输一些秘密的数据,为了不容易被别人破解,都对数据进行一些算法加密,而且传输协议也比较复杂,发送的数据需要接收端使用协定好的算法将数据解出。
当然你用的是NRF24L01传输,你不用考虑包头包尾,直接把你要发送的数据,拆开转成ascll的格式,通过指令放入发送缓存寄存器,可能你的数据长度达不到32位,只用了几位,空着就空着不去管就是了,接收端只要判断接收到,就从接收缓存器里读出来就好了,如果是NRF24L01+的话可以调整数据包的长度。具体你可以看一下说明书。 以上均为个人看法。 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2316 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2059 浏览 5 评论
2750 浏览 3 评论
2518 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2459 浏览 4 评论
5641浏览 1评论
522浏览 0评论
524浏览 0评论
300浏览 0评论
128浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 13:00 , Processed in 0.907459 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号