开发需求
• 基于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”