精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術WinCE重置網絡的方法

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-04 11:37 ? 次閱讀

在實際應用中,復雜的網絡狀況可能讓設備網絡產生異常(比如IP沖突),從而無法正常網絡通信。通過重啟設備可以恢復網絡,本文介紹另外一個方法,在應用層不斷電的情況下快速重置網絡,恢復網絡通信

手動重置網絡

進入板子控制面板->網絡和撥號連接,可以看到板子現有網口的網絡連接圖標,下圖以EM9287為例,EM9287有兩個網口,分別為ENET1和ENET2。

右鍵點擊需要重置的網口圖標,先選擇禁用,可以看到圖標顯示X,同時板子網絡燈停止閃爍。

再次右鍵點擊該圖標,選擇啟用,圖標恢復連接顯示,可以觀察到板子網絡燈重新亮起。

代碼重置網絡

引用pw.h頭文件,添加定義板子DEVICEIOCONTROL的相關宏定義。

#defineDD_NDIS_DEVICE_NAME TEXT("NDS0:")

#defineNDISPWR_DEVICE_NAME TEXT("NPW1:")

#define_NDIS_CONTROL_CODE(request,method) \

CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)

#defineWINCE_IOCTL_START 8

#defineIOCTL_NDIS_BIND_ADAPTER _NDIS_CONTROL_CODE( WINCE_IOCTL_START+4, METHOD_OUT_DIRECT )

#defineIOCTL_NDIS_UNBIND_ADAPTER _NDIS_CONTROL_CODE( WINCE_IOCTL_START+5, METHOD_OUT_DIRECT )

#defineIOCTL_NDIS_GET_ADAPTER_BINDINGS _NDIS_CONTROL_CODE( WINCE_IOCTL_START+8, METHOD_OUT_DIRECT )

#define FSCTL_NDISPWR_BASE FILE_DEVICE_NETWORK

#define_NDISPWR_CTL_CODE(_Function, _Method, _Access) \

CTL_CODE(FSCTL_NDISPWR_BASE, _Function, _Method, _Access)

#defineIOCTL_NPW_SAVE_POWER_STATE \

_NDISPWR_CTL_CODE(0x200, METHOD_BUFFERED, FILE_ANY_ACCESS)

首先調用電源管理設備NPW,通知它關閉網口電源(這里以ENET1為例)

hNdisPwr = CreateFile(NDISPWR_DEVICE_NAME, 0, 0, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, INVALID_HANDLE_VALUE);

SavePowerState.CePowerState = D4;

SavePowerState.pwcAdapterName = L”ENET1”;

bRet = DeviceIoControl(

hNdisPwr,

IOCTL_NPW_SAVE_POWER_STATE,

&SavePowerState,

sizeof(NDISPWR_SAVEPOWERSTATE),

NULL,

0x00,

NULL,

NULL);

CloseHandle(hNdisPwr);

如果網口有自己的電源管理,那么那么還應該調用以下代碼。還是以ENET1為例,這里的字符串一定得是{98C5250D-C29A-4985-AE5F-AFE5367E5006}\ENET1這樣的,并且需要兩個\0結尾!

TCHAR szName[MAX_PATH]=L”ENET1”;

int nChars;

nChars = _sntprintf(

szName,

MAX_PATH-1,

_T("%s\\%s"),

PMCLASS_NDIS_MINIPORT,

wcName);

szName[MAX_PATH-1]=0;

DWORD dwRet;

dwRet = SetDevicePower(szName, POWER_NAME, D4);

通知系統UNBIND網口

BOOL DoNdisIOControl(DWORD dwCommand, LPVOID pInBuffer,

DWORD cbInBuffer, LPVOID pOutBuffer,

DWORD * pcbOutBuffer)

{

HANDLE hNdis;

BOOL fResult = FALSE;

hNdis = ::CreateFile(DD_NDIS_DEVICE_NAME, GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,

0, NULL);

if(INVALID_HANDLE_VALUE != hNdis)

{

fResult = DeviceIoControl(hNdis, dwCommand, pInBuffer, cbInBuffer,

pOutBuffer, (pcbOutBuffer ? *pcbOutBuffer : 0),

pcbOutBuffer, NULL);

CloseHandle(hNdis);

}

returnfResult;

}

bRet = DoNdisIOControl(

IOCTL_NDIS_UNBIND_ADAPTER,

wcName,

(_tcslen(wcName)+2) *sizeof(TCHAR),

NULL,

NULL);

查詢網絡,確認一下禁用網絡是否成功

bRet = DoNdisIOControl(

IOCTL_NDIS_GET_ADAPTER_BINDINGS,

wcName,

(_tcslen(wcName)+1) *sizeof(TCHAR),

multiSz,

&cbBuffer);

return(multiSz[0] != L'\0');

讓板子網口重新上電,這里上電不能直接使用D0,只能使用默認值PwrDeviceUnspecified

hNdisPwr = CreateFile(NDISPWR_DEVICE_NAME, 0, 0, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, INVALID_HANDLE_VALUE);

SavePowerState.CePowerState = PwrDeviceUnspecified;

SavePowerState.pwcAdapterName = L”ENET1”;

bRet = DeviceIoControl(

hNdisPwr,

IOCTL_NPW_SAVE_POWER_STATE,

&SavePowerState,

sizeof(NDISPWR_SAVEPOWERSTATE),

NULL,

0x00,

NULL,

NULL);

CloseHandle(hNdisPwr);

TCHAR szName[MAX_PATH]=L”ENET1”;

int nChars;

nChars = _sntprintf(

szName,

MAX_PATH-1,

_T("%s\\%s"),

PMCLASS_NDIS_MINIPORT,

wcName);

szName[MAX_PATH-1]=0;

DWORD dwRet;

dwRet = SetDevicePower(szName, POWER_NAME, PwrDeviceUnspecified);

通知系統BIND網口

bRet = DoNdisIOControl(

IOCTL_NDIS_BIND_ADAPTER,

wcName,

(_tcslen(wcName)+2) *sizeof(TCHAR),

NULL,

NULL);

查詢網絡,確認一下網絡啟動是否成功

bRet = DoNdisIOControl(

IOCTL_NDIS_GET_ADAPTER_BINDINGS,

wcName,

(_tcslen(wcName)+1) *sizeof(TCHAR),

multiSz,

&cbBuffer);

return(multiSz[0] != L'\0');

例程里已經將以上代碼封裝到enet.h,使用以下代碼可以簡單重置網絡

#include"enet.h"

Void ResetENET()

{

EnableENET(FALSE);

EnableENET(TRUE);

}

在重置網絡前,建議先關閉該網口現有的socket連接

整個重置過程是通過電源管理將網口斷電,然后通知系統將網絡UNBIND。然后重新給網口上電,再通知系統將網絡BIND。通過網絡燈可以看到,硬件PHY是有復位的,即網絡在硬件層進行了復位。文中提到的例程,可以通過聯系英創工程師獲得。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6085

    瀏覽量

    35225
收藏 人收藏

    評論

    相關推薦

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?391次閱讀

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?337次閱讀

    加速鯤鵬落地!拓維信息遷移工具榮獲鯤鵬原生開發技術認證

    認證。圖/拓維·數據庫適配中間件取得鯤鵬原生開發N認證在數字化時代的大潮中,信戰略作為國家推動信息技術應用創新、保障信息安全與自主可控的關鍵舉措,其重要性日益凸顯
    的頭像 發表于 09-10 08:03 ?397次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創</b>遷移工具榮獲鯤鵬原生開發<b class='flag-5'>技術</b>認證

    梯度科技入選2023年信息技術應用創新解決方案名單

    日前,工業和信息化部網絡安全產業發展中心(工業和信息化部信息中心)在天津舉辦2024信息技術應用創新發展大會暨解決方案應用推廣大會。會上正式
    的頭像 發表于 09-09 16:29 ?394次閱讀

    中軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,中軟國際協辦的,2024年大連市信息技術應用創新產業發展大會
    的頭像 發表于 08-27 16:49 ?813次閱讀

    兆芯金融方案入選工信部2023年信息技術應用創新典型解決方案

    近日,由工信部網絡安全產業發展中心等主辦的2024信息技術應用創新發展大會暨解決方案應用推廣大會在天津、浙江、福建、山東四地聯動同步召開,會上公布了2023年信息技術應用創新解決方案征集遴選結果。兆
    的頭像 發表于 08-05 16:12 ?657次閱讀

    大華股份網絡攝像機獲得信息技術安全評估通用標準EAL 3+證書

    近日,大華股份網絡攝像機系列產品通過SGS Brightsight實驗室全方位評估和驗證,獲得信息技術安全評估通用標準(CC,Common Criteria)EAL 3+證書。 ? ? CC
    的頭像 發表于 07-05 17:26 ?1156次閱讀

    翼輝信息入選2023年信息技術應用創新解決方案名單

    近日,2023 年(第五屆)信息技術應用創新解決方案公布遴選名單,歷經資格初審、技術中評、區域評議、終評預審,翼輝以“面向工業領域嵌入式操作系統 SylixOS 解決方案”,成功在全國優秀方案中脫穎而出,入選典型解決方案名單。
    的頭像 發表于 04-28 11:37 ?528次閱讀
    翼輝<b class='flag-5'>信息</b>入選2023年<b class='flag-5'>信息技術</b>應用創新解決方案名單

    芯盾時代中標西安西熱電站信息技術有限公司!

    芯盾時代中標西安西熱電站信息技術有限公司!芯盾時代基于完整的身份安全產品體系,增強客戶的業務系統、網絡設備和安全設備等認證安全強度
    的頭像 發表于 04-09 11:32 ?474次閱讀

    龍芯中科三項信方案入圍工信部2023年信息技術應用創新應用示范案例名單

    近日,工業和信息化部通報了2023年信息技術應用創新解決方案征集遴選結果,本次共評選出典型解決方案173個、應用示范案例83個、單項創新案例64個。
    的頭像 發表于 03-07 16:45 ?871次閱讀
    龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術

    電子發燒友網站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術.pdf》資料免費下載
    發表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例程序固件<b class='flag-5'>信息技術</b>

    軟通動力與捷技術簽訂戰略合作協議

    近日,軟通動力信息技術(集團)股份有限公司(以下簡稱“軟通動力”)與寧波捷技術股份有限公司(以下簡稱“捷技術”)正式簽訂戰略合作協議,并
    的頭像 發表于 02-03 16:35 ?1086次閱讀

    MySQL密碼忘記了怎么辦?MySQL密碼快速重置方法步驟命令示例!

    MySQL密碼忘記了怎么辦?MySQL密碼快速重置方法步驟命令示例! MySQL是一種常用的關系型數據庫管理系統,如果你忘記了MySQL的密碼,不必擔心,可以通過一些簡單的步驟來快速重置密碼。下面
    的頭像 發表于 01-12 16:06 ?725次閱讀

    FTP連接被重置問題的解決方法與技巧!FTP服務器連接修復!

    FTP連接被重置問題的解決方法與技巧!FTP服務器連接修復! FTP(文件傳輸協議)是用于在計算機網絡環境中進行文件傳輸的常用協議。然而,有時我們可能會遇到FTP連接被重置的問題,這會
    的頭像 發表于 01-12 16:00 ?9987次閱讀

    mysql密碼忘了怎么重置

    mysql密碼忘了怎么重置? MySQL是一種開源的關系型數據庫管理系統,密碼用于保護數據庫的安全性和保密性。如果你忘記了MySQL的密碼,可以通過以下幾種方法進行重置方法一:使用
    的頭像 發表于 12-27 16:51 ?6432次閱讀