<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于W5500+STM32的SNMP協(xié)議應用

基于W5500+STM32的SNMP協(xié)議應用

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏

?int32 SnmpXDaemon(){

int32 snmpfd = 0;

int32 fromlen = 0;

int32 retStatus = 0;

int32 len = 0;

uint8 loopsnmpd = 1;

uint8 svr_addr[6];

uint16svr_port;

UNUSED(snmpfd);

UNUSED(fromlen);

UNUSED(retStatus);//

UDPOpen(SOCK_SNMP, 161);

socket(SOCK_SNMP,Sn_MR_UDP,161,0);

WDEBUG("Start SNMP Daemon(Agent) ");

while(loopsnmpd){

if ( (len = getSn_RX_RSR(SOCK_SNMP))>0 )

{

request_msg.len= recvfrom(SOCK_SNMP, (uint8 *)&request_msg.buffer[0], len, svr_addr, &svr_port);

}

else

{

request_msg.len = 0;continue;

}

if (request_msg.len > 0){

dumpCode("[Request]","",request_msg.buffer,request_msg.len);

request_msg.index = 0;

response_msg.index = 0;

errorStatus = errorIndex = 0;

if(parseSNMPMessage() != -1)

{

sendto(SOCK_SNMP, response_msg.buffer, response_msg.index, svr_addr, svr_port);

} dumpCode("[Response]","",response_msg.buffer,response_msg.index);}

}

close(SOCK_SNMP);

return(0);

}

在snmpdemo子函數下有兩個(gè)函數,第一個(gè)定義了一個(gè)大的數組,將MIB的不同對象都放在其中,這樣我們就可在具體的位置得到需要的信息。本次實(shí)驗中控制LED動(dòng)作的MIB對象分別定義為:{8, {0x2b, 6, 1, 4, 1, 0, 2, 0},SNMPDTYPE_INTEGER, 4, {""}, NULL, setWIZnetLed}其中8為OID長(cháng)度,0x2b是ASN.1中“1.3”的縮寫(xiě),即:1*40+3=0x2b。整個(gè)OID其實(shí)為1.3.6.1.4.1.0.2.0。setfuction函數為setWIZnetLed:void setWIZnetLed(int32 val)

{

wiznetLedStatus = val;

if ( wiznetLedStatus==0 )

GPIO_SetBits(GPIOA, LED3); // LED in the W5500-EVB

elseGPIO_ResetBits(GPIOA, LED3);

}

此為函數名,同樣也為函數的指針,在解析SET函數過(guò)程中有一句代碼:snmpData[id].setfunction(snmpData[id].u.intval);就是執行了該函數,其中snmpData[id].u.intval 為從set Request當中解析到的綁定變量值。下面為查詢(xún)LED狀態(tài)的MIB對象:{8, {0x2b, 6, 1, 4, 1, 0, 1, 0}, SNMPDTYPE_OCTET_STRING, 30, {""},getWIZnetLed, NULL}其中g(shù)etWIZnetLed定義為:

void getWIZnetLed(void *ptr, uint8 *len)

{

if ( wiznetLedStatus==0 )*len = sprintf((int8 *)ptr, "LED Off");

else*len = sprintf((int8 *)ptr, "LED On");

}

五、測試效果及注意問(wèn)題

?1. 測試效果 首先打開(kāi)網(wǎng)絡(luò )連接,點(diǎn)擊本地連接選擇屬性,設置PC為靜態(tài)IP(與W5500在同一網(wǎng)段),完成后點(diǎn)擊確定。用網(wǎng)線(xiàn)把PC和W5500EVB連接,打開(kāi)串口軟件,選擇正確的COM口并打開(kāi)串口,以獲取調試信息。點(diǎn)擊復位可以看到LED2在閃爍,之后進(jìn)入SNMP Agent模式,以下是正常進(jìn)入系統后串口的打印信息。??

然后打開(kāi)運行-->“CMD” , 輸入 “cd usrin”, 之后輸入 SNMP命令。

上圖輸入“snmpget -v 1 -c public 192.168.1.111 .1.3.6.1.4.1.0.2.0”回車(chē),通過(guò)Get命令得到此變量為1。輸入“snmpget -v 1 -c public 192.168.1.111 .1.3.6.1.4.1.0.1.0”回車(chē),如上圖所示,得到LED狀態(tài)為“LED ON”。輸入“snmpset -v 1 -c public 192.168.1.111 .1.3.6.1.4.1.0.2.0 i 0”回車(chē),如上圖所示,設置變量為0。輸入“snmpget -v 1 -c public 192.168.1.111 .1.3.6.1.4.1.0.2.0”回車(chē),如圖所示,得到該變量為0。輸入“snmpget -v 1 -c public 192.168.1.111 .1.3.6.1.4.1.0..0”回車(chē),如上圖所示,得到LED狀態(tài)為“LED OFF”。

通過(guò)以上5步可以清楚地發(fā)現,通過(guò)snmpset命令可以方便快速設置LED的狀態(tài);在不清楚LED狀態(tài)的情況下,也可以通過(guò)snmpget命令得到,從而實(shí)現快速有效的控制。我們通過(guò)串口助手可得下圖Request 和Response 包2.注意問(wèn)題

1.最基本的要注意保持程序和串口工具波特率一致,否則無(wú)法正常觀(guān)察操作信息,以免引起誤導2.切記如果是EVB和電腦通過(guò)網(wǎng)線(xiàn)直接,需修改電腦IP為靜態(tài)IP且和W5500EVB設置IP在同一個(gè)網(wǎng)段,否則不能實(shí)現測試效果,如果是通過(guò)路由器測試則不需修改3.如果大家需要在自己的調試板測試,需要將所有LED燈修改為和自己的調試版對應,以免產(chǎn)生錯誤4.輸入測試指令時(shí)要注意不同指令之間的空格以及點(diǎn),Public后面的IP地址正是你在程序中給調試板設置IP地址;后面的OID信息跟snmpdemo子函數下定義的數組中信息對應,對照看也可以幫助大家理解5.Net-SNMP軟件一定要安裝,安裝哪個(gè)盤(pán)不限制,但是安裝在C盤(pán)最好,更方便SNMP協(xié)議啟動(dòng)


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: W5500STM32SNMP協(xié)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>