Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AT
socket (0) close failed异常
发布于 2019-04-17 21:47:17 浏览:2741
订阅该版
[tocm] * 本帖最后由 lihanchao90 于 2019-4-21 15:47 编辑 * # E/at.m26|mc20: socket (0) close failed异常 ## 环境 - 硬件:stm32f103rct6+m26 - 软件:rt-thread 4.01 - 组件:AT,MQTT ## 测试问题 通过M26模组往iot.eclipse.org publish 消息,60s发布一次,测试从[2019/4/16 19:37:40] 开始到[2019/4/17 17:36:57]一共发布1200次,失败235次,第1201次发布失败后无法重连。 ## 问题分析 1、测试时打开AT RAW data功能 ,查看log发现发送`AT+QICLOSE=0`回复` ERROR`,在`m26_socket_close`函数中由于没有收到`CLOSE OK`导致提示`E/at.m26|mc20: socket (0) close failed, wait close OK timeout.`错误。 ``` [2019/4/17 17:36:57] [D/AT] send: 0000-0020: 41 54 2B 51 49 53 45 4E 44 3D 30 2C 32 AT+QISEND=0,2 [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 45 52 52 4F 52 0D 0A ERROR.. [2019/4/17 17:36:57] [72117353] E/at.clnt: execute command (AT+QISEND=0,2) failed! [2019/4/17 17:36:57] [72117360] D/mqtt.sample: inter mqtt_offline_callback! [2019/4/17 17:36:57] [D/AT] send: 0000-0020: 41 54 2B 51 49 43 4C 4F 53 45 3D 30 AT+QICLOSE=0 [2019/4/17 17:36:58] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:58] [D/AT] recvline: 0000-0020: 45 52 52 4F 52 0D 0A ERROR.. [2019/4/17 17:36:58] [72118380] E/at.m26|mc20: socket (0) close failed, wait close OK timeout. [2019/4/17 17:36:58] [72118388] E/at.skt: AT socket (0) closesocket failed! [2019/4/17 17:37:00] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:37:00] [D/AT] recvline: 0000-0020: 43 61 6C 6C 20 52 65 61 64 79 0D 0A Call Ready.. [2019/4/17 17:37:00] [72119630] I/at.m26|mc20: URC data : Call Ready [2019/4/17 17:37:00] [2019/4/17 17:37:03] [72123394] D/mqtt: restart! [2019/4/17 17:37:03] [72123396] D/mqtt.sample: inter mqtt_connect_callback! [2019/4/17 17:37:03] [72123402] D/mqtt: ipv4 address port: 1883 [2019/4/17 17:37:03] [72123406] D/mqtt: HOST = '198.41.30.241' [2019/4/17 17:37:03] [D/AT] send: 0000-0020: 41 54 2B 51 49 4F 50 45 4E 3D 30 2C 22 54 43 50 22 2C 22 31 39 38 2E 34 31 2E 33 30 2E 32 34 31 AT+QIOPEN=0,"TCP","198.41.30.241 [2019/4/17 17:37:03] [D/AT] send: 0020-0040: 22 2C 31 38 38 33 ",1883 [2019/4/17 17:37:03] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:37:03] [D/AT] recvline: 0000-0020: 45 52 52 4F 52 0D 0A ERROR.. ``` ``` /** * close socket by AT commands. * * @param current socket * * @return 0: close socket success * -1: send AT commands error * -2: wait socket event timeout * -5: no memory */ static int m26_socket_close(int socket) { int result = 0; rt_mutex_take(at_event_lock, RT_WAITING_FOREVER); cur_socket = socket; if (at_exec_cmd(RT_NULL, "AT+QICLOSE=%d", socket) < 0) { result = -RT_ERROR; goto __exit; } if (at_socket_event_recv(SET_EVENT(socket, M26_EVNET_CLOSE_OK), rt_tick_from_millisecond(300*3), RT_EVENT_FLAG_AND) < 0) { LOG_E("socket (%d) close failed, wait close OK timeout.", socket); result = -RT_ETIMEOUT; goto __exit; } __exit: rt_mutex_release(at_event_lock); return result; } ``` 2、 查看移远的M26命令手册中`AT+QICLOSE 关闭 TCP 或 或 UDP `这一章节时有这样的备注:`对于 AT+QICLOSE 操作:连接当 AT+QISRVC=1 且 AT+QIMUX=1 时,返回 ERROR`,因为AT Client配置的为client ,开启多路socket所以对应的应该是`AT+QICLOSE=index`的操作,不应该是ERROR, ![](![FastAdmin](http://ww1.sinaimg.cn/large/007waKjply1g25ylsn07wj30n80f3gow.jpg)) 3、 查阅`Quectel_GSM模块TCPIP应用流程指导_V1.2`中流程图中也没有流程对应Close error的情况。 ![](![FastAdmin](http://ww1.sinaimg.cn/large/007waKjply1g25ypwms6fj30n80gdwhu.jpg)) ## 疑问: 面对close error 的情况该如何处理?简单粗暴的方式-重启可以解决问题,不知道各位大神有什么意见?增加log ![sdc_error.log](/uploads/201904/21/154707d3n7d9tdn7jil1dn.attach)
查看更多
3
个回答
默认排序
按发布时间排序
Cheney_Chen
2019-04-19
这家伙很懒,什么也没写!
M26 AT 命令手册上显示,关闭 socket 失败的时候确实会返回 err。 这时候先确定关闭 socket 的值,然后进 CLI 模式,发送 "AT+QISTAT" 命令查看当前 M26 模块所有连接状态,确认是否存在当前 socket 值的连接。 如果没有出现当前 socket 值,是否是在调用 "AT+QCLOSE" 命令之前该 Socket 已经被关闭,查看 RAW 数据日志确定之前是否被关闭,可以贴出详细 RAW 数据日志一起分析一下。
lihanchao90
2019-04-21
这家伙很懒,什么也没写!
[i=s] 本帖最后由 lihanchao90 于 2019-4-21 16:05 编辑 [/i] >M26 AT 命令手册上显示,关闭 socket 失败的时候确实会返回 err。 > >这时候先确定关闭 socket 的值,然后进 ... --- log上传在正文最下面; [md]在log中的63444行,`AT+QISEND=0,2`后返回RDY,+CFUN,以及CPIN信息,接下来就是`AT+QICLOSE=0`返回ERROR,是不是设备重新初始化了,所以`AT+QICLOSE=0`返回 error ``` [2019/4/17 17:36:55] [D/AT] send: 0000-0020: 41 54 2B 51 49 53 45 4E 44 3D 30 2C 32 AT+QISEND=0,2 [2019/4/17 17:36:56] [D/AT] recvline: 0000-0020: 3A 37 00 0E 2F 6D 71 74 74 2F 74 65 73 74 2F 73 64 63 00 01 74 65 73 74 63 61 73 65 3A 20 70 75 :7../mqtt/test/sdc..testcase: pu [2019/4/17 17:36:56] [D/AT] recvline: 0020-0040: 62 20 73 75 63 63 65 73 73 20 31 31 39 39 20 2C 66 61 69 6C 20 32 33 35 0A 00 0D 0A b success 1199 ,fail 235.... [2019/4/17 17:36:56] [D/AT] recvline: 0000-0020: 52 44 59 0D 0A RDY.. [2019/4/17 17:36:56] I/at.m26|mc20: URC data : RDY [2019/4/17 17:36:56] [2019/4/17 17:36:56] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:56] [D/AT] recvline: 0000-0020: 2B 43 46 55 4E 3A 20 31 0D 0A +CFUN: 1.. [2019/4/17 17:36:56] [D/AT] send: 0000-0020: C0 00 .. [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 2B 43 50 49 4E 3A 20 52 45 41 44 59 0D 0A +CPIN: READY.. [2019/4/17 17:36:57] [72117294] E/at.m26|mc20: socket (0) send failed, wait connect result timeout. [2019/4/17 17:36:57] [72117302] E/mqtt: [72117302] send ping rc: -1 [2019/4/17 17:36:57] [D/AT] send: 0000-0020: 41 54 2B 51 49 53 45 4E 44 3D 30 2C 32 AT+QISEND=0,2 [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:57] [D/AT] recvline: 0000-0020: 45 52 52 4F 52 0D 0A ERROR.. [2019/4/17 17:36:57] [72117353] E/at.clnt: execute command (AT+QISEND=0,2) failed! [2019/4/17 17:36:57] [72117360] D/mqtt.sample: inter mqtt_offline_callback! [2019/4/17 17:36:57] [D/AT] send: 0000-0020: 41 54 2B 51 49 43 4C 4F 53 45 3D 30 AT+QICLOSE=0 [2019/4/17 17:36:58] [D/AT] recvline: 0000-0020: 0D 0A .. [2019/4/17 17:36:58] [D/AT] recvline: 0000-0020: 45 52 52 4F 52 0D 0A ERROR.. ``` [/md]
Cheney_Chen
2019-04-22
这家伙很懒,什么也没写!
>log上传在正文最下面; >[md]在log中的63444行,`AT+QISEND=0,2`后返回RDY,+CFUN,以及CPIN信息,接下来 ... --- M26模块接收到 RDY,+CFUN,CPIN 等信息很可能就是模块已经自动重启了,确定一下问什么模块会重启吧
撰写答案
登录
注册新账号
关注者
0
被浏览
2.7k
关于作者
lihanchao90
这家伙很懒,什么也没写!
提问
9
回答
5
被采纳
0
关注TA
发私信
相关问题
1
rt-thread 2g/3g/4g通信模块的教程有吗?
2
基于AT指令,用esp8266如何连接mqtt?
3
AT组件使用问题
4
官方AT客户端应用笔记的几个小tip
5
RTT的SAL能够判断使用LWIP或者AT?
6
rt_therad AT组件移植不成功(结贴)
7
AT组件在哪个版本的?
8
AT组件 连接 Onenet 连接失败
9
esp8266 AT指令 MQTT连接问题
10
AT组件使用问题之模块主动上报【已解决】
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用RC522软件包驱动FM1722
2
常量数据类型和表达式陷阱分享
3
进行i2c驱动移植的经验总结
4
在VSCode中使用clang-format
5
我该如何使用这个微雪的WIFI400 WIFI-LPB-100在rtt里或者我该怎样为它开发驱动
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
809
个答案
175
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部