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

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

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

- ^- n5 J3 D( N( W
  1. 5 d: I5 a$ A" V1 u/ Z. S
/**
  * @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 );
复制代码
' a/ Z% {/ @$ ]) _) [

- I3 e6 ^  n+ p. ]+ X
. j4 p* ^  @; F8 ^   回调函数定义如下:) J4 G' n! j2 w9 w: y/ b+ n( [

4 {. y* X8 W& m  Y" f  A, |, R9 U
  1. 5 ^1 Y3 m) c" ^' s9 `
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);

1 H, d$ S. G) y
  •   }
    }
    复制代码' r- i0 q2 r" |; N5 I; _( _

    + y  }1 e# l" n% d. W1 m7 ]
    / O( O6 ]9 P: |0 A6 {$ d" V" N
    - z4 Q8 I9 s& j: z, P   当注册了回调函数后,现在需要使能系统的扫描功能,函数原型如下:% Y8 w+ V5 B' @) X0 }: B" U
    * q4 Y+ I. [( H) y7 k  r+ P
    1.   [  G1 G; @' d9 p/ M6 H; u
    /** @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);
    复制代码2 O9 O) E/ A( e! Z- u# k" |
    $ t2 V& a: \- l2 e. C9 D
    $ K! V( d3 G/ T9 D$ R6 g
       现在只需要等待,回调函数返回结果就好了,在这里我们直接在回调函数中打印输出结果。对于有些应用为了同步数据,所以需要设置信号量来等待回调函数返回结果,由于我们在这里并不需要同步,因为我们都是手动操作的嘛~~~结果如下:. T- Z; [  r0 a
    8 u9 y: q! a3 |5 a3 I& M# h2 |
    ( N2 F1 {% T2 e5 W4 o$ K2 @
    7 C+ g, p+ M9 M1 f! \

    1个回复

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

    举报 使用道具

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

    本版积分规则


    关闭

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

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

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

    Powered by 电子发烧友网

    © 2015 bbs.elecfans.com

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