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

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

GalaIO ( 楼主 ) 2015-11-8 20:03:46  只看该作者 倒序浏览
    在上一节中,我们学会了如何给MicoKit的Cli的工具中添加命令,对于我们来说,这是为了我们扩展源程序,来开发更灵活的功能。在这一节我们将会添加一个扫描附近WiFi热点的命令,来提供给开发者调试。
7 e2 Z6 O6 G& p  F7 P. O   在标准的SDK中的Demo中有给出,SDK_MiCO_v2.3.0DemosCOM.MXCHIP.BASICwifiscan相对目录,主要的原理就是想mico中注册 一个回调函数,当wifi核扫描完热点信息后,会通过回调函数来传递数据给用户层,注册函数原型如下:4 I5 X' h8 E2 q
% c2 W+ t- y1 T" s
  1. 5 W2 |: F- D! |: e/ ^
/**
  * @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 );
复制代码
3 J/ }8 X& f) C8 ^2 f- a7 E  g. H: O
8 y) Y. H) U' w% J

0 f; W9 U7 a8 w, {8 i6 r% s   回调函数定义如下:
! S. J! y5 L$ f9 ^7 Z( M/ @' O8 y* m$ d+ A3 B9 R3 n: X
  1. / V9 }$ T$ {) i- }- g
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);

* f* {2 W& o, T
  •   }
    }
    复制代码
    + _8 X; ~$ s; k" X" k
    , F8 w2 J. \" j. Q
    3 k& k. R+ O9 z# }9 |; P1 j
    2 e( n0 E  I3 C5 Y. x   当注册了回调函数后,现在需要使能系统的扫描功能,函数原型如下:
    2 e1 d# y8 v4 V; n$ m1 L/ v- H; y7 Z

    1. 4 b: h+ j6 A: v# q) W+ p* 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);
    复制代码4 |8 ^8 x, r5 z0 q/ {) c

    ' h5 d' j" S1 k7 y1 g: L
    $ }! f) Y# k/ J0 J- v2 h; E) W5 a   现在只需要等待,回调函数返回结果就好了,在这里我们直接在回调函数中打印输出结果。对于有些应用为了同步数据,所以需要设置信号量来等待回调函数返回结果,由于我们在这里并不需要同步,因为我们都是手动操作的嘛~~~结果如下:" R8 I. u3 t: s9 \0 m& Z; I' @

    ! A0 f2 \( ~* b( B; w8 t0 o4 t9 a& U/ Q' h- z" B2 I. ]
    2 @1 R" u5 h8 ]1 i

    1个回复

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

    举报 使用道具

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

    本版积分规则


    关闭

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

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

    GMT+8, 2024-12-21 11:23 , Processed in 0.352241 second(s), Total 35, Slave 25 queries .

    Powered by 电子发烧友网

    © 2015 bbs.elecfans.com

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