WinCE平台高速WiFi实现方法--技术天地

技术天地

WinCE平台高速WiFi实现方法    发布时间:2018-4-19 18:10:00    被阅览数:

ETA6210简介


  ETA6210是一款标准mini PCIe尺寸的WiFi通讯模块,模块核心芯片为NXP的iMX6UL和AP6181 WiFi芯片。ETA6210主要是与英创公司WINCE工控主板配套使用,实现高速WiFi通讯,模块支持应用程序WinSock编程。英创工控主板是通过mini PCIe上的USB接口来操作ETA6210模块的。在实际应用中,ETA6210是插在客户底板的mini PCIe插座上使用。开发评估阶段,可插在英创的ESMARC EVB评估底板的mini PCIe插座上使用,也可利用ETA303模块转换成标准USB接口使用。


eta6210 wifi模块.png

ETA6210高速WiFi模块


  ETA6210本身预装有完整的操作系统,在上电后自动进行WiFi连接。并同时打开2路虚拟串口COM17、COM18与WINCE工控主板进行通信:COM17用AT指令进行参数设置,模块控制等;COM18用于网络数据传输。


  ETA6210网络模式与常规WiFi模块略有区别。ETA6210直接连入WiFi网络,同时作为路由器接受嵌入式主板的连接。ETA6210将WiFi网络中的数据直接传给嵌入式主板,所以对于嵌入式主板而言,与直接连入WiFi网络没有区别,只是无法直接调用API函数获得WiFi网络中的IP、掩码、网关,而是需要通过AT指令访问ETA6210获得。


  连接到WiFi网络后,可以使用SOCKET编程访问网络。


安装


  对英创ESMARC主板,ETA6210可直接插入到英创ESMARC 评估底板上的mini PCIe插座,就可进行操作。连接形式如下图所示:


WinCE平台高速WiFi实现方法.png

ESMARC底板 + ESM6802 + ETA6210


  对其他主板,则可以通过ETA303模块转接标准USB接口上使用。


eta303正面.png

ETA6210 + ETA303


  英创工控主板将在最新内核中支持ETA6210,用户可以接上主板后直接使用。使用原内核的客户可以联系英创工程师获得ETA6210驱动安装程序。


ETA6210的AT指令简介


  ETA6210具有自动管理WiFi连接功能的模块,其内部USB接口可响应WINCE 主控板的访问。在英创的产品中,将USB连接的接口映射为两个串口,一个用于发送AT指令,一个用于支持PPP拨号连接。


  ETA6210支持的AT指令格式必须以AT大写作为开头,并加上’\r’作为结束符,如:“AT\r”,以下为各个AT指令的响应及相应的参数说明。


指令描述
AT测试AT启动
AT+LINK?查询WiFi连接状态,响应为 +LINK:UP/OFF
AT+IP?查询WiFi的IP地址,响应为 +IP: string
AT+IP=...设置WiFi的IP地址,参数为IP地址
AT+GW?查询WiFi的网关地址,响应为 +GW: string
AT+GW=...设置WiFi的网关地址,参数为地址
AT+NETMASK?查询WiFi的子网掩码,响应为 +NETMASK: string
AT+NETMASK=设置WiFi的子网掩码,参数为地址
AT+SSID?查询WiFi的SSID,响应为 +SSID:string
AT+SSID=….设置WiFi的SSID,参数为SSID string
AT+PSK=….设置WiFi的密码,参数为密码 string
AT+CSQ?查询WiFi的信号强度,响应为 +CSQ:Number
AT+CNT启动WiFi的连接
AT+DNT断开WiFi的连接
AT+RST重启ETA6210模块


使用方法


  为了方便客户的使用,英创的WINCE工控板卡在系统内部放置了两个工具程序: RASEntry.exe和wt.exe,其中RAREntry.exe用于自动创建基于ETA6210的拨号连接,wt.exe用于对于ETA6210模块进行WiFi的参数配置和基本的测试。这个两个程序的运行可以通过telnet登录连接到英创的WINCE工控板,可以在命令提示行下运行。


  以下介绍在ETA6210在英创的WINCE工控板上的使用方法,这里以ESM6802作为WINCE主控板。


网络连接


  1、运行RASEntry.exe建立拨号连接,该程序目前设置的缺省状态是建立ETA6210的连接。


WinCE平台高速WiFi实现方法.png


  此时在ESM6802的界面上可以看到建立成功的ETA6210连接。


WinCE平台高速WiFi实现方法.png


  RASEntry.exe一般只需要运行一次。


  2、运行wt.exe配置ETA6210 WiFi参数。

  wt.exe共支持9个命令,可以直接运行wt获取这个9个命令的相关帮助和说明。


WinCE平台高速WiFi实现方法.png


  配置WiFi参数可以通过 “wt -c”来实现,可通过一个文本文件来配置ETA6210 WiFi的SSID和密码,这个文本文件的格式如下:

  [WIFI]

  SSID="Emtronix.20"

  PSK="0987654321"


  这部分内容可以独立保存为一个txt文件,也可以增加到英创板卡使用的userinfo.txt文件中,这里是将以上内容保存为一个eta6210.txt的文件,并放置到ESM6802的\EDISK目录下。


  运行 \>wt -c \EDISK\eta6210.txt


WinCE平台高速WiFi实现方法.png


  将WiFi的SSID和相应的密码设置成功。对于在一个确定的WiFi环境下,该命令只需执行一次即可。


  WiFi参数配置成功后,可调用 “wt -l” 来检查WiFi的连接状态,如果处于link up的状态,即可进行后一步的拨号连接了。


WinCE平台高速WiFi实现方法.png


  运行 “wt -i” 、“wt -g” 可以获得WiFi模块的IP地址以及网关地址。


  3、拨号连接。

  拨号的方式有两种,一种为手动模式,可以用于测试;一种是通过程序来实现。

  手动方式可在ESM6802的显示界面上双击ETA6210连接,即可实现WiFi模块的自动连接。


WinCE平台高速WiFi实现方法.png


  程序实现的方式根据所建立的连接名称(ETA6210),直接调用标准的拨号函数RasDial(…)即可,在wt工具程序中,我们提供了拨号功能以及相应的挂断功能。


  拨号连接:“wt -d”, 拨号之前建议先检查WiFi的连接状态,WiFi处于UP状态才进行拨号操作。


WinCE平台高速WiFi实现方法.png


  挂断拨号:执行“wt -h”即可挂断当前连接。


WinCE平台高速WiFi实现方法.png


  以下为拨号连接和挂断连接的部分代码:


HRASCONN Dial( )

{

    DWORD                     dwRet = 0;

    RASDIALPARAMS     RasDialParams;

    DWORD                     dwSize;

    HRASCONN        hRasConn=0;

 

    dwSize = sizeof(RASDIALPARAMS);

    ZeroMemory(&RasDialParams, dwSize);

    memset ((char *)&RasDialParams, 0, sizeof(RasDialParams));

    RasDialParams.dwSize = sizeof(RasDialParams);

 

    wcscpy(RasDialParams.szEntryName, L"ETA6210");

    wcscpy(RasDialParams.szPhoneNumber, L"");

    wcscpy(RasDialParams.szUserName, L""); 

    wcscpy(RasDialParams.szPassword,L"");

 

    dwRet = RasDial( NULL, NULL, &RasDialParams, NULL, NULL, &hRasConn);

    if( dwRet == 0 )

       {

              wprintf( L"%s RasDial successful, hRasConn = 0x%08X\r\n", RasDialParams.szEntryName, hRasConn);

              SavehRasConn( hRasConn );

              return hRasConn;

       }

    else if( hRasConn )

              RasHangUp(hRasConn);

       return NULL;

}

 

BOOL HangUpDial( )

{

         HRASCONN  hRasConn=0;

      

         hRasConn = ReadhRasConn( );

         if( hRasConn )

         {

                wprintf( L"%s RasHangUp, hRasConn = 0x%08X\r\n", L"ETA6210", hRasConn);

                if(hRasConn)

RasHangUp(hRasConn);

                DeleteFile(  _T("\\hRasconn.bin") );

                return TRUE;

          }

          else

          {

           wprintf( L"No Ras connection\r\n");

                 return FALSE;

          }

}


网络测试


  ETA6210连接成功后,可以运行ipconfig来查看网络参数:


WinCE平台高速WiFi实现方法.png


  这里我们看到ETA6210 WiFi的IP地址为“192.168.1.2”,这个地址ETA6210 WiFi模块内部网络的一个固定IP,并不是真正代表了通过WiFi接入网络的IP地址,对外真正的IP是通过AT指令来获取的。在本文上面介绍中ETA6210 WiFi 连接成功后,获取到的IP地址为:192.168.201.102,网关地址为:192.168.201.20。


WinCE平台高速WiFi实现方法.png


  从上图中可以看到在ENET1、ENET2均断开的情况下,可以通过ping 网关地址来测试该网络的通讯。同时也可以反过来通过telnet登录“192.168.201.102”,显示是连入到ESM6802上的。


WinCE平台高速WiFi实现方法.png


  英创可提供了RASEntry和wt这个两个程序源代码,客户可以参考其中相关部分放入到自己的应用程序中,有需要的客户可以联系英创工程师获得。

Go Top