单片机SNMP程序/SNMP上位机、网管软件/嵌入式开发
百度空间 | 百度首页 
               
 
关于我
 

嵌入式TCPIP,单片机,vxWorks,Linux/CLI/WEB/SNMP Agent程序/SNMP网管软件/SNMP上位机程序

请联系:mcu.snmp@gmai.com

   
 
其它
 
已有人次访问本空间
 
订阅RSS  什么是RSS?

您也想拥有这样的空间?请点此申请。
     
 
宠物专区
 
   
 
 
文章列表
 
2008-11-16 20:35

无论你用的是什么类型的单片机或CPU,不管是C51、ARM单片机、MC9S12NE64、ColdFire,还是其它任何处理器;也不管是uCOS,Linux,vxworks还是无操作系统;只要已经支持了以太网接口,保证1天之内就能移植SNMP。同时也可以提供SNMP上位机/SNMP网管软件。 请联系 mcu.snmp@gmail.com
snmp评估库使用步骤:
第1步:告诉我你的处理器和你的编译工具(ADS、Keil,IAR,GCC等)
第2步:编译一个二进制库snmp.lib或libsnmp.a二进制库给你。
第3步:你要做的事情,增加udp和snmp的通信接口,
(如果你采用了专用的TCPIP协议栈,可以利用协议栈提供的通信接口。如果你采用了linux或vxworks,就不需要第3步,因为snmp.lib/libsnmp.a采用了操作系统的socket接口)。
3.1 修改一点点代码,在你原来的udp的代码上,发现udp的目的端口是161(SNMP),就调用snmp_recv函数,这个函数在snmp.lib/libsnmp.a里实现了。
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纯数据
3.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.3 把snmp.lib或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/libsnmp.a里内置了一些公有MIB,可以对它们进行测试,私有MIB扩展需要真正合作后才能开始。

第5步:如果测试通过,讨论合作事项。

如果你需要snmp库或者不会用MIB Browser,请来信告诉我。

 
     


©2009 Baidu