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

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

GalaIO ( 楼主 ) 2015-11-8 20:03:46  只看该作者 倒序浏览
    在上一节中,我们学会了如何给MicoKit的Cli的工具中添加命令,对于我们来说,这是为了我们扩展源程序,来开发更灵活的功能。在这一节我们将会添加一个扫描附近WiFi热点的命令,来提供给开发者调试。
. W6 T+ l- {& d( r: @! M   在标准的SDK中的Demo中有给出,SDK_MiCO_v2.3.0DemosCOM.MXCHIP.BASICwifiscan相对目录,主要的原理就是想mico中注册 一个回调函数,当wifi核扫描完热点信息后,会通过回调函数来传递数据给用户层,注册函数原型如下:6 P. M. A, |2 x

- b2 k+ }& t1 W% y% P* z6 ]
  1. - r8 s/ s% [* s6 _2 H7 v/ i
/**
  * @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 );
复制代码

5 d5 M/ a" `$ V+ S/ k& r  V
5 D" ^# p) f/ R  D% M! }& k
; ]2 W$ R* I' u2 y6 Q" b   回调函数定义如下:
: r& L2 ?. m5 o0 ]: r0 }% I  f
/ V+ V% \, r2 h5 C/ Z' ^
  1. 4 U5 V( K& n6 K7 d  [, a  \0 |
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);
# h# J- u; t# \) ^  b
  •   }
    }
    复制代码/ l& V7 R: I' k7 N' Y) c5 r

    0 @. D6 @+ h0 g) P7 M! _
    - g- Z' Q. Z* I  _2 n# K, R) J
    * I) ~* z0 [7 r   当注册了回调函数后,现在需要使能系统的扫描功能,函数原型如下:4 g5 L" \' m) c' n0 e( a- g. f/ v( G6 m  q

    & Q0 j8 ]8 d7 C  M# [
    1. - c3 N" ?' O, W8 j. D- h5 i9 g
    /** @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);
    复制代码6 x! H! l+ |( R0 z) h

    " F; G4 I/ H- V; M1 m% H) r# r. J* l0 Q( ?* ~' y9 |
       现在只需要等待,回调函数返回结果就好了,在这里我们直接在回调函数中打印输出结果。对于有些应用为了同步数据,所以需要设置信号量来等待回调函数返回结果,由于我们在这里并不需要同步,因为我们都是手动操作的嘛~~~结果如下:
    5 H" U: W* D" B& e1 W2 M! G( Y
    , U8 B3 Z# c5 x5 v) c9 m' C+ Q( v
    / a- l1 y# O! R$ r- z! c

    1个回复

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

    举报 使用道具

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

    本版积分规则


    关闭

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

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

    GMT+8, 2024-12-21 14:13 , Processed in 0.411690 second(s), Total 36, Slave 25 queries .

    Powered by 电子发烧友网

    © 2015 bbs.elecfans.com

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