eta6210使用手册

Similar documents
Slide 1

一、

标题

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

C 1

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

untitled

引言 ftp 工作原理 FTP 客户端思考练习 要点回顾 1 ip 地址结构 2 字节顺序转换函数 3 IP 格式转换函数 2 / 29

路由器基本配置

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

Slide 1

Guava学习之Resources

ETA104 数据采集模块数据手册

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

自 學 進 修 學 力 鑑 定 考 試 職 業 證 照 與 專 科 學 校 類 科 對 照 表 修 正 規 定 序 號 考 試 單 位 考 試 及 格 證 書 名 稱 適 用 等 級 類 別 科 別 考 1 試 律 師 甲 級 商 業 財 經 法 律 院 2 計 師 甲 級 商 業 計 事 務 3

二零一五年施政報告 - 施政綱領 - 第六章 教育、人口及人力資源

untitled

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

新版 明解C++入門編

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

概述

提问袁小兵:

<4D F736F F D E4345C6BDCCA84323B1E0B3CCD2AAB5E3D6AED2BB2E646F63>

计算机网络实验说明

FY.DOC

计算机网络与经济(二).doc

教 务 信 息 教 学 日 常 运 行 工 作 4 月 6 日, 教 务 部 高 丽 琴 老 师 参 加 南 昌 市 教 育 局 2016 年 中 小 学 教 师 资 格 认 定 工 作 培 训 会 2016 年 教 师 资 格 认 定 工 作 是 从 省 考 向 国 考 过 渡 后 的 第 一 次

Microsoft PowerPoint ?????????3 [Compatibility Mode]

关于建立境内违法互联网站黑名单管理制度的通知

? 這 全 都 是 市 政 府 提 供 給 我 的 資 料 低 底 盤 公 車 計 畫 96 年 預 算 新 台 幣 4,500 萬 元 97 年 預 算 新 台 幣 1 億 6,500 萬 元 98 年 預 算 新 台 幣 3 億 2,300 萬 元, 共 有 307 台 低 底 盤 公 車,99

chap07.key

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

无类继承.key

PowerPoint 簡報

ex

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

《C语言程序设计》教材习题参考答案

手册 doc

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

概述

Microsoft Word - 01.DOC

Microsoft Word - ch04三校.doc

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

网工新答案

11N 无线宽带路由器

untitled

ebook

ebook39-5

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->


4 经 过 设 置 后,Zeppelin Air 无 法 连 接 到 我 的 网 络, 我 该 如 何 解 决 这 个 问 题? 下 载 并 安 装 最 新 的 固 件, 可 以 通 过 下 面 的 问 题 编 号 17 下 载 确 保 从 Apple App Store( 适 用 于 Mac ip

JavaIO.PDF

untitled

股份有限公司

全国计算机技术与软件专业技术资格(水平)考试

第3章.doc

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

网络程序设计(socketAPI)

chp6.ppt

F515_CS_Book.book

本科学生毕业论文

一、选择题

《信息通信网》实验指导书

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

本实验需要用到两个特征值, 两个特征值的属性各不相同, 我们同样在 SimpleGATTProfile 中新建即可, 接下来就开始吧 新建特征值表 : 表 3.3 串口透传特征值属性 长度 属性 UUID 功能 (byte) SIMPLEPROFILE_CHA R6 15 可读可写 FFF6 服务器

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

CC213

Transcription:

Emtronix ETA6210(WINCE)Wifi 扩展模块应用手册

感谢您购买英创信息技术有限公司的产品 :ETA6210(WINCE)Wifi 扩展模块 您可以访问英创公司网站或直接与英创公司联系以获得 ETA6210 的其他相关资料 英创信息技术有限公司联系方式如下 : 地址 : 成都市高新区高朋大道 5 号博士创业园 B 座 407# 邮编 :610041 联系电话 :028-86180660 传真 :028-85141028 网址 :http://www.emtronix.com 电子邮件 :support@emtronix.com

ETA6210 简介 ETA6210 是一款标准 minipcie 尺寸的 WiFi 通讯模块, 模块核心芯片为 NXP 的 imx6ul 和 AP6181 WiFi 芯片 英创公司 WINCE 工控主板是通过 minipcie 上的 USB 接口来操作 ETA6210 模块的 在实际应用中,ETA6210 是插在客户底板的 minipcie 插座上使用 开发评估阶段, 可插在英创的 ESMARC EVB 评估底板的 minipcie 插座上使用, 也可利用 ETA303 模块转换成标准 USB 接口使用 ETA6210 本身预装有完整的操作系统, 在上电后自动进行 WIFI 连接 并同时打开 3 路虚拟串口 COM10-12 与 WINCE 工控主板进行通信 : 一路 (COM10) 用 AT 指令进行参数设置, 模块控制等 一路 (COM11) 用于网络透传 一路 (COM12) 备用 ETA6210 网络模式与常规 WIFI 模块略有区别 ETA6210 直接连入 WIFI 网络, 同时作为路由器接受嵌入式主板的连接 ETA6210 将 WIFI 网络中的数据直接透传给嵌入式主板, 所以对于嵌入式主板而言, 与直接连入 WIFI 网络没有区别, 只是无法直接调用 API 函数获得 WIFI 网络中的 IP,MASK, 网关, 而是需要通过 AT 指令访问 ETA6210 获得 连接到 WIFI 网络后, 可以使用 SOCKET 编程访问网络 安装 ETA6210 可以通过 minipcie 直接连接到英创 ESMARC 底板上, 也可以通过 ETA303 模块转接到板子 USB 上 图 1 和图 2 显示它们的连接关系 图 ETA303 英创工控主板将在最新内核中支持 ETA6210, 用户可以接上主板后直接使用 使用 原内核的客户可以联系英创工程师获得 ETA6210 驱动安装程序

使用方法 英创公司提供完整代码的源程序供客户参考, 在开始阶段, 客户可以直接使用编译 好的界面程序进行测试 界面程序 APConnect 简介 将英创提供的 APConnect 程序放入工控主板运行, 可以见到如下界面 界面上部显示有连接的 WIFI 服务器名称及网络 IP 等信息 下部分是模块搜索到的 AP 列表, 客户可以选择 AP, 输入密码, 进行连接 英创提供 APConnect 程序源码, 客户可以根据自身需要进行修改 接口介绍 英创提供的例程 ETA6210Set 是对 ETA6210 模块进行配置的示例例程 例程将 ETA6210 模块接口封装到了 class ETA6210 类中,ETA6210 主要 PUBLIC 接口如下 : class ETA6210 public: ETA6210(void); ~ETA6210(void); BOOL CreateEntry();

; BOOL GetState(LinkStates *plinkstates); BOOL GetAPList(APInfo *papinfo, int maxnum, int *pnum); BOOL ConnectAP(char *ssid, char *password); BOOL DisconnectAP(); BOOL GetIPInfo(IPInfo *pipinfo); BOOL SetIPInfo(IPInfo *pipinfo); 客户将封装好的库添加进自己工程中, 即可很方便的操作 ETA6210 参考例程, 使用时在工程中添加 Serial.h, Serial.cpp, ETA6210.h, ETA6210.cpp 共 4 个文件 并定义 ETA6210 类 #include "ETA6210.h" ETA6210 eta6210; ETA6210 模块初始化 使用 ETA6210 首先需要创建拨号连接 拨号连接只需要创建一次, 重复创建不会产生变化, 不会返回失败 函数原型 BOOL CreateEntry(); 返回值调用成功返回 TRUE, 失败返回 FALSE 调用实例 bret = eta6210.createentry(); 查询 wifi 列表 查询 ETA6210 能够搜索到的附近 AP, 并将它们存入结构体数组中返回 函数原型 BOOL GetAPList(APInfo *papinfo, int maxnum, int *pnum); 参数 papinfo 指向 APInfo 结构体数组指针, 当调用成功,AP 信息将依次存

入结构体数组中 maxnum 传入的结构体数组大小 返回值 pnum 返回的 AP 数量, 不会超过 maxnum 调用成功返回 TRUE, 失败返回 FALSE 参数结构体定义 struct APInfo char ssid[50]; //ssid char mac[18]; //mac ca:d7:19:d8:a6:44 int channel; int rssi; //rssi 信号强度 int ecn; // 加密方式 :OPEN,WEP,WPA_PSK,WPA2_PSK, WPA_WPA2_PSK int freqoffset; // 频偏 int freqcalibration; // 频率校准 ; 调用实例 APInfo apinfo[15]; int n; bret = eta6210.getaplist(apinfo, 15, &n); 连接 WIFI 设置要连接的 WIFI 热点的 SSID, 及密码, 并拨号连接 函数原型 BOOL ConnectAP(char *ssid, char *password); 参数 ssid AP 名称, 如果为空, 则使用上次连接的 SSID password AP 密码, 如果为空, 则使用上次使用的密码 返回值

连接成功返回 TRUE, 失败返回 FALSE 调用实例 bret = eta6210.connectap("emtronix.20", "0987654321"); 或 bret = eta6210.connectap(null, NULL); // 使用上次的 SSID 及密码 断开连接 断开 WIFI 连接 函数原型 BOOL DisconnectAP(); 返回值成功断开返回 TRUE, 失败返回 FALSE 调用实例 bret = eta6210.disconnectap(); 查询模块状态 查询模块当前状态 包括模块是否处于连接状态, 连接的 AP 的 SSID 函数原型 BOOL GetState(LinkStates *plinkstates); 参数 plinkstates 指向 LinkStates 结构体, 记录模块网络是否连接成功, 及 连接的 SSID 名, 及信号强度 返回值 调用成功返回 TRUE, 失败返回 FALSE 参数结构体定义 struct LinkStates

BOOL blink; // 连接状态 char ssid[50]; //ssid int rssi; // 信号强度 调用实例 LinkStates linkstates; bret = eta6210.getstate(&linkstates); 查询网络参数 因为英创嵌入式主板只连接到 ETA6210 模块的内部网络中,ETA6210 再连接到 WIFI 网络并将数据透传给英创嵌入式主板 嵌入式主板通过 API 只能获得内部网络里的 IP, 必须通过以下接口函数获得在 WIFI 网络里的 IP,MASK, 网关参数 函数原型 BOOL GetIP(IPInfo *pipinfo); 参数 pipinfo 指向 IpInfo 结构体, 储存有连接到 WIFI 中时的网络 IP,mask 及网关 返回值 调用成功返回 TRUE, 失败返回 FALSE 参数结构体定义 struct IPInfo char ip[16]; char gw[16]; char mask[16]; ; 调用实例 IPInfo ipinfo; bret = eta6210.getip(&ipinfo);

设置网络参数 设置模块连入 WIFI 网络里的网络参数, 如, 在做 TCP 服务器时需要用到 函数原型 BOOL SetIP(IPInfo *pipinfo); 参数 pipinfo 指向 IpInfo 结构体, 将要设置的网络 IP,mask 及网关填入结构 体中, 如果为空字符串, 则该项不设置, 任使用原参数 返回值 调用成功返回 TRUE, 失败返回 FALSE 参数结构体定义 struct IPInfo char ip[16]; char gw[16]; char mask[16]; ; 调用实例 IPInfo ipinfo; bret = eta6210.getip(&ipinfo); sprintf(ipinfo.ip, "192.168.201.248"); sprintf(ipinfo.gw, "192.168.201.19"); sprintf(ipinfo.mask, "255.255.255.0"); bret = eta6210.setip(&ipinfo); SOCKET 编程示例 拨号成功后, 可以使用 SOCKET 进行网络通信 以英创开发光盘里的例程为例 TCP 客户端 C# 例程 参考英创开发光盘中 C# 例程 step4_tcptest 例程, 不用修改例程即可直接进

行调试 连接服务端 通过 WIFI 网络, 连接到服务器, 并建立接收线程 try rip = IPAddress.Parse(textBox_rip.Text); rport = Convert.ToInt32(textBox_rport.Text); 口 IPEndPoint rep = new IPEndPoint(rip, rport); 远程 IP, 端口初始一个 IPEndPoint 类 //IP // 端 // 用 ctcp = new TcpClient(); ctcp.connect(rep); revthread = new Thread(new ThreadStart(waitforMessage)); threadstop = false; revthread.start(); // 启动 waitformessage 线程 catch(exception ex) MessageBox.Show(" 连接失败 :"); statusbar1.text = (ex.message); return; 发送消息 byte[] OutBuffer; int length; OutBuffer = Encoding.Default.GetBytes(textBox_send.Text); length = OutBuffer.Length; ctcp.client.send(outbuffer, length, 0); 消息接收线程函数 void waitformessage() // 客户机状态下接收数据线程 int i; byte[] InBuffer = new byte[1024]; while (!threadstop)

i = ctcp.client.receive(inbuffer); if (i == 0) Invoke(new EventHandler(serverDisconnect)); // 注意使用 Invoke return; revstr = Encoding.Default.GetString(InBuffer, 0, InBuffer.Length); Invoke(new EventHandler(textBox_rev_Show)); 图 光盘 C# 例程 step4_tcptest 测试图 TCP 服务端 C 例程 参考英创开发光盘中 C 例程 test_tcp_server 例程 并对例程稍作修改

获得 WIFI 口 IP 获得 WIFI 网口的 IP, 并显示到 MFC 程序界面上 m_cedit_name2.setwindowtext(l"eta6210"); bret = GetNetWorkAdapterInfo( L"ETA6210", &AdptInfo ); m_ip2 = AdptInfo.IPAddr; wsprintf(wstr, L"%d.%d.%d.%d", m_ip2>>24, (m_ip2>>16)&0xff, (m_ip2>>8)&0xff, m_ip2&0xff); m_cedit_ip2.setwindowtext(wstr); m_cedit_port2.setwindowtext(l"5000"); 打开服务端 初始化网络, 创建 SOCKET 并绑定到 WIFI 网口, 建立接收线程 //1. 初始化 socket 资源 if (WSAStartup(MAKEWORD(1,1),&wsa)!= 0) return -1;// 代表失败 //2. 创建套接字 if ((m_socketserver = socket(af_inet, SOCK_STREAM, IPPROTO_TCP))<0) return -2; //3. 绑定端口 SOCKADDR_IN serveraddr; ZeroMemory((char *)&serveraddr,sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(m_dwport); serveraddr.sin_addr.s_addr = htonl(m_dwip); if (bind(m_socketserver, (struct sockaddr *)&serveraddr, sizeof(serveraddr))<0) return -3 ; //4. 设置为侦听套接字, 可同时响应个客户的连接请求 if (listen(m_socketserver, 8)!=0)

return -4; //4. 设置监听套接字通讯模式为异步模式 //DWORD ul= 1; //ioctlsocket(m_socketserver,fionbio,&ul); //5. 创建侦听通讯线程, 在线程里, 等待客户端连接请求 m_blistenthreadstop = FALSE; m_hlistenthread = CreateThread(NULL, 0, SocketListenThread, this, 0, NULL); if (m_hlistenthread == NULL) closesocket(m_socketserver); return -5; 发送消息 ilen = m_cedit_send1.getwindowtext(wstr, 1024); ilen = WideCharToMultiByte(CP_ACP, 0, wstr, ilen, str, 1024, NULL, NULL); m_tcpserver1.send(str, ilen); 消息接收线程函数 DWORD CTCPServer::SocketListenThread(PVOID lparam) CTCPServer *ptcpserver; // 得到 CTCPServer_CE 实例指针 ptcpserver = (CTCPServer*)lparam; while (!ptcpserver->m_blistenthreadstop) SOCKADDR_IN clientaddr; int addrlen = sizeof(clientaddr); // 等待客户端连接 ptcpserver->m_socketclient[0] = accept(ptcpserver->m_socketserver, (struct sockaddr *)&clientaddr, &addrlen); if (ptcpserver->m_socketclient[0] > 0) // 判定是否连接上了 ptcpserver->m_revlen = recv(ptcpserver->m_socketclient[0], ptcpserver->m_revbuf, sizeof(ptcpserver->m_revbuf), 0); while (ptcpserver->m_revlen > 0)

ptcpserver->onrev(lparam); ptcpserver->m_revlen = recv(ptcpserver->m_socketclient[0], ptcpserver->m_revbuf, sizeof(ptcpserver->m_revbuf), 0); return 0; 注 : 该例程设定的网口 2 由有线网口改为了 wifi, 所以网络名修改为了 ETA6210, 同时绑定的 IP 需要设置为 ETA6210 内部网络的 IP, 默认 192.168.1.2 但是本例测试时, 连入到 WIFI 网络中的 IP 通过接口函数 GetIP 查到是 192.168.201.112, 所以测试 PC 连接的 TCP 服务端 IP 为 192.168.201.112 而不是 192.168.1.2 图 光盘 C 例程 test_tcp_server 测试图

网络测试 WIFI 网络内的 PC 可以通过 IP PING 通使用 ETA6210 的嵌入式主板, 也可以通过 TELNET 连接到嵌入式主板中 测试 ETA6210 可以满足正常的 WIFI 应用 获得 英创提供了例程及源代码, 有需要的客户可以联系英创工程师