開發需求
• 基於WinCE實現SNMP服務
經驗教訓
net-snmp是Linux平臺下著名的C語言SNMP開發包,公開源碼,是最常用的開發Agent的軟件包,曾花費一個月的時間實現了其應用功能,很遺憾最終發現:net-snmp幾乎可以應用到非WinCE的所有平臺(Linux和WindowS),唯獨無法在WinCE上應用,故最終放棄net-snmp。
總結:非WinCE平臺,可首選net-snmp。
特殊聲明
• 開發板:WinCE5.0
• 編譯器:Evc++ 4.0
• 資源鏈接:http://download.csdn.net/detail/jsfzdd/3420367
• 資源說明:AgentExt是實現開發板上SNMP服務的源代碼(需要進行完善,最終生成AgentExt.dll)。MySNMP(相當於mini版的MG-Soft)是上位機軟件功能,實現與下位機通訊。
問題及解決辦法
實現SNMP擴展代理期間發現的問題以及解決辦法(僅供參考)。
1、Evc++ 4.0切換SDK(從Standsdk切換到YC2440 SDK)時會死掉。
解決辦法:安裝Sp4補丁。
2、Activesync的USB驅動有問題,導致Activesync的穩定性非常差,時斷時連。
解決辦法:一個朋友從他們公司發送過來一個新的Activesync USB驅動,問題解決。
3、SNMP擴展DLL的移植過程:
(1)Wince鏡像中一定要支持snmp服務(可通過Platform Builder進行配置)。
(2)將SNMP擴展代理動態庫AgentExt.dll一併加入Wince鏡像中的Windows。
(3)修改wince註冊表
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents]
"3"="SOFTWARE\AgentExt\CurrentVersion"
[HKEY_LOCAL_MACHINE\SOFTWARE\ AgentExt\CurrentVersion]
"Pathname"="AgentExt.dll"
注意:以下是引自MSDN上的重要的一句話“Windows CE does not support the expansion of SystemRoot – the only thing needed in the registry value is the name of the DLL – this differs from NT”,表達的意思是:擴展代理DLL庫必須放到系統根目錄(windows)下。
4、Wince代理動態庫AgentExt.dll一定要使用EVC進行編譯生成。
5、Wince代理動態庫AgentExt.dll無法發出trap信息。
解決辦法:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\TrapConfiguration\Public]
“serverip”=”192.168.0.255”