9838|7

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

lwip下SNMP的移植实现,表的获取问题 [复制链接]

经过2周努力,已经初步实现相应的功能。标量的获取和设置都已经没有问题,上次咨询的表的查询部分问题也已经得到解决,但是只能实现含2个节点的表,如图:
D:\a\1.jpg

对sensorTable进行Get Table操作,可以获取数据(其中数据时我随意写的,没什么关系),如图:
D:\a\2.jpg

An example for a private MIB is part of the "minimal Unix" project:
contrib/ports/unix/proj/minimal/lwip_prvmib.c
附件是unix项目中的提供的模板代码,做相应的修改,此处表的数据时在系统启动的时候初始化的,有一定的局限性,当表的数据未知时,我怎们能随时插入表的行数呢?
void lwip_privmib_init(void)
{
int index=0 ,i;
struct mib_list_node *dummy;
struct mib_list_rootnode *iprte_rn;
for(i=0;i<3;i++) //对表增加3行数据
{
iprte_rn=&sensor_addr_inf.sensor_list_rn;
dummy=NULL;
snmp_mib_node_insert(iprte_rn,i,&dummy);
}
if (sensor_addr_inf.sensor_list_rn.count != 0)
{
/* enable sensor table, 2 tree_levels under this node
one for the registers and one for the index */
sensorentry.tree_levels = 2;
}
}
在下面这个函数中将表的对象数返回值进行修改就可实现:
static u16_t
sensorentry_length(void* addr_inf, u8_t level)
{
  struct sensor_inf* sensors = addr_inf;
  if (level == 0)
  {
    /* one object (temperature) */
    /*表中有2个节点,返回2,当表中有3个节点时,我改为return 3,getnextrequest这个表,导致死机。但是我单独获取每 个节点时没有问题*/
    return 2;
  }
  else if (level == 1)
  {
    /* number of sensor indexes */
/*表的数据行数*/
    return sensors->sensor_list_rn.count;
  }
  else
  {
    return 0;
  }
}
当表中含3个节点,如图:
D:\a\3.jpg
我单独get每个节点,即分别对节点sensorIndex,sensorName,sensorValue进行Get Colunm操作,可以获取相应的数据,
如图:
D:\a\4.jpg




但是我对sensorTable进行Get Table操作时,系统死机。
请问还有哪些地方需要修改的吗?修改过lwip的SNMP,所以这个问题应该不难,望赐教,谢谢了!

最新回复

楼主能共享下不  详情 回复 发表于 2018-4-13 15:48
点赞 关注(1)

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
问题得到解决,是ucos系统的问题
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
恭喜啊,可否共享一下 lwip_privmib_init啊,多谢
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
可以
lwip_privmib_init和上面的代码没变
只是这个实现还有点问题 就是表的行数需要在初始化的时候设定,增加删除只能在lwip_privmib_init()函数中,不能够在表的查询实时过程中修改 同时向其他任务发送查询表的函数不知道放在什么位置才恰当
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
您好,谢谢你的回答
我现在正在研究STM32 的LWIP 下的SNMP
现在私有参数 GET能成功,SET 不行
我是用的MIB Browser 软件测试的,
但是PRIVATE 下自己定义的TREE 看不到,没有显示,不知道为什么
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个可能是你的测试软件的问题,私有库是需要事先加载的。lwip下的snmp的set操作时没有问题的,不需做任何修改,只是在编写私有库的实现函数时需要参考一下snmp的内部节点的方法,例如sysDescr,sysContact等,如果有什么不明白的话,加我QQ 236771465 一起探讨,我也还有许多地方不是很清楚
 
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

7
 
楼主,我现在也准备搞这个,能将你的SNMP相关模板给我一份么?50块请你吃顿早饭如何?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
楼主能共享下不
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表