Cheney_Chen
Cheney_Chen
This guy hasn't written anything yet

注册于 4 years ago

回答
2
文章
0
关注者
4

可以的,MQTT 基于 TCP, COAP 基于 UDP ,两种协议都是以软件包形式提供,不会产生什么冲突

    本帖最后由 Cheney_Chen 于 2019-11-23 14:29 编辑


如楼主所述:接收 URC 数据格式为 ‘’+recv:10,xxxxxxxxxx“
这种情况,URC 处理方式为,前缀匹配:“+recv”,后缀匹配:“,” ,这里的 “,” 逗号就可以作为 URC 数据结束符。 我们需要获取具体 URC 数据长度,然后直接调用接口接收指定长度数据,完成 URC 数据接收。 URC 回调函数中大致处理如下:

c<br/><br/>static void urc_recv_func(struct at_client *client, const char *data, rt_size_t size)<br/>{<br/> // 解析需要接收的 URC 数据长度<br/> sscanf(data, "+recv:%d,", (int *) &bfsz);<br/> ....<br/><br/> // 调用该接口直接从串口中接收指定长度数据数据<br/> at_client_obj_recv(client, recv_buf, bfsz, timeout)<br/>}<br/>

一般 URC 接收数据中都有 socket 和数据长度等信息,正确提取该信息就可以完整的接收到 URC 数据。




1. at_device 没有注册 net 网络设备,可以通过 ifconfig 查看网卡状态判断设备是否正常

2. 查看代码发现 sim76xx 设备中不支持设置域名解析地址,翻看 AT 手册为发现设置相关命令,应该是模块未提供设置 DNS 服务器地址的 AT 命令



3. 建议你先用以太网方式测试该地址下载数据正常,再尝试确定 AT 接收数据问题,可能情况:内存占用不足(free 查看资源占用情况),接收数据时模块死机(打开 RAW 日志信息,或者使用逻辑分析仪抓取串口数据)

xingyanchen 发表于 2019-11-20 14:33
问题已经解决: 为了保证不出现采集后仍然有信号量的情况
需要在数据采集完成 ...


如果是软件包问题,楼主解决了是否可以提交 PR 修复一下问题呢,也方面后面其他人使用该软件包

sim76xx 设备建议使用 at_device 2.0.1 版本之后软件包哦,第一个问题就是因为 ifconfig 没适配,在 2.0.1 版本之后才有适配
QQ截图20191120172905.jpg

目前 AT Device 软件包对接的设备不支持作为服务器哦

QQ截图20191119100747.jpg

梦笑真美 发表于 2019-11-18 22:52
楼主解决了嘛,我的也是经常超时错误,我裸机程序是正常的


建议把 RAW 日志功能打开,需要更多日志信息才能确定问题,从日志中也可能看出那个命令收发失败了

梦笑真美 发表于 2019-11-18 22:42
使用EC20打开TCP和发送数据经常超时或未响应,把等待时间加大也不行,我裸机程序都能一次成功的




从日志看,可能是因为阿里云连接时地址的问题,将连接的地址改为全部小写试试再连接吧

sjj430 发表于 2019-11-19 09:50
请问这个at_ping的命令是AT SOCKET自带的吗


不是自带的哦,现在 AT Device 设备都对接 ntedev 组件之后可以直接调用 ping 命令,但是针对每个设备都要自己实现一个 netdev_ping 命令,以 ESP8266 设备为例,实现代码如下:

https://github.com/RT-Thread-packages/at_device/blob/master/class/esp8266/at_device_esp8266.c#L390-L461

没遇到过这种问题,你看看是不是哪使用 malloc、free 等函数导致的

    本帖最后由 Cheney_Chen 于 2019-11-13 17:05 编辑


ali-iotkit 软件包中没有适配配网相关的代码,如果你是个人学习可能需要你参考阿里云官方提供的适配方式自行适配配网相关功能,如果你是公司合作 RT-Thread 有提供一份完整针对 W600 设备的阿里云适配 SDK 支持

从你的日志看,第一次发送数据的时候已经出现 busy p.... busy s....,说明时候发送数据流程已经有问题了,查看代码可能是因为你定义的 send_data_to_client 函数中 `>` 函数处理问题,参考 ESP8266 设备中 `>` 处理方式:

    本帖最后由 Cheney_Chen 于 2019-11-4 15:24 编辑


建议进 AT CLI 模式( shell 中输入 `at client` 命令),然后使用手动输入命令列出该模块数据交互整体流程,看看接收数据 +NSOMSI 命令获取时具体格式,可能该 URC 数据不是已 \r\n 结尾导致上述问题。

整体 AT 命令数据流程(包括连接创建,接收数据,发送数据)贴出来我再帮你具体分析一下。

检查一下软件包中配置的中断和复位引脚号配置是否正确,spi 设备名称配置是否正确,spi 设备是否正常注册,检查W5500 网线口是否闪等确保硬件连接正常

可是是你用了中间版本的 4.0.1 rt_thread,现在 rt-thread 4.0.1 版本已经 release ,建议使用 release 版本,我这边测试 release 版本和 at_device 1.6.0 版本不会出现问题

回到
顶部

发布
问题

投诉
建议