0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术串口WiFi在WinCE工控主板上的编程方法

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 11:14 次阅读

ETA6103工作时,对软件来说,完全当作串口来操作,发送AT指令建立互联网连接。配置信息网络数据传输均通过一个串口传输。为方便用户编程,英创公司封装了一个CUartWifi类,提供了配置无线网络和建立TCP/UDP传输的公共函数,用户不用关心具体的AT指令即可进行开发。

使用说明

参考例程uart_wifi,工程中添加Serial.h , Serial.cpp, ETA6103.h, ETA6103.cpp共4个文件。

添加引用#include "ETA6103.h"

即可创建类并使用CUartWifi myWifi;

WiFi连接管理

参考例程APConnect,该例程简单展示如何进行AP连接的管理

调用Open,AutoCfg方法初始化模块

调用GetAPList方法查询附近的AP

调用ConnectAP方法连接AP

调用SetDefAP设置上电后默认连接的AP(不能在该AP无法连接时设置)

调用DisconnectAP方法断开AP连接

调用GetCurIP查询AP分配到的IP地址

UDP通信

参考例程Udp。

调用Open,AutoCfg方法初始化模块

CUartWifi m_ETA6103;

m_ETA6103.Open();

m_ETA6103.AutoCfg();

调用ConnectUdp打开UDP连接,并创建线程用来等待消息接收

ip = “192.168.201.248”;

rport = 6000;

lport = 5000;

bRet = m_ETA6103.ConnectUdp(0, ip, rport, lport);

m_hRecvThread = CreateThread(0, 0, RecvTread,this, 0, NULL);

向远端发送数据

charstr[32] = “test udp”;

len = strlen(str);

bRet = m_ETA6103.SendMsg(0, str, len);

接收线程处理

DWORD CUdpDlg::RecvTread(LPVOID lparam)

{

CUdpDlg *pDlg = (CUdpDlg*)lparam;

DWORD dwLen;

charrecvBuf[1024];

while(!pDlg->m_bThreadStop)

{

pDlg->m_ETA6103.WaitMsg(); //等待消息

if(dwRet == WAIT_OBJECT_0)

{

pDlg->m_ETA6103.ReadMsg(0, recvBuf, 1023, &dwLen);

//读数据

while(dwLen>0)

{

//处理代码

pDlg->m_ETA6103.ReadMsg(0, recvBuf, 1024, &dwLen);

//循环读直到读完buffer

}

}

}//while(!pDlg->m_bThreadStop)

return0;

};

TCP客户端通信

参考例程TcpClient。

调用Open,AutoCfg方法初始化模块

CUartWifi m_ETA6103;

m_ETA6103.Open();

m_ETA6103.AutoCfg();

调用ConnectUdp打开UDP连接,并创建线程用来等待消息接收

ip = “192.168.201.248”;

port = 6000;

bRet = m_ETA6103. ConnectTcpServer (0, ip, port);

m_hRecvThread = CreateThread(0, 0, RecvTread,this, 0, NULL);

向远端发送数据

charstr[32] = “test tcpclient”;

len = strlen(str);

bRet = m_ETA6103.SendMsg(0, str, len);

接收线程处理

DWORD CUdpDlg::RecvTread(LPVOID lparam)

{

CUdpDlg *pDlg = (CUdpDlg*)lparam;

DWORD dwLen;

charrecvBuf[1024];

while(!pDlg->m_bThreadStop)

{

pDlg->m_ETA6103.WaitMsg(); //等待消息

if(dwRet == WAIT_OBJECT_0)

{

pDlg->m_ETA6103.ReadMsg(0, recvBuf, 1023, &dwLen);

//读数据

while(dwLen>0)

{

//处理代码

pDlg->m_ETA6103.ReadMsg(0, recvBuf, 1024, &dwLen);

//循环读直到读完buffer

}

}

}//while(!pDlg->m_bThreadStop)

return0;

};

可以看到,TCP客户端的使用和UDP几乎一样,只是连接时调用的函数不一样

TCP服务端通信

参考例程TcpClient。

调用Open,AutoCfg方法初始化模块

CUartWifi m_ETA6103;

m_ETA6103.Open();

m_ETA6103.AutoCfg();

调用CreateTcpServer打开服务端连接,并创建线程用来侦听客户端连接和数据接收

port = 6000;

bRet = m_ETA6103. CreateTcpServer(port);

m_hRecvThread = CreateThread(0, 0, RecvTread,this, 0, NULL);

向对应的客户端发送数据

charstr[32] = “test tcpserver”;

intid = 1; //向链接号为1的客户端发送信息

len = strlen(str);

bRet = m_ETA6103.SendMsg(id, str, len);

接收线程处理

在例程中,将客户端连接和消息接收,封装到同一个事件中,然后通过标记位判断事件的类型,客户可以根据需要,修改封装代码,改为各自事件分别处理,或者修改为多个线程来处理连接事件,和消息接收事件。

DWORD CTcpServerDlg::RecvTread(LPVOID lparam)

{

CTcpServerDlg *pDlg = (CTcpServerDlg*)lparam;

DWORD dwLen;

charrecvBuf[1024];

DWORD dwRet;

intlen;

inti;

intn;

while(!pDlg->m_bThreadStop)

{

dwRet = pDlg->m_ETA6103.WaitMsg();

if(dwRet == WAIT_OBJECT_0)

{

for(i=0; i<5; i++)

{

if(pDlg->m_ETA6103.m_link[i].eventFlag & EVT_STAT) //状态变化

{

if(pDlg->m_ETA6103.m_link[i].stat == 0)//close

{

//用户断开代码处理

}

else//connected

{

//用户连接代码处理

}

}

if(pDlg->m_ETA6103.m_link[i].eventFlag & EVT_RECV) //数据接收

{

pDlg->m_ETA6103.ReadMsg(i, recvBuf, 1020, &dwLen);

while(dwLen>0)

{

//数据接收代码处理

pDlg->m_ETA6103.ReadMsg(0, recvBuf, 1024, &dwLen);

}

}

if(pDlg->m_ETA6103.m_link[i].eventFlag & EVT_ERR) //错误事件

{

//错误事件代码处理

}

pDlg->m_ETA6103.m_link[i].eventFlag = 0;

}

}

}//while(!pDlg->m_bThreadStop)

return0;

}

速度测试例程

例程TestSpeed用于测试文件接收速度。通过SetCurUart可以设置波特率(最大460800,建议默认115200),用户可以选定最适合自己应用的配置。

注意,在高速传输过程中,如果接收BUFFER收满来不及处理,将发生数据丢包。建议参考例程,在对应位置添加处理代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34604
收藏 人收藏

    评论

    相关推荐

    购买工控主板的三大误区

    最近有很多人问我什么样的工控主板算好的,有没有一个统一的标准。工控主板作为整机的核心组成部分,在性能稳定上有着至关重要的作用,那今天小编就来给大家讲解一下在购买
    的头像 发表于 04-16 16:40 84次阅读

    工控主板发生故障该怎么办?

    工控主板发生故障该怎么办?前几天有个客户问了我这个问题,大部分情况下出现的故障并不可怕,主要是用户粗心大意造成的。那今天小编就来讲解一下工控主板一般会出现故障的主要原因及判断
    的头像 发表于 04-11 18:19 519次阅读

    工控主板和普通主板的区别:功能定制化与通用性的差异

    工控主板作为工业控制系统和自动化设备的核心组成部分,其稳定性和耐用性备受关注。然而,有人好奇地问道:工控主板是否能够用于个人电脑系统中呢?为了解答这个问题,我们需要深入了解
    的头像 发表于 03-22 14:15 168次阅读

    科技创新赋能国产工控主板,助推工业数字化新篇章

    随着信息技术的飞速发展,工业数字化已经成为推动新型工业化的重要力量。工业数字化是将信息技术与传统制造业相融合,通过智能化、网络化和自动化等手段,实现了传统工业向智能制造的转型。这种转型不仅提高了生产
    的头像 发表于 02-26 16:40 204次阅读

    探秘工控主板中的BIOS:为什么它如此重要?

    固件,承载着初始化系统硬件和传递信息的重要任务。当工控主板加电时,BIOS会对硬件设备进行自检,通过读取硬件的配置信息来判断硬件是否正常工作,这一过程是
    的头像 发表于 01-23 11:28 254次阅读

    工控主板大揭秘:选对主板,让工业控制更高效

    在当今技术依赖的时代,工控电脑在工业和商业场景中越来越普遍。为了确保工控电脑的稳定性和可靠性,选择合适的主板至关重要。国产工控
    的头像 发表于 01-12 14:11 241次阅读

    请问如何查看wince系统的开发板串口号?

    请问如何查看wince系统的开发板串口号?
    发表于 10-31 06:21

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    什么是工控主板,国产工控主板的设计特性

    工控主板是专门用于工业电脑的主板,其设计特性独特且适应工业环境的需求。国产工控主板在元器件选择、抗干扰性和接口设计等方面具有独到之处。
    的头像 发表于 08-28 14:13 330次阅读

    工控主板和普通主板的区别

    工控主板(Industrial Control Board)和普通主板(Consumer Motherboard)是两种针对不同领域和应用的类型主板,它们在设计和功能上存在一些明显的区
    的头像 发表于 08-04 14:27 901次阅读

    什么是嵌入式工控主板,嵌入式工控主板的分类和应用有哪些?

    什么是嵌入式工控主板,嵌入式工控主板的分类和应用有哪些这样的问题,相信对于很多不懂行的人或者是初学者来说,相信一定会很懵逼,那么今天小编就为您一一解答:
    的头像 发表于 07-05 11:15 608次阅读

    触翔3588工控主板的优势

    触翔3588工控主板是一款基于Intel Baytrail平台设计的主频为2.4Ghz的工控主板,具有以下优势:
    的头像 发表于 06-29 15:28 511次阅读
    触翔3588<b class='flag-5'>工控</b><b class='flag-5'>主板</b>的优势

    2023年中海达星推官系列直播再度启航,与您一起探讨空间信息技术

    信息技术
    中海达
    发布于 :2023年06月21日 11:45:49

    国产工控主板全面解析:分类、应用及性价比分析

    不同,国产工控主板通常可以分为三种:工业主板、扩展卡主板和视频显示主板。 工业主板是最常见的类型
    的头像 发表于 06-12 15:04 913次阅读

    国产工控主板优势大揭秘

    在电子市场中,我们可以看到电阻、电容、晶体二极管等各种元器件,这些元器件经过组装成为主板,然后构成各种电子产品的不同功能。主板根据用途的不同,可以分为商用主板工控
    的头像 发表于 05-05 14:17 516次阅读