• Xena Valkyrie以太网测试仪,如何手动去获取QSFPxx光模块的温度数据


    在ValkyrieManager软件界面上,有2个温度信息,一个是测试仪板卡的温度监控,另一个是光模块/TCVR的温度,针对光模块信息,还提供其功耗,Laser Power的监控信息

    //之前一直以为这些信息是可有可无的,但在一次交流中,用户提出他们目前测试用的这颗光模块属于试验阶段,担心温度过高会导致损毁,所以希望能够不间断的去查询这个温度

    ValkyrieManager软件UI显示的光模块温度信息等,都是来自于光模块本身的寄存器上报回来的数据,我们也可以手动去获得这些信息,/// 同样的可以将这个信息用脚本的方式来获取,达到长期记录绘制的效果。

     通过查询CMIS相关规范,我们得知温度信息分为整数位和小数位两个部分,分别在Page0 ,14,15。

    我们通过获取这2个寄存器的信息,经过进制转换,公式推演,过程如下

    Page0,14数据为HEX  23, 换算成十进制数值为 35,

    Page0,15数据为HEX  9B ,换算成十进制数值为 155,验算后 155/256= 0.61

    所以得出光模块/TCVR的温度数值为 35.61 °C


    当然,为了将这些数据更友好的展示,软件也提供IEEE,QSFPxx,SFPxx多套模板,用户可以直接导入模板进行常用的一些寄存器信息的读写交互


    附上Python脚本上的实现

    1. # coding=UTF-8
    2. import time, json, random, types, sys, socket, math, os
    3. from binascii import hexlify
    4. from TestUtilsL23 import XenaScriptTools
    5. #########################################
    6. ##############Description################
    7. ## Aurthor: Zohn Yang ##
    8. ## Date : 2019-12-1 ##
    9. ## Email : szy@xenanetworks.com ##
    10. ## Software : Pyhton 3.7.4 ##
    11. ## This is a scripting special for the ##
    12. ## transceiver test. It could monitor ##
    13. ## each x seconds Fec bit error rate ##
    14. ## base on the port and each physical ##
    15. ## lines. ##
    16. #########################################
    17. def runtest(xm, ports, tt, step, number):
    18. filename = 'output.txt'
    19. with open(filename,'ab') as f:
    20. for m in range(11):
    21. for n in range(256):
    22. print(m)
    23. print(n)
    24. res = xm.Send("4/0 PX_RW [" + str(m) + "," + str(n) + "] ?")
    25. res = res.encode()
    26. f.write(res + b'\r\n')
    27. print(str(res))
    28. res = xm.Send("4/1 PX_RW [" + str(m) + "," + str(n) + "] ?")
    29. res = res.encode()
    30. f.write(res + b'\r\n')
    31. print(str(res))
    32. def main(argv):
    33. a = sys.argv
    34. configvalue = {}
    35. with open('config.json','rb') as f:
    36. configs=json.loads(f.read())
    37. ip_address = configs.get('ip_address')
    38. ports = configs.get('ports', '')
    39. tt = configs.get('time')
    40. step = configs.get('step')
    41. number = configs.get('number')
    42. xm = XenaScriptTools(ip_address)
    43. xm.LogonSetOwner("xena", "python_test_1")
    44. runtest(xm, ports, tt, step, number)
    45. if __name__ == '__main__':
    46. sys.exit(main(sys.argv))

    然后在本地可以输出一个类似的数据表单,可根据这个表单进行数据的二次整理

     

  • 相关阅读:
    机器学习是什么
    LrC 13 & ACR 16:点颜色
    DTS搭载全新自研内核,突破两地三中心架构的关键技术|腾讯云数据库
    树上启发式合并简单题
    svg描边动画的实现
    文件IO(Linux)
    STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]
    输出总结是成长的开始
    【论文理解】DQN:Playing Atari with Deep Reinforcement Learning
    言言和爸爸的故事——言言明天上幼儿园小班了
  • 原文地址:https://blog.csdn.net/pangzi_sh/article/details/126763862