亚洲 欧美 变态 另类 综合,无码一区二区三区不卡AV,国产原创精品国产专区

  • <var id="pp44i"><optgroup id="pp44i"></optgroup></var><form id="pp44i"></form>
    <wbr id="pp44i"><source id="pp44i"><option id="pp44i"></option></source></wbr>

  • <dd id="pp44i"></dd>
  • <dd id="pp44i"></dd>

    WinCE工控主板多網口使用方法

     2022-7-22 18:39:55     作者:楊陽    

    簡介


      英創公司ESMARC系列工控主板支持8位數據/地址復用的精簡ISA總線,通過精簡ISA總線可以擴展更多網口,如ETA728和ETA528,本文將介紹如何使用經過擴展的多路網口。


    WinCE工控主板的多網口多串口擴展WinCE工控主板的多網口多串口擴展
    ETA528:8路串口+2路網口擴展模塊ETA728:2路網口擴展模塊


    加載驅動


      ESMARC WinCE系統中已經集成了擴展模塊的驅動程序,在使用擴展模塊之前需要通過系統自帶的命令使能相應的驅動程序。具體操作方法是通過telnet命令登陸WinCE主板(或打開WinCE系統的命令提示行)后執行相應的命令,例如:

      >ETA728Set 2 ; 使能ETA728 兩路網口擴展模塊驅動

      >ETA728Set 1 ; 使能ETA728 一路網口擴展模塊驅動

      >ETA728Set 0 ; 禁止ETA728驅動程序加載

      重啟板子后生效。


    新增網絡查看及配置


      以ESM335X為例, 連接模塊ETA728,并執行命令ETA728Set 2加載模塊驅動后。進入控制面板->網絡連接,可以看到板子多出了兩個網絡,DM9K3和DM9K4??梢圆榭醇芭渲闷渚W絡IP,網關等參數。


    WINCE工控主板多網口擴展使用方法.png


      通過telnet或打開WINCE系統命令提示行,使用ipconfig也可以查看新增網絡的參數(未插網線時IP為0.0.0.0)。


    WINCE工控主板多網口擴展使用方法.png


      注意:在系統中有多個網絡時,一定要注意各個網絡不應同時設置到一個網段內,會影響系統路由。


    代碼控制


      查詢網絡


    #include <iphlpapi.h>
    IP_ADAPTER_INFO AdapterInfo[8];
    ULONG OutBufLen = sizeof(IP_ADAPTER_INFO);
    GetAdaptersInfo(AdapterInfo, &OutBufLen); 
    GetAdaptersInfo(AdapterInfo, &OutBufLen);   //調兩次,可以百度下這個API


      板子所有網絡的信息就存儲在AdapterInfo結構體數組中了,其中包括,網絡名,如:判斷是否為ETA728擴展的第一個網絡


    if (strcmp(AdapterInfo[0].AdapterName, “DM9K3”) == 0)
    {
      //第一個網絡網口名為”DM9K3” 
    }


      獲得第二個網絡的MAC

      BYTE *mac =  AdapterInfo[1].Address;


      獲得第三個網絡的IP

      BYTE *mac =  AdapterInfo[2].IpAddressList;


      修改IP

      

      參考光盤中提供的例程,以設置網絡名為”DM9K3”的網口參數為例,代碼如下。

    #include "netip_api.h"
    #include <iphlpapi.h>
     
    NETWORK_ADPTS_NAME   AdaptersName;
    NETWORK_ADPT_INFO AdptInfo;
    DWORD             NewIPAddr;
    DWORD             NewMask;
    DWORD             NewGateWay;
    DWORD             dwType;
    int               i1;
     
       
    StringToIPAddr(L"192.168.1.248", &NewIPAddr );
     
    StringToIPAddr(L"255.255.255.0", &NewMask);
    StringToIPAddr(L"192.168.1.1", &NewGateWay);
     
    bRes = GetNetWorkAdaptersName( &AdaptersName );
     
    memset ((char *)&AdptInfo, 0, sizeof(AdptInfo));
    for(int i1=0; i1<AdaptersName.NumOfAdapters; i1++ )
    {
        if (wcscmp(AdaptersName.szAdapterName[i1],L"DM9K3") == 0)
        {
            bRes = GetNetWorkAdapterInfo( AdaptersName.szAdapterName[i1], &AdptInfo );
            AdptInfo.IPAddr = NewIPAddr;
            AdptInfo.SubnetMask = NewMask;
            AdptInfo.Gateway = NewGateWay;
            SetNetWorkAdapterInfo( AdaptersName.szAdapterName[i1], &AdptInfo );
            break;
        }
    }

      

      Socket調用


      參考光盤中網絡例程,當系統只有一個網絡時,可以設置socket的IP為0.0.0.0,即默認的網口進行通信。當系統中有多個網絡時,需要指定的網口進行通信時,綁定端口時就需要設置該網口的IP,參考例程第3步。


      比如希望使用ETA728的第一個網口進行通信時,則需要先獲得網口名為”DM9K3”的網絡IP,綁定時綁定該IP。


    WSADATA wsa;
    //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(INADDR_ANY); //單網絡時
    serverAddr.sin_addr.s_addr = htonl(m_dwIP); //綁定指定網口IP
    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; 
    }


      通過綁定socket,可以實現應用程序同時在多個網絡中進行通信的目的。


      路由設置


      在一個系統中有多個網絡時,系統通過路由表決定網絡數據經哪個網絡的網口進行通信。當代碼無法連通網絡時,可以檢查下是否是路由設置的問題。

      通過route print命令可以查看系統路由表。

      使用route help查看其它指令的使用說明。

      可以增加路由,減少路由,修改路由優先級等。


      英創提供了文章內所述程序及源代碼,有需要的客戶可以聯系英創工程師獲得。

    亚洲 欧美 变态 另类 综合,无码一区二区三区不卡AV,国产原创精品国产专区