找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8157|回复: 8

Padavan固件无线桥接时扫描到的SSID显示问号不显示中文的问题解决

[复制链接]
发表于 2016-12-18 11:51 | 显示全部楼层 |阅读模式
最近在做路由器的相关项目,今天也遇到了这个问题,下面简单说一下解决方法,供大家参考:
问题描述:当我们登陆后台管理页面,在无线桥接页面搜索AP的时候,AP LIST中如果其SSID是中文名称,则页面上展示的都是“???”,无法正常显示其中文名称。
问题原因:通过分析源代码,发现是源代码对扫描到的SSID名称做了处理,只认为SSID中所有字符都是可正常printf显示出来的ACSII字符才行,如果有其他的字符,则或替换或删除,具体可以参考源代码实现;
解决方法:所以解决这个需要修改源代码,然后重新编译出新的固件使用。有两处代码需要修改:
         1、页面扫描AP调用的是trunk/usr/httpd/web_ex.c中的“wl_scan_2g”即“ej_wl_scan_2g”函数,该函数的实现在trunk/usr/httpd/ralink.c代码中,在此函数的实现中有这样几行代码:
                         char_to_ascii(ssid_str, trim_r(site_ssid));
              retval += websWrite(wp, "[\"%s\", \"%s\", \"%s\", \"%s\"]", ssid_str, trim_r(site_bssid), trim_r(site_chnl), trim_r(site_signal));
              其中“char_to_ascii”对从驱动层获取到的SSID做了处理,具体可以参考其实现;然后将处理结果返回给了页面。这里需要将第二行代码修改成这样(加粗绿色部分):
              retval += websWrite(wp, "[\"%s\", \"%s\", \"%s\", \"%s\"]", trim_r(site_ssid), trim_r(site_bssid), trim_r(site_chnl), trim_r(site_signal));
         2、分析“ej_wl_scan_2g”从驱动层获取SSID的过程,即if (wl_ioctl(IFNAME_2G_MAIN, RTPRIV_IOCTL_GSITESURVEY, &wrq) < 0),其具体实现在无线WIFI驱动层;
            由于我们项目所用的WIFI驱动路径为trunk/proprietary/rt_wifi/rtsoc/2.7.x.x/,所以我就以这个路径下面的源码举例说明要修改的位置,其它型号的WIFI驱动都差不多;
            httpd中通过ioctl方法RTPRIV_IOCTL_GSITESURVEY参数调用到wifi的底层驱动rt2860v2/ap_cfg.c代码(可以在代码中搜索RTPRIV_IOCTL_GSITESURVEY);
            然后又调用RTMPIoctlGetSiteSurvey()方法,该方法在common/cmm_info.c中实现,分析此函数获取AP信息时调用了“RTMPCommSiteSurveyData”方法,此方面中的"RTMPCheckStrPrintAble"即对SSID字符作了判断,判断如果SSID中含有非可printf的字符,则返回为false,这里需要屏蔽此判断,所以简单的方法即将此函数内部的判断部分代码屏蔽掉或直接返回为true即可,例如,修改成:
           BOOLEAN RTMPCheckStrPrintAble(              IN  CHAR *pInPutStr,               IN  UCHAR strLen)           {                UCHAR i=0;                /* //屏蔽掉ASCII码判断处理逻辑
                for (i=0; i<strLen; i++)                {                      if ((pInPutStr < 0x20) ||                           (pInPutStr > 0x7E))                            return FALSE;                }
                */                return TRUE;            }
        


我的恩山、我的无线 The best wifi forum is right here.
发表于 2016-12-18 12:58 | 显示全部楼层
这个帖子不错,给你顶一下。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-18 14:41 来自手机 | 显示全部楼层
好帖子,给你顶一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-18 14:53 | 显示全部楼层
楼主还是直接编译个纯净版固件吧 小白不懂
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2016-12-18 17:05 | 显示全部楼层
楼主比较细心。支持!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2017-2-21 17:35 来自手机 | 显示全部楼层
新版本还是有问号这个问题,需要h大改改才可以
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-6-29 07:43 | 显示全部楼层
这两个地方都改了,扫描不出来
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-8-11 14:54 | 显示全部楼层
管用吗 管用吗管用吗管用吗管用吗管用吗管用吗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-8-11 14:56 来自手机 | 显示全部楼层
顶起顶起,让H大看到
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 13:11

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表