救助!delpi中用IDSNMP控件查询OID值,没能得到正确结果!

xiejifa 2008-02-22 04:49:33
代码如下:
begin
SNMP.Community := Community.Text;
SNMP.Host := IPaddress.Text;
SNMP.Query.Clear;
origOID := '1.3.6.1.2.1.1.1.0';
SNMP.Query.MIBAdd(origOID, '');
SNMP.Query.PDUType := PDUGetRequest;
while SNMP.SendQuery do
begin
for I := 0 to SNMP.Reply.ValueCount - 1 do
memo1.Lines.Add(SNMP.Reply.Value[I]);
SNMP.Query.Clear;
SNMP.Query.MIBAdd(SNMP.Reply.ValueOID[0], '');
SNMP.Query.PDUType := PDUGetNextRequest;

end;
end;
以上代码以实现查询,但有些结果不正确,例如设备总运行时间,只是显示形如"24825"这样的一串数字,但我用其它MIB浏览器除了能看到这串数字外,还能看到运行小时,分,秒等内容;还有查询设备MAC地址时,内容为空,用其它MIB浏览器查看时内容是分两行显示,第一行内容为空,第二行内容才是MAC地址,不知如何修改控件代码才能正确读取到OID-VALUE值的第二行内容呢?按照我的观察,以上问题都是程序只读取的是VALUE值的第一行内容,没有读取第二行内容而造成的,还有如果我想读取OID的描述,还有OID的对像名称(不是OID的值)该如何实现呢?希望各位高手给我帮助!xiejifa@163.com,或者直接回复,谢谢!
...全文
342 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
有点难度哦
lextm 2008-02-25
  • 打赏
  • 举报
回复
一般查出来都是表格,现在的机器很少只有一个了。先get一下1.3.6.1.2.1.2.2.0的值,看看设备有几个MAC,然后

1.3.6.1.2.1.2.2.1.6.1是第一个卡的MAC
1.3.6.1.2.1.2.2.1.6.2是第二个卡的MAC

依此类推。

空值的那个是给127.0.0.×用的,是个虚拟的网卡,所以你拿到空值是正常的。其他的查出来的值都是字符串呀,没必要转换吧。

如果取不到值,应该是SNMP无返回或者异常,只要有返回就是读到了。
xiejifa 2008-02-25
  • 打赏
  • 举报
回复
LELE所言极是!小弟是初学DELPHI,对SNMP协议也还不太了解,但我还有一个问题就是,如何用表查询的方式来查询MAC地址呀?曾经在论坛上有人说过也是用上面代码取MAC地址,还要加一段转换才能正确输出MAC格式地址,但不知在哪里加?而且我现在的问题是MAC提取出来的空值,又跟别人的不一样,该怎样跟踪MAC的取值呢(不知是否取到了值)?问些这么简单的问题,大家别见笑!
lextm 2008-02-25
  • 打赏
  • 举报
回复
你这个的确我不清楚,似乎和我的机器差别很大呢,呵呵。MIB Browser可以取得整个表格的,你看看这个表有没有什么蹊跷的规律吧。

详细的东西其实都应该看SNMP入门的书,那上面对于SNMP的基本操作介绍的很多。像查表这样的就是基本操作。
xiejifa 2008-02-25
  • 打赏
  • 举报
回复
查询1.3.6.1.2.1.2.2.0及1.3.6.1.2.1.2.2.1.6.2没反应,查询1.3.6.1.2.1.2.2.1.6.1及1.3.6.1.2.1.2.2.1.6.3均返回空值,不知为何?用MIB Browser能查询到1.3.6.1.2.1.2.2.1.6.3的值,查看详细属性,显示如下:
MIB IF-MIB
Name ifPhysAddress.3

iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.3

OID 1.3.6.1.2.1.2.2.1.6.3
Type PhysAddress
Units
Access read-only
Status mandatory
Value
0016.D39D.777D


The interface's address at its protocol sub-layer.
The interface's media-specific MIB must define the bit
and byte ordering and format of the value contained by
this object. For interfaces which do not have such an
address (e.g. , a serial line) , this object should
contain an octet string of zero length.
---------
上面显示的VALUE的第一行的值是空的,第二行才有值.是以上代码有误吗?LELE大侠能给段代码我吗?非常感谢!我是把自己的电脑开启了SNMP协议,当作设备来查询的,操作系统XP.
lextm 2008-02-22
  • 打赏
  • 举报
回复
老实告诉你,查到的实际数据就是这个数字,这才是基本类型。至于MIB Browser看到的,都是处理后的结果。你处理一下24825也可以变成小时分钟形式。

至于MAC地址那是一张表,需要用表查询的方式,和标量查询不一样,所以建议你仔细研究SNMP,拜托。

如果是要从OID翻译到文字名,那需要自己解析MIB文件做翻译,或者使用NetSNMP现成的工具,都很麻烦,因为对于基于SNMP的管理软件来说,名字一点也不重要,所有操作都可以用OID做。

综上所述,主要是你的SNMP知识储备太少,而不是Indy有问题。我仔细的看过Indy的这个单元,可以说和那些动辄上万块收费软件的功能几乎一样,所以用好了真是很好很强大哟。
内容概要:本文介绍了一个基于Python的WGAN-LSTM混合模型,用于解决复杂时间序列预测问题。该模型结合瓦瑟斯坦生成对抗网络(WGAN)与长短期记忆网络(LSTM),利用LSTM捕捉时间序列中的长期依赖和动态趋势,通过WGAN的生成器与评价器对抗训练,使预测结果不仅贴近真实值,还能更好地保留数据分布特征,如波动性、尖峰和异常变化。项目采用PyTorch实现,涵盖数据预处理、滑动窗口构建、标准化、条件生成器与评价器设计、梯度惩罚机制、联合损失优化及模型评估全流程,并支持多变量输入与不确定性建模,适用于非线性、非平稳、高波动场景的单步预测。; 适合人群:具备Python编程基础和深度学习背景,熟悉PyTorch框架,从事时间序列分析、AI建模或数据科学相关工作的研究人员、工程师及高校学生(建议有1年以上相关经验); 使用场景及目标:①应用于金融价格、电力负荷、设备传感、市场需求等高波动时间序列的精准预测;②实现对未来不确定性的量化表达,支持风险评估、区间预测与情景模拟;③提升传统回归模型对异常波动的识别能力,优化预警与决策系统; 阅读建议:本文提供完整代码结构与核心实现片段,建议结合完整项目代码、数据集和博客文档进行复现与调试,重点关注对抗训练稳定性、梯度惩罚实现及多损失权重平衡策略,以深入掌握WGAN-LSTM在时序建模中的工程应用细节。
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 I2C(Inter-Integrated Circuit)总线是一种在电子设备中广泛应用的串行通信协议,该协议由Philips半导体(现名为NXP半导体)于上世纪80年代提出。I2C总线借助两条线路(时钟线SCL和数据线SDA)完成设备间的控制指令与数据信息的交换,因此它具备多主机与多从机的串行总线特性。在软件层面模拟I2C主从机交互时,常规的IO端口被用于再现I2C主机及从机的通信过程。 I2C总线引脚功能说明: 1. SCL(Serial Clock):时钟线,其时钟信号由主机掌控。 2. SDA(Serial Data):数据线,主要用于承载数据传输。 总线时序规范: - 非活动状态:当总线处于非通信阶段,SDA线保持高电平。 - 总线的线与操作:若多个设备同时接入总线,通过线与逻辑确保任一设备输出低电平,则总线整体呈现低电平状态。 - 数据位稳定性要求:数据位必须在SCL为高电平期间维持稳定状态,而只有在SCL为低电平期间方可发生改变。 - 起始与终止信号的定义:起始信号表现为在SCL高电平期间SDA从高电平转为低电平,终止信号则是在SCL高电平期间SDA从低电平转为高电平。起始信号标志着总线使用周期的起始,终止信号则表示总线使用周期的结束。 - 从机数据处理延时的处理机制:当从机需要额外时间处理数据时,能够将SCL线拉至低电平,促使主机进入等待状态。 - 字节传输与应答机制:一个字节由8位数据加上1位应答位构成。若从机无法应答或已无数据接收需求,将释放SDA线,主机随后产生终止信号。 - 数据帧结构:数据帧以从机地址作为起始,接着是数据传输方向指示位,最后是实际传输...
内容概要:本文研究了基于多智能体一致性演化的孤岛微电网自适应虚拟阻抗容错控制与二次稳态补偿机制,旨在解决孤岛微电网在脱离主网支撑后面临的电压与频率稳定性差、功率分配不均及抗干扰能力弱等关键问题。研究通过构建多智能体系统模型,利用一致性算法实现各分布式电源(DG)间的分布式协同控制,摆脱对中心控制器的依赖,提升系统的自治性与可扩展性。针对线路阻抗差异导致的传统下垂控制功率分配偏差问题,提出自适应虚拟阻抗控制策略,能够在线动态调节虚拟阻抗参数,有效补偿线路压降,实现有功与无功功率的精确按比例分配。为应对通信链路中断或部分DG故障等异常工况,设计了容错控制机制,确保系统在部分节点失效时仍能维持基本运行。同时,引入二次稳态补偿控制,通过多智能体协商消除一次下垂控制产生的静态电压和频率偏差,使系统运行点恢复至额定值。整个控制策略在Simulink环境中进行了详细建模与仿真实现,通过设置负载突变、通信中断、DG投切等多种复杂工况,全面验证了所提方法在提升功率分配精度、改善电能质量、增强系统鲁棒性与容错能力方面的有效性与优越性。; 适合人群:具备电力系统、自动化、电气工程及其自动化等相关专业背景,从事微电网、分布式能源系统、智能电网控制与优化等领域研究的硕士/博士研究生、高校科研人员以及电力行业的工程技术人员。; 使用场景及目标:①应用于孤岛微电网的分布式协同控制策略研究与工程设计,特别是在偏远地区、海岛或应急供电等无法依赖主网的场景;②解决传统集中式控制可靠性低、可扩展性差的问题,以及传统下垂控制因线路参数差异导致的功率分配不准、电压频率偏移过大等核心难题;③提升微电网在面对内部故障和外部扰动时的自治运行能力、系统整体可靠性与容错能力,为构建高韧性、智能化的新型电力系统提供技术支持。; 阅读建议:读者应结合提供的Simulink仿真模型,深入理解多智能体一致性算法的实现逻辑与通信拓扑构建方法,重点关注自适应虚拟阻抗的调节律设计、容错控制的触发与切换逻辑,以及二次补偿控制的迭代收敛过程。建议通过修改仿真参数、设置不同的故障场景进行对比实验,亲身体验各控制模块的作用效果,并分析仿真结果中的功率波形、电压频率曲线及偏差收敛情况,以全面掌握该先进控制策略的设计精髓与性能优势。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧