【MiCOKit试用体验】+ 如何扫描附近WiFi热点 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【MiCOKit试用体验】+ 如何扫描附近WiFi热点

GalaIO ( 楼主 ) 2015-11-8 20:03:46  只看该作者 倒序浏览
    在上一节中,我们学会了如何给MicoKit的Cli的工具中添加命令,对于我们来说,这是为了我们扩展源程序,来开发更灵活的功能。在这一节我们将会添加一个扫描附近WiFi热点的命令,来提供给开发者调试。% z! b* K5 U. E) Q3 h
   在标准的SDK中的Demo中有给出,SDK_MiCO_v2.3.0DemosCOM.MXCHIP.BASICwifiscan相对目录,主要的原理就是想mico中注册 一个回调函数,当wifi核扫描完热点信息后,会通过回调函数来传递数据给用户层,注册函数原型如下:
$ o4 D4 w1 Y, c' O. \4 g' N( Y- X' K4 \* G
  1. 0 }4 e( E5 z: j; `; i. [3 q5 Z
/**
  * @brief  Register a user function to a MiCO notification.
  * @param  notify_type: The type of MiCO notification.
  * @param  functionAddress: The address of user function.
  * @param  arg: The address of argument, which will be called by registered user function.
  * @retval kNoErr is returned on success, otherwise, kXXXErr is returned.
  */
OSStatus mico_system_notify_register( mico_notify_types_t notify_type, void* functionAddress, void* arg );
复制代码

1 X2 }* B0 T) @4 X% I8 Y3 M- m  d' l

$ v: K: ~% Y2 k$ M; S4 R   回调函数定义如下:- ]/ n4 `6 T, h$ }- Q0 W, q) `. S# J
7 x- \# D( C. R5 P1 ^" m

  1. 8 k$ ]8 ^- x1 Y% a
static void micoNotify_ApListCallback(ScanResult *pApList)
{
  int i=0;
  wifi_scan_log("got %d AP", pApList->ApNum);
  for(i=0; iApNum; i++)
  {
    wifi_scan_log("ap%d: name = %s  | strenth=%d",  
                  i,pApList->ApList[i].ssid, pApList->ApList[i].ApPower);
9 T; D  }& l* t/ U6 c
  •   }
    }
    复制代码& N: M' r) m7 C
    / Z$ Y0 {3 s+ n# y) O1 U

    6 s/ k4 m* I- x: ]8 W# z" q; Z
    + G: K4 M9 c5 u3 d5 a   当注册了回调函数后,现在需要使能系统的扫描功能,函数原型如下:
    , r. D. l* ~( c( c6 H3 C. \" @& s3 |, P" g: i& x* c; U/ ?

    1. . ]5 q: W0 Y: F* @) _1 s
    /** @brief  Start a wlan scanning in 2.4GHz in MICO backfround.
    *  
    *  [url=home.php?mod=space&uid=512752]@detail[/url] Once the scan is completed, MICO sends a notify:
    *          mico_notify_WIFI_SCAN_COMPLETED, with callback function:
    *          void (*function)(ScanResult *pApList, mico_Context_t * const inContext)
    *          Register callback function using [url=home.php?mod=space&uid=1352397]@ref[/url] mico_add_notification() before scan.
    */
    void micoWlanStartScan(void);
    复制代码
    * c. `% w* A# [( s" ?: d1 @! X
    " n. D' K( I6 Q& u7 Z, j+ p% ]; U+ [( w1 K
       现在只需要等待,回调函数返回结果就好了,在这里我们直接在回调函数中打印输出结果。对于有些应用为了同步数据,所以需要设置信号量来等待回调函数返回结果,由于我们在这里并不需要同步,因为我们都是手动操作的嘛~~~结果如下:
    6 M$ }0 a8 z! c
    ; K9 i. r* d! H: X$ E% [/ P
    , P6 K- _. }: A6 {2 h' k1 s* U$ W7 b! ]8 F, C3 e

    1个回复

    micolover 发表于 2015-11-9 11:52:22
    感谢楼主的分享!
    回复 1

    举报 使用道具

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

    本版积分规则


    关闭

    站长推荐上一条 /6 下一条

    小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

    GMT+8, 2024-4-23 16:45 , Processed in 0.515608 second(s), Total 48, Slave 33 queries .

    Powered by 电子发烧友网

    © 2015 bbs.elecfans.com

    微信扫描
    快速回复 返回顶部 返回列表