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

WinCE工控主板多網(wǎng)口使用方法

 2022-7-22     作者:楊陽(yáng)         

簡(jiǎn)介


  英創(chuàng)公司ESMARC系列工控主板支持8位數(shù)據(jù)/地址復(fù)用的精簡(jiǎn)ISA總線,通過精簡(jiǎn)ISA總線可以擴(kuò)展更多網(wǎng)口,如ETA728和ETA528,本文將介紹如何使用經(jīng)過擴(kuò)展的多路網(wǎng)口。


WinCE工控主板的多網(wǎng)口多串口擴(kuò)展WinCE工控主板的多網(wǎng)口多串口擴(kuò)展
ETA528:8路串口+2路網(wǎng)口擴(kuò)展模塊ETA728:2路網(wǎng)口擴(kuò)展模塊


加載驅(qū)動(dòng)


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

  >ETA728Set 2 ; 使能ETA728 兩路網(wǎng)口擴(kuò)展模塊驅(qū)動(dòng)

  >ETA728Set 1 ; 使能ETA728 一路網(wǎng)口擴(kuò)展模塊驅(qū)動(dòng)

  >ETA728Set 0 ; 禁止ETA728驅(qū)動(dòng)程序加載

  重啟板子后生效。


新增網(wǎng)絡(luò)查看及配置


  以ESM335X為例, 連接模塊ETA728,并執(zhí)行命令ETA728Set 2加載模塊驅(qū)動(dòng)后。進(jìn)入控制面板->網(wǎng)絡(luò)連接,可以看到板子多出了兩個(gè)網(wǎng)絡(luò),DM9K3和DM9K4。可以查看及配置其網(wǎng)絡(luò)IP,網(wǎng)關(guān)等參數(shù)。


WINCE工控主板多網(wǎng)口擴(kuò)展使用方法.png


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


WINCE工控主板多網(wǎng)口擴(kuò)展使用方法.png


  注意:在系統(tǒng)中有多個(gè)網(wǎng)絡(luò)時(shí),一定要注意各個(gè)網(wǎng)絡(luò)不應(yīng)同時(shí)設(shè)置到一個(gè)網(wǎng)段內(nèi),會(huì)影響系統(tǒng)路由。


代碼控制


  查詢網(wǎng)絡(luò)


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


  板子所有網(wǎng)絡(luò)的信息就存儲(chǔ)在AdapterInfo結(jié)構(gòu)體數(shù)組中了,其中包括,網(wǎng)絡(luò)名,如:判斷是否為ETA728擴(kuò)展的第一個(gè)網(wǎng)絡(luò)


if (strcmp(AdapterInfo[0].AdapterName, “DM9K3”) == 0)
{
  //第一個(gè)網(wǎng)絡(luò)網(wǎng)口名為”DM9K3” 
}


  獲得第二個(gè)網(wǎng)絡(luò)的MAC

  BYTE *mac =  AdapterInfo[1].Address;


  獲得第三個(gè)網(wǎng)絡(luò)的IP

  BYTE *mac =  AdapterInfo[2].IpAddressList;


  修改IP

  

  參考光盤中提供的例程,以設(shè)置網(wǎng)絡(luò)名為”DM9K3”的網(wǎng)口參數(shù)為例,代碼如下。

#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調(diào)用


  參考光盤中網(wǎng)絡(luò)例程,當(dāng)系統(tǒng)只有一個(gè)網(wǎng)絡(luò)時(shí),可以設(shè)置socket的IP為0.0.0.0,即默認(rèn)的網(wǎng)口進(jìn)行通信。當(dāng)系統(tǒng)中有多個(gè)網(wǎng)絡(luò)時(shí),需要指定的網(wǎng)口進(jìn)行通信時(shí),綁定端口時(shí)就需要設(shè)置該網(wǎng)口的IP,參考例程第3步。


  比如希望使用ETA728的第一個(gè)網(wǎng)口進(jìn)行通信時(shí),則需要先獲得網(wǎng)口名為”DM9K3”的網(wǎng)絡(luò)IP,綁定時(shí)綁定該IP。


WSADATA wsa;
//1.初始化socket資源
if (WSAStartup(MAKEWORD(1,1),&wsa) != 0)
{
	return -1;//代表失敗
}

//2.創(chuàng)建套接字
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); //單網(wǎng)絡(luò)時(shí)
serverAddr.sin_addr.s_addr = htonl(m_dwIP); //綁定指定網(wǎng)口IP
if (bind(m_socketServer, (struct sockaddr *)&serverAddr, sizeof(serverAddr))<0)
{
	return -3 ;
}

//4.設(shè)置為偵聽套接字
if (listen(m_socketServer, 8)!=0)
{
	return -4;
}

//4.設(shè)置監(jiān)聽套接字通訊模式
//DWORD ul= 1;
//ioctlsocket(m_socketServer,FIONBIO,&ul);

//5.創(chuàng)建偵聽通訊線程,在線程里,等待客戶端連接請(qǐng)求
m_bListenThreadStop = FALSE;
m_hListenThread = CreateThread(NULL , 0, SocketListenThread, this, 0, NULL);
if (m_hListenThread == NULL)
{
	closesocket(m_socketServer);
	return -5; 
}


  通過綁定socket,可以實(shí)現(xiàn)應(yīng)用程序同時(shí)在多個(gè)網(wǎng)絡(luò)中進(jìn)行通信的目的。


  路由設(shè)置


  在一個(gè)系統(tǒng)中有多個(gè)網(wǎng)絡(luò)時(shí),系統(tǒng)通過路由表決定網(wǎng)絡(luò)數(shù)據(jù)經(jīng)哪個(gè)網(wǎng)絡(luò)的網(wǎng)口進(jìn)行通信。當(dāng)代碼無(wú)法連通網(wǎng)絡(luò)時(shí),可以檢查下是否是路由設(shè)置的問題。

  通過route print命令可以查看系統(tǒng)路由表。

  使用route help查看其它指令的使用說(shuō)明。

  可以增加路由,減少路由,修改路由優(yōu)先級(jí)等。


  英創(chuàng)提供了文章內(nèi)所述程序及源代碼,有需要的客戶可以聯(lián)系英創(chuàng)工程師獲得。

主站蜘蛛池模板: 国美女福利视频午夜精品| 成人特黄午夜性a一级毛片| 性黄色片| 1000部羞羞禁止免费观看视频 | 日本乱人伦片中文三区| 怡红院综合网| 91国内精品久久久久怡红院 | 美国一级毛片oo| 久久久鲁| 日韩视频不卡| 亚洲黄色图| 伊人婷婷色| 日韩一及片| 永久免费看毛片| 成年黄色片| 免费大学生国产在线观看p| 国产大战女模特在线视频| 国产精品国产三级国产| 黄色一级视频免费| 精品国产一区二区三区香蕉沈先生| 欧美日韩国产深夜福利视频| 亚洲不卡视频在线观看| 久久久99精品免费观看| 日韩高清特级特黄毛片| 亚洲tv精品一区二区三区| 亚洲精品免费在线| 成人性生活免费视频| 伊人久久成人| 色黄啪啪18周岁以下禁止观看| 免黄网站| 欧美a级片免费看| 欧美zoofilia杂交videos动漫| 欧美精品做人一级爱免费| 国产成人在线看| 国产成人久久精品一区二区三区| 国产精品久久久久久久久久98| 99久久综合狠狠综合久久男同| 国产成人高清在线观看播放| 国产高清美女一级毛片久久| 国产精品欧美一区二区三区不卡| 国产午夜不卡在线观看视频666 |