【推荐】嵌入式单片机SNMP程序/SNMP上位机网管软件/snmp评估库无论你用的是什么类型的单片机,不管C51,ARM7单片机,ColdFire,MC9S12NE64,还是其它单片机;不管是ucOS,Linux,vxworks还是没有操作系统;只要已经支持了以太网接口,保证1天之内就能移植SNMP。
同时提供SNMP网管程序/SNMP上位机软件.
有意者请联系 mcu_snmp#163.com (#替换为@) snmp评估库使用步骤:
第1步:告诉我你的处理器和你的编译工具(ADS、Keil还是别的)
第2步:编译一个二进制库snmp.lib或libsnmp.a二进制库给你。
第3步:你要做的事情,增加udp和snmp的通信接口,
(这一步可省略,因为以下是一个通用做法。如果你采用了专用的TCPIP协议栈,可以利用协议栈提供的通信接口。如果你采用了linux或vxworks,就不更不要这一步了,因为libsnmp.a采用了操作系统的socket接口)。
1)修改一点点代码,在你原来的udp的代码上,发现udp的目的端口是161(SNMP),就调用snmp_recv函数,这个函数在snmp.lib里实现了。
char snmp_recv(unsigned char sender_ip[4],unsigned short sender_port,
unsigned char *buff,unsigned short length) ;
参数解释:sender_ip,所收udp包的源IP,即snmp上位机的IP。
sender_port,所收udp包的源端口,即snmp上位机的端口。
buff,所收到的udp包数据内容起始地址指针,不包括ip头,udp头,是udp纯数据
length,所收到的udp包数据长度,不包括ip头,udp头,是udp纯数据
2)增加一个函数,在你原来udp代码上,增加snmp_output函数,因为snmp.lib处理完成后,需要调用该函数把snmp响应包发送出去。
char snmp_output(unsigned char dest_ip[4],unsigned short dest_port,
unsigned short src_port,unsigned char *buff,unsigned short length) ;
dest_ip,目的IP。
dest_port,目的端口。
src_port,源端口,(在这里都是传入161).
buff,要发送的udp包数据内容起始地址指针,不包括ip头,udp头,是udp纯数据
length,要发送的udp包数据长度,不包括ip头,udp头,是udp纯数据
3)把libsnmp.a加入到你的工程,编译,烧入设备。
如果你是linux系统,只需要写一个main.c,然后和libsnmp.a编译一个可执行文件snmpd并运行即可。附main.c参考代码:
extern int snmp_run();
int main(int argc,char **argv)
{
if(fork()==0) //如果是uClinux,改为vfork即可
{
snmp_run();
return 0;
}
return 0;
}
如果你是vxworks操作系统,实现一个snmp_init函数,并在初始化时候调用即可.
extern int snmp_run();
int snmp_init()
{
if(taskSpawn("tSNMP",51,0,20 * 1024,(FUNCPTR)snmp_run, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == ERROR)
return (ERROR);
return OK;
}
第4步:测试,安装MIB Browser,对设备进行SNMP测试。
因为snmp.lib里内置了一些公有MIB,可以对它们进行测试,私有MIB扩展需要真正合作后才能开始。
第5步:如果测试通过,讨论合作事项。
如果你需要snmp库或者不会用MIB Browser,请来信来信告诉我。
有意者请联系 mcu_snmp#163.com (#替换为@)
更多嵌入式SNMP开发请关注 