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

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

GalaIO ( 楼主 ) 2015-11-8 20:03:46  只看该作者 倒序浏览
    在上一节中,我们学会了如何给MicoKit的Cli的工具中添加命令,对于我们来说,这是为了我们扩展源程序,来开发更灵活的功能。在这一节我们将会添加一个扫描附近WiFi热点的命令,来提供给开发者调试。
1 X" {% e6 }1 F! i* \0 `   在标准的SDK中的Demo中有给出,SDK_MiCO_v2.3.0DemosCOM.MXCHIP.BASICwifiscan相对目录,主要的原理就是想mico中注册 一个回调函数,当wifi核扫描完热点信息后,会通过回调函数来传递数据给用户层,注册函数原型如下:
9 U  d+ z8 D" g$ C* F+ W. R: N! x7 _

  1. + p; B& P- l; f
/**
  * @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 );
复制代码

2 Q2 o8 U+ E* q( V- c
2 Q& \/ w5 d* J1 X6 S
3 Q: Z5 y& Z  l0 T  z0 ?   回调函数定义如下:7 Q8 O8 Y  L$ @9 b. E+ j9 o' s

: P8 |: l: M0 p" E
  1. 3 }/ @8 r; R3 Y/ u
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);

8 H% |% k: ^) g# {
  •   }
    }
    复制代码
    5 p% J' G2 f; V2 X: o7 H( S3 y: g
    ! v3 W" x8 V! E  o8 L* c, F/ D3 z. m& L% y$ {$ Y* @

    3 |  Q) `1 P) s. p+ z   当注册了回调函数后,现在需要使能系统的扫描功能,函数原型如下:& i) A3 y! D6 B" w2 a5 @

    1 z# l; q; R' F. e9 r

    1. " |! R" l' X, Y8 Y( z
    /** @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);
    复制代码
    $ S  N* {1 @9 _) X; S, |7 n* a  S* \& V/ h, v) {8 h
    + G+ k8 a1 r/ `; r- B
       现在只需要等待,回调函数返回结果就好了,在这里我们直接在回调函数中打印输出结果。对于有些应用为了同步数据,所以需要设置信号量来等待回调函数返回结果,由于我们在这里并不需要同步,因为我们都是手动操作的嘛~~~结果如下:
    7 w4 E$ o2 H  u+ L/ A& V 0 \9 d! K5 S- I* R) ?/ u

    5 w2 z& }" G4 N+ i: J8 A0 U& x& r# _5 c3 U" o' t

    1个回复

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

    举报 使用道具

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

    本版积分规则


    关闭

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

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

    GMT+8, 2025-12-1 16:16 , Processed in 0.659675 second(s), Total 55, Slave 38 queries .

    Powered by 电子发烧友网

    © 2015 bbs.elecfans.com

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