完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题描述: 工作流程是:板子上电初始化连接wifi开服务模式分配端口 -> TCP调试软件通过wifi连接到板子 -> 每隔100ms发送一次查询指令:A0 02 D1 0D 0A -> 正常解析数据后返回指令:A0 0B D1 00 00 01 0D 0A。 问题点:在出现一次 [44598] D/at.clnt: execute command (AT+CIPSEND=0,8) timeout (5000 ticks)! 之后队列里所有待发送的数据都是隔一条才能正常发送一条。 可能出现问题的代码段: 在上次提问之后参考ESP8266的例程更改了发送函数 代码如下: `rt_err_t send_data_to_client(uint8_t client_num, const char *buff, /* 创建响应结构体,设置最大支持响应数据长度为 512 字节,响应数据行数无限制,超时时间为 5 秒 / 分析来看是在执行at_exec_cmd(resp, “AT+CIPSEND=%d,%d”, client_num, cur_pkt_size) 即 (AT+CIPSEND=0,8) 未正常接收到返回的”>”。 在出现该问题后我使用 at client 指令进入调试模式,发送AT+CIPSEND=0,8指令后返回非常迅速。 请教如何调试解决该问题。 |
|
相关推荐
2个回答
|
|
调试时发现未执行成功时的AT返回如下:
[D/AT] sendline: 0000-0020: 41 54 2B 43 49 50 53 45 4E 44 3D 30 2C 38 AT+CIPSEND=0,8 [D/AT] recvline: 0000-0020: 0D 0A .. [D/AT] recvline: 0000-0020: 62 75 73 79 20 73 2E 2E 2E 0D 0A busy s….. [D/AT] recvline: 0000-0020: 0D 0A .. [D/AT] recvline: 0000-0020: 53 45 4E 44 20 4F 4B 0D 0A |
|
|
|
问题已解决,主要问题就是使用ESP8266模块的时候发送频率不能太快,最好等待SEND OK之后再进行下次发送,我的调试结果来看比较合适的时间是50~100ms发送一帧数据。
总结下经验:在使用AT组件开发时添加 #define AT_PRINT_RAW_CMD 打印出来每次发送/接收的数据能比较方便的找到问题所在。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
794 浏览 0 评论
4650 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2588 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2945 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31650 浏览 11 评论
73048 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:22 , Processed in 0.608014 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号