完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
串口例程usart_sample中使用rt-device-read()函数,用char ch接收字符数据,用int ch却不能接收整数?有知道怎样通过串口接收整数的伙伴吗?求解答 |
|
相关推荐
3个回答
|
|
串口都是8bit的,所以一次只能读写一个字节,而读写short,long,也是拆分成char实现的,不同系统之间交换int,还涉及存储大小端的问题,这些需要自己实现,
例如用一个联合体同时处理char,short,long类型 union { char c[4]; short s[2]; long i; }val; 可以val.i = 0x12345678; 大端:val.c[4] = 0x78,0x56,0x34,0x12 小段:val.c[4] = 0x12,0x34,0x56,0x78 串口收发val.c[]即可, 同理,使用这种方式也可以处理float,double类型 |
|
|
|
如果通讯双方存储格式是一致的,使用指针会更快些,
例如有个数组buf[20],都是大端模式; char *p = buf; (int*)(p+4) = 0x12345678; (int*)buf[4] = 0x12345678; // 或 //则buf[4~7] = 0x78,0x56,0x34,0x12 int a = (int*)(p+4); // 取数则 当通讯双方大小端不一致时,就不能这么干了,需要解决union |
|
|
|
根据接收方,发送方组织为合适的4个字节char数据,是接收方用int *接收,自动成功转换为整形
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
943 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3154 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1426 浏览 0 评论
2072 浏览 0 评论
1595 浏览 0 评论
75208 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 04:45 , Processed in 0.752814 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号