完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
手里的蓝牙4.0模块,cc2541,发送时使用printf函数,若用%d则会自动将-12345,转化成‘-’,‘1’,‘2’,‘3’,‘4’,‘5’,也就是发了5个字节。若用%x则会自动将-12345转化成‘f’,‘f’,‘f’,‘f’,‘c,‘f’,‘c’,‘7’,也就是8个字节。
而这款蓝牙模块最大发送速度是4KB/s,我采的数据是100Hz的九轴姿态数据,按照上面的发法,根本满足不了我的要求。所以取了%s,就是把-12345转化成一个高八位的字符和一个低八位的字符,这样表示一个数据只需要2个字节,速度就差不多够了。 现在的问题是蓝牙里自带51单片机,它不支持发送0X00,导致我所有高八位为0的数据全都不能用了。请问我有什么办法吗? |
|
相关推荐
10个回答
|
|
那是你printf函数的问题,你试试直接使用串口发送,不用printf
|
|
|
|
你是直接在协议栈的基础上开发,还是使用cc2541的蓝牙4.0串口模块?
|
|
|
|
我只是使用cc2541的蓝牙4.0串口模块,用的是stm32单片机。
|
|
|
|
我只是使用cc2541的蓝牙4.0串口模块,用的是stm32单片机。
|
|
|
|
求教,怎么写,比如我要写一个u16的数据是-12345
|
|
|
|
u16定义的变量是 unsigned short 型的,是无符号整型,而你的“-12345”,应该要定义一个short型的变量
|
|
|
|
这个对我来说无所谓,那发12345也行,只是我不知道还能怎么写,一直用的都是原子的例程,所以一直也都是printf。。。我需要怎么才能直接用串口呢,想不明白。
|
|
|
|
说实话,这东西让我去百度,我都不知道应该怎么查。。
|
|
|
|
printf打印貌似遇到字符0 的时候,会结束发送,所以,一般串口发送,我会自己写一个函数来发送:
uchar usart1_send_data(uchar *p_data,uint16 len) { uint16 i = 0; if(p_data != NULL) { for(i = 0;i < len;i++) { USART_SendData(USART1, *(p_data+i)); while((USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)); //等待串口发送完成 } return TRUE; } return FALSE; } |
|
|
|
多谢!成功了!
|
|
|
|
只有小组成员才能发言,加入小组>>
318浏览 1评论
436浏览 1评论
565浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
449浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
422浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 23:19 , Processed in 0.870598 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号