Cheney_Chen
Cheney_Chen
This guy hasn't written anything yet

注册于 4 years ago

回答
2
文章
0
关注者
4

学长啊啊啊 发表于 2019-9-26 15:32
TCP通信的时候,如果要修改本地的IP和端口 了。 应该怎么操作?大神来指导一下呗! ...


IP 地址你想修改可以关闭 DHCP 设置静态 IP,端口号可以通过 bind 函数绑定

霹雳大乌龙 发表于 2019-9-21 12:35
AT device最新版本运行正常,但是明显感觉比板载wifi慢太多。


这个是 URAT 串口速度限制,能稳定使用就好

霹雳大乌龙 发表于 2019-9-21 11:09
AT方式还是跟图片一样的错误,好像是发送不成功。

AT 方式能不能给出更多日志信息,比如 RAW 日志,我才能帮你详细分析一下

霹雳大乌龙 发表于 2019-9-21 10:45
感谢回复
修改成webclient_handle_response函数运行就正常了,但是这个函数有警告,也找不到该函数的定 ...


webclient_handle_response 函数在 wenclient.c 文件中定义,webclient_post_file 函数用于上传文件到服务器,没有出处理响应的数据保存到文件,建议你按照现在方式保存响应数据。

    本帖最后由 Cheney_Chen 于 2019-9-21 14:45 编辑


基于 AT 的 WIFI 设备是可以对接 WLAN 框架的,目前 AT Deivce 中可能只实现了 WIFI 的连接,如果对接 WLAN 框架可以实现对 WIFI 扫描、断开、状态获取等功能,并且也方便用户使用,可以尝试对接。

[md]可能楼主需要注意一下 at_exec_cmd 函数的使用方式,该函数支持通过标准响应命令返回(OK、ERROR、FAIL)、支持接收指定行数数据返回、支持设置命令超时时间,这些功能的支持需要设置不能参数的 resp 对象并传递给 at_exec_cmd 函数:

下面举个例子:

上面楼主提到 “AT+ICCID” 响应的是 “+ICCID: 89860117801431450016" 数据,只有一行,我们处理方式是

```c

(最大接收数据 128,接收一行数据后返回,接收数据超时时间为 2 秒)
resp = at_create_resp(128, 1, 2 * RT_TICK_PER_SECOND);

result = at_exec_cmd (resp, "AT+ICCID");

```

这样只要在指定接收超时时间内返回一行数据,at_exec_cmd 函数就会返回正常,这是 at_exec_cmd 函数的基本用法,更多函数使用方式和 resp 数据解析方式可以查看 [AT 组件编程指南]( ) AT Client 函数使用章节。[/md]

支持楼主试一下将 AT Device 对接到 WLAN 框架中:lol

目前最新版 ESP8266 设备 WIFI 连接已经和模块初始化分开了,可以先初始化然后使用 WLAN 框架进行 wifi 连接

看了你的代码,发现一些使用的问题,目前来看你是使用分段上传数据的方式实现 POST 功能,webclient 软件包中介绍分段上传数据方式如下:

https://github.com/RT-Thread-pac ... 2%E6%96%B9%E5%BC%8F

可以看到示例中使用 webclient_handle_response 函数获取 post 响应数据返回值,而非你代码中使用的 webclient_resp_status_get 函数,你可以更具官方流程介绍文档适当修改一下看看

jamguo 发表于 2019-9-19 16:39
[31m[E/at.clnt] AT Client receive failed, uart device get data error(-2) [0m
[31m[E/at.skt] sim800c ...


应该是 URC 接收函数中设置的串口接收超时时间过短,之前根据数据长度设置的(比如这里接收两个字节,则接收超时时间为两个 TICK),可能造成串口接收失败问题,laster 最新版设置了最低超时间,你可以更新一下试试,具体改动看下面 PR 提交记录:

https://github.com/RT-Thread-packages/at_device/pull/69

    本帖最后由 Cheney_Chen 于 2019-9-17 09:59 编辑


sport398 发表于 2019-9-16 14:11
手动输入,返回的结果正常

如果是 at_device 1.6.0 版本,执行 at_net_init 命令重新初始化网络试一下,可能是刚才模块未初始化完成导致 SIM 卡状态获取失败了吧

看着像 SIM 卡状态获取不对,你可以在 CLI 模式下手动输入初始化命令查看一下当前设备网络相关状态是否正常

bevis 发表于 2019-9-16 10:25
抓串口数据 要开开启 RAW??还是不开也能看?


逻辑分析仪抓串口数据,建议不开启RAW 数据,防止因为 shell 打印数据延时导致的一些错误

bevis 发表于 2019-9-16 09:36
使用潘多拉最新SDK + ESP8266 + 局域网WIFI没有复现此问题。有点怀疑4G信号问题,但是我没证据。如果真是信 ...


建议用逻辑分析仪抓一下串口的数据,先确定 84% 左右的时候到底是模块自己断开了没有给你发数据还是数据都发送晚了,AT Device 这块接收有问题,OTA 这中数据量大的情况开启 RAW 其实看的意义不大,建议还是关了吧分析逻辑分析仪抓出来数据

URC 中处理接收数据一般都是传递给 recvfrom 接收函数吧,应用层直接调用 recv 或者 recvfrom 接收数据就行

at_device_registe 中有网卡注册,这个屏蔽掉了,肯定找不到网卡啦

回到
顶部

发布
问题

投诉
建议