Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
wifi
柿饼_PersimmonUI
网络
柿饼派通信时经常出现通信失败的问题
发布于 2020-11-13 09:56:29 浏览:1260
订阅该版
柿饼派进行网络通信时,在网络连接成功后(即发生了有效的onNetworkEvent后),有时可以立即开始通信,有时要持续甚至将近1分钟的getaddrinfo err,connect failed,resolve address error(-1)后才可通信,出错时从柿饼派发起的ping也不通,提示unknown host,在传输时,只有一个http连接每1秒频率执行时,偶尔出现该传输错误,在增加一个每10秒频率执行一次的http请求后,至少每10秒出一次该传输错误。 从Windows向柿饼派发起ping倒是正常,偶尔有时候从柿饼派向windows发起的ping延迟高达1s甚至timeout。 同时传输时始终伴有receive data error(0),不知道什么意思? 附图: ![QQ图片20201113095320.png](/uploads/20201113/9f0f4c57b5e245fa6b1cd318e003ea73.png) ![QQ图片20201113095336.png](/uploads/20201113/07164a8cc37aa951eefd7bd1990464a3.png) ![QQ图片20201113095342.png](/uploads/20201113/9e87ff5d21d648ca3a4bb234dcce4a6f.png) ![QQ图片20201113095345.png](/uploads/20201113/31aa3a7b2bc14d10289601230109d959.png) ![QQ图片20201113095348.png](/uploads/20201113/9d74d0f45db5ff7aa1d769c5e0978e07.png) ![QQ图片20201113095352.png](/uploads/20201113/6c7b4985e4aca8360e6f553d61245f06.png) ![QQ图片20201113095359.png](/uploads/20201113/deec98c9bb4dabfae2c17e4dabcf62a4.png) ![QQ图片20201113095403.png](/uploads/20201113/f153448aa3d1e739332e5f13d78664d2.png) ![QQ图片20201113095411.png](/uploads/20201113/86ed472a7af08e87a2c88e67b924e163.png) 代码: ```javascript wifi = 0; timer_wifi_monitor = 0; timer_network_time_update = 0; network_ok = false; timer_network_time_update_cnt = 0; timer_network_time_update_status = false; timer_time_update = 0; timer_time_display_update = 0; timer_system_info_update = 0; host = "http://192.168.0.126:8152"; date = new Date(); function reconnect(pageobj) { network_ok = false; if(!wifi.scan()) { pageobj.setData({label_wifi_status : "WIFI扫描请求失败,正在重试..."}); timer_wifi_monitor = setTimeout(function(){reconnect(pageobj);},1000,"wifi_monitor"); } else { pageobj.setData({label_wifi_status : "WIFI扫描请求成功,正在等待返回..."}); } } function get_obj(jsonstr) { return eval("(" + jsonstr + ")"); } function network_time_update(pageobj) { if(network_ok) { if(timer_network_time_update_cnt > 0) { timer_network_time_update_cnt--; return; } var rq = pm.request( { url : host + "/gettime", success : function(res) { var pack = get_obj(res.data.toString()); console.log(pack.year + "-" + pack.month + "-" + pack.day + " " + pack.hour + ":" + pack.minute + ":" + pack.second); date.setYear(pack.year); date.setMonth(pack.month - 1); date.setDate(pack.day); date.setHours(pack.hour); date.setMinutes(pack.minute); date.setSeconds(pack.second); timer_network_time_update_cnt = 10; timer_network_time_update_status = true; }, fail : function() { timer_network_time_update_cnt = 0; timer_network_time_update_status = false; } }); } else { timer_network_time_update_cnt = 0; } } String.prototype.padStart = function (targetLength, padString) { var string = this; while (string.length < targetLength) { string = padString + string; } return string; } function getTimeString() { var weekname = ["日","一","二","三","四","五","六"]; var str = date.toDateString() + " " + date.getHours().toString().padStart(2,"0") + ":" + date.getMinutes().toString().padStart(2,"0") + ":" + date.getSeconds().toString().padStart(2,"0") + " 星期" + weekname[date.getDay()]; return str; } function time_update(pageobj) { date.setTime(date.getTime() + 1000); } function time_display_update(pageobj) { pageobj.setData({label_time : getTimeString() + " " + (timer_network_time_update_status ? "网络时间获取成功" : "网络时间获取失败")}); } function system_info_update(pageobj) { if(network_ok) { var rq = pm.request( { url : host + "/getsysteminfo", success : function(res) { var pack = get_obj(res.data.toString()); pageobj.setData({label_system_info_total : "CPU Load:" + Math.floor(pack.cpu_load_total).toString().padStart(2,"0") + "%% Memory Usage:" + Math.floor(pack.memory_usage).toString().padStart(2,"0") + "%% GPU Load:" + Math.floor(pack.gpu_load).toString().padStart(2,"0") + "%"}); pageobj.setData({label_system_info_detail: "Memory:" + pack.memory_used + "/" + pack.memory_total + " CPU Clock:" + Math.floor(pack.cpu_clock_total).toString() + "MHz GPU_Clock:" + Math.floor(pack.gpu_clock).toString() + "MHz"}); }, fail : function() { timer_network_time_update_cnt = 0; //pageobj.setData({label_system_info_total : "系统信息获取失败"}); } }); } } var page = { /* 此方法在第一次显示窗体前发生 */ onLoad : function (event) { var that = this; timer_network_time_update = setInterval(function(){network_time_update(that);},1000,"network_time_update"); timer_time_update = setInterval(function(){time_update(that);},1000,"time_update"); timer_time_display_update = setInterval(function(){time_display_update(that);},1000,"time_display_update"); timer_system_info_update = setInterval(function(){system_info_update(that);},1000,"system_info_update"); wifi = pm.createWifi(); wifi.onScanEvent( function(res) { network_ok = false; if(res) { if(!wifi.connect({ssid : "dlink-lzr-ap",password : "LZR19981001"})) { that.setData({label_wifi_status : "WIFI连接请求失败,正在进行重连..."}); timer_wifi_monitor = setTimeout(function(){reconnect(pageobj);},1000,"wifi_monitor"); } else { that.setData({label_wifi_status : "WIFI连接请求成功,正在等待返回..."}); } } else { pageobj.setData({label_wifi_status : "WIFI扫描失败,正在重试..."}); timer_wifi_monitor = setTimeout(function(){reconnect(pageobj);},1000,"wifi_monitor"); } } ); wifi.onNetworkEvent( function(res) { if(res) { network_ok = true; that.setData({label_wifi_status : "网络已连接"}); } else { network_ok = false; that.setData({label_wifi_status : "网络连接失败,正在进行重连..."}); reconnect(that); } } ); wifi.onConnectEvent( function(res) { network_ok = false; if(res) { that.setData({label_wifi_status : "WIFI已连接"}); } else { that.setData({label_wifi_status : "WIFI连接失败,正在进行重连..."}); reconnect(that); } } ); reconnect(that); }, /* 此方法展示窗体后发生 */ onResume : function (event) { }, /* 当前页状态变化为显示时触发 */ onShow : function (event) { }, /* 当前页状态变化为隐藏时触发 */ onHide : function (event) { }, /* 此方法关闭窗体前发生 */ onExit : function (event) { } }; Page(page); page = 0; ```
查看更多
小鳄鱼
2020-11-14
rt-thread脑残粉
hello 这个问题我在柿饼派上复现了,下面是问题分析: # 问题分析 * getaddrinfo err,connect failed,resolve address error(-1) 这个错误是因为lwip的MEMP_NUM_NETDB 不够大,这个参数是可以并行运行 lwip_addrinfo() 的数量,地址解析时使用。 因为js中开了两个定时器进行http访问,会同时调用lwip_addrinfo, 所以第二个http请求会报错。 * receive data error(0) 是因为服务器挂了,客户端获取不到数据了,我用你提供的服务器代码,客户端访问一次就炸了。访问新浪的资源(url:http://hq.sinajs.cn/?format=json&list=sz159995)没有问题 ### 解决办法 * 将 rt-thread\components\net\lwip-2.0.2\src\include\lwip\opt.h 中的MEMP_NUM_NETDB 改成比1大的数。 * 排查一下服务器代码,是不是容错机制不够
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
lizhirui
这家伙很懒,什么也没写!
提问
2
回答
0
被采纳
0
关注TA
发私信
相关问题
1
【PersimmonUI柿饼学习营】+ A Byte of China + 环境搭建&20W年薪广告
2
【柿饼学习营】+werrysuzhen+20W年薪作业
3
【PersimmonUI柿饼学习营】+ meetwit + 20W年薪广告&lesson01
4
【PersimmonUI柿饼学习营】+ DaZhou + 20W年薪作业+视频有彩蛋
5
【PersimmonUI柿饼学习营】+ DMY+ lesson01 20W年薪广告
6
【PersimmonUI柿饼学习营】+ Bigmagic+20W年薪广告&day01
7
【PersimmonUI柿饼学习营】+ chowguohua+年薪广告
8
【柿饼学习营】+werrysuzhen+脚本及事件学习
9
【PersimmonUI柿饼学习营】+ DaZhou+ 手把手教你做计算器
10
【PersimmonUI柿饼学习营】+ A Byte of China + 2048游戏
推荐文章
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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
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
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部