完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
char * sim900a_waitask(uint8_t waitask_hook(void)) //等待有数据应答
{ uint8_t len=0; char *redata; do{ redata = SIM900A_RX(len); //接收数据 if(waitask_hook!=0) { if(waitask_hook()==SIM900A_TRUE) //返回 SIM900A_TRUE 表示检测到事件,需要退出 { redata = 0; return redata; } } }while(len==0); //接收数据为0时一直等待 SIM900A_DELAY(20); //延时,确保能接收到全部数据(115200波特率下,每ms能接收11.52个字节) return redata; } |
|
相关推荐
4个回答
|
|
这是一个回调函数指针,不知道硬件如何
从代码看,调用sim900a_waitask函数的人还需要自己提供等待应答的回调函数 意思可能有应答,也可能没有应答 需要在waitask_hook函数内读取硬件或某些数据,判断给出结果,如果是SIM900A_TRUE,说明正在等应答或其他符合硬件的事件,直接退出了 也可能在waitask_hook函数内实现了超时的判断等等 如果没有事件,就一直接收,收到一个长度不为零的就退出循环,如果没有这个回调函数,外部没数据会死循环 这样做的代码的自由度比较大,可以把硬件驱动代码和软件应用层隔离,移植到不同的硬件时,实现不同waitask_hook就可以了 |
|
|
|
真心感谢,共同进步
|
|
|
|
他是这么调用的:redata=sim900a_waitask(0);不是很理解这么做有什么用,我是一个新手,很多地方不懂
|
|
|
|
意思就是直接读取数据,不管其他状态 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
1128 浏览 2 评论
1481 浏览 3 评论
1114 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1249 浏览 0 评论
1537 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 11:25 , Processed in 1.293195 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191