半双工数据收发组件被APP查询是否收到数据的问题。
2021/12/21 6:22:52
本文主要是介绍半双工数据收发组件被APP查询是否收到数据的问题。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在嵌入式项目中,一般需要适当为某个外设或单个功能实现单独编写模块或组件的.c文件,以实现整个系统的高內聚低耦合。
记录一下在当前我负责的一个项目中,需要使用单片机实现单线和产品通讯,完成数据收发的功能的问题。
单片机和产品之间只使用一根数据线和另一根GND
完成数据收发,单片机发数据时产品收,产品发数据时单片机收,收发一一对应,产品不主动发数据,产品在收到指令后,必须在一定时间内给予回应。
在准备做数据接收部分,先在脑海中构思的时候,首先想的是,数据发送完毕,单片机开启中断准备接收和自动完成接收,并将接收数据放在缓冲中。
因为数据一发对应一收,且有时间限制,在思考时对该部分过于注意,导致思想进入漩涡。
认为数据接收自动完成,但需要时间,且时间一定会在指定时间段内完成,所以系统设计应该是APP在发送数据后,延时一定时间来读取即可。
但很快思考发现问题,如果产品没有按照约定返回怎么办?或产品断线?就永远收不到返回!
所以实际方法应该是,在组件内设置接收完成标志位,并在收发函数内进行状态维护。
APP调用组件接口完成指令发送,之后可以调用接口一直轮训该标志位,而轮训只会有三种结果。
1接收完成,那么读取即可。
2没有接收,那么继续下次轮训。
3轮训超时,说明产品没有回复或者通讯断线。
这篇关于半双工数据收发组件被APP查询是否收到数据的问题。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?