激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

串口WiFi在WinCE工控主板上的編程方法

 2017-4-5     作者:楊陽(yáng)         
文章標(biāo)簽:C/C++WiFi

  ETA6103工作時(shí),對(duì)軟件來(lái)說(shuō),完全當(dāng)作串口來(lái)操作,發(fā)送AT指令建立互聯(lián)網(wǎng)連接。配置信息、網(wǎng)絡(luò)數(shù)據(jù)傳輸均通過(guò)一個(gè)串口傳輸。為方便用戶編程,英創(chuàng)公司封裝了一個(gè)CUartWifi類(lèi),提供了配置無(wú)線網(wǎng)絡(luò)和建立TCP/UDP傳輸?shù)墓埠瘮?shù),用戶不用關(guān)心具體的AT指令即可進(jìn)行開(kāi)發(fā)。


使用說(shuō)明


  參考例程uart_wifi,工程中添加Serial.h , Serial.cpp, ETA6103.h, ETA6103.cpp共4個(gè)文件。


  添加引用#include "ETA6103.h"

  即可創(chuàng)建類(lèi)并使用CUartWifi myWifi;


WiFi連接管理


  參考例程APConnect,該例程簡(jiǎn)單展示如何進(jìn)行AP連接的管理


  調(diào)用Open,AutoCfg方法初始化模塊

  調(diào)用GetAPList方法查詢附近的AP

  調(diào)用ConnectAP方法連接AP

  調(diào)用SetDefAP設(shè)置上電后默認(rèn)連接的AP(不能在該AP無(wú)法連接時(shí)設(shè)置)

  調(diào)用DisconnectAP方法斷開(kāi)AP連接

  調(diào)用GetCurIP查詢AP分配到的IP地址


UDP通信


  參考例程Udp。


  調(diào)用Open,AutoCfg方法初始化模塊

  CUartWifi  m_ETA6103;

  m_ETA6103.Open();

  m_ETA6103.AutoCfg();


  調(diào)用ConnectUdp打開(kāi)UDP連接,并創(chuàng)建線程用來(lái)等待消息接收

  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);


  向遠(yuǎn)端發(fā)送數(shù)據(jù)

  char str[32] = “test udp”;

  len = strlen(str);

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


  接收線程處理

  DWORD CUdpDlg::RecvTread(LPVOID lparam)

  {

        CUdpDlg *pDlg = (CUdpDlg*)lparam;

        DWORD dwLen;

        char recvBuf[1024];

        while(!pDlg->m_bThreadStop)

        {      

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

            if (dwRet == WAIT_OBJECT_0)

            {

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

  //讀數(shù)據(jù)

                while(dwLen>0)

                {

                    //處理代碼

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

                    //循環(huán)讀直到讀完buffer

                }  

            }

        }//while(!pDlg->m_bThreadStop)

        return 0;

  };


TCP客戶端通信


  參考例程TcpClient。


  調(diào)用Open,AutoCfg方法初始化模塊

  CUartWifi  m_ETA6103;

  m_ETA6103.Open();

  m_ETA6103.AutoCfg();


  調(diào)用ConnectUdp打開(kāi)UDP連接,并創(chuàng)建線程用來(lái)等待消息接收

  ip = “192.168.201.248”;

  port = 6000;

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

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


  向遠(yuǎn)端發(fā)送數(shù)據(jù)

  char str[32] = “test tcpclient”;

  len = strlen(str);

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


  接收線程處理

  DWORD CUdpDlg::RecvTread(LPVOID lparam)

  {

        CUdpDlg *pDlg = (CUdpDlg*)lparam;

        DWORD dwLen;

        char recvBuf[1024];

        while(!pDlg->m_bThreadStop)

        {      

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

            if (dwRet == WAIT_OBJECT_0)

            {

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

  //讀數(shù)據(jù)

                while(dwLen>0)

                {

                    //處理代碼

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

                    //循環(huán)讀直到讀完buffer

                }  

            }

        }//while(!pDlg->m_bThreadStop)

        return 0;

  };


  可以看到,TCP客戶端的使用和UDP幾乎一樣,只是連接時(shí)調(diào)用的函數(shù)不一樣


TCP服務(wù)端通信


  參考例程TcpClient。


  調(diào)用Open,AutoCfg方法初始化模塊

  CUartWifi  m_ETA6103;

  m_ETA6103.Open();

  m_ETA6103.AutoCfg();


  調(diào)用CreateTcpServer打開(kāi)服務(wù)端連接,并創(chuàng)建線程用來(lái)偵聽(tīng)客戶端連接和數(shù)據(jù)接收

  port = 6000;

  bRet = m_ETA6103. CreateTcpServer(port);

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


  向?qū)?yīng)的客戶端發(fā)送數(shù)據(jù)

  char str[32] = “test tcpserver”;

  int id = 1;     //向鏈接號(hào)為1的客戶端發(fā)送信息

  len = strlen(str);

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


  接收線程處理


  在例程中,將客戶端連接和消息接收,封裝到同一個(gè)事件中,然后通過(guò)標(biāo)記位判斷事件的類(lèi)型,客戶可以根據(jù)需要,修改封裝代碼,改為各自事件分別處理,或者修改為多個(gè)線程來(lái)處理連接事件,和消息接收事件。


  DWORD CTcpServerDlg::RecvTread(LPVOID lparam)

  {

      CTcpServerDlg *pDlg = (CTcpServerDlg*)lparam;

      DWORD dwLen;

      char recvBuf[1024];

      DWORD dwRet;

      int len;

      int i;

      int n;

      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)  //狀態(tài)變化

                  {

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

                      {

                          //用戶斷開(kāi)代碼處理

                      }

                      else//connected

                      {

                          //用戶連接代碼處理

                      }

                  }

                  if(pDlg->m_ETA6103.m_link[i].eventFlag & EVT_RECV)  //數(shù)據(jù)接收

                  {

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

                      while(dwLen>0)

                      {

                          //數(shù)據(jù)接收代碼處理

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

                      }

                  }

                  if(pDlg->m_ETA6103.m_link[i].eventFlag & EVT_ERR)   //錯(cuò)誤事件

                  {

                      //錯(cuò)誤事件代碼處理

                  }

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

              }      

          }

      }//while(!pDlg->m_bThreadStop)

      return 0;

  }


速度測(cè)試?yán)?/strong>


  例程TestSpeed用于測(cè)試文件接收速度。通過(guò)SetCurUart可以設(shè)置波特率(最大460800,建議默認(rèn)115200),用戶可以選定最適合自己應(yīng)用的配置。


  注意,在高速傳輸過(guò)程中,如果接收BUFFER收滿來(lái)不及處理,將發(fā)生數(shù)據(jù)丟包。建議參考例程,在對(duì)應(yīng)位置添加處理代碼。

文章標(biāo)簽:C/C++WiFi
主站蜘蛛池模板: 1024cao社区榴地址一地址二| 天天狠狠色综合图片区| 日韩在线看片| 成年人黄色网址| 国产综合成人观看在线| 午夜影院小视频| 888午夜不卡理论久久| 久久国产精品视频一区 | 国产一区二区三区不卡在线观看| 黑人一区二区| 国产福利视频一区二区微拍视频| 嫩草网站永久入口| www噜噜偷拍在线视频| 日本黄色二级片| 亚洲欧美日韩久久一区| 求免费黄色网址| 欧美激情视频一区二区免费| 国产高清精品毛片基地| 国产精品入口麻豆免费看| 妞干网这里只有精品| 午夜性片| 亚洲一区二区三区精品国产| www.黄色网址.com| 久久久久久99精品| 日本高清色视频在线观看免费| 亚洲欧美在线中文字幕不卡| 成人国产在线观看| 极品色综合| 免费中文字幕视频| 青草国产在线观看| 欧美三级在线免费观看| 国产精品久久久久久久久久久久久久| 最新国产精品| 精品久久视频| 国产精品性视频免费播放| 久久久国产高清| 婷婷综合影院| 婷婷丁香六月| 天天色综合三| 日韩视频不卡| 欧美亚洲国产色综合|