Как собирать последовательные данные с помощью класса Python Telnet

#python #oop #telnet

#python #ооп #telnet

Вопрос:

У меня есть простой класс, который я смоделировал, представляющий источник питания, к которому я буду удаленно подключаться через сеанс telnet. Класс имеет различные методы, включая подключение к источнику питания, включение / выключение источника питания и настройку его напряжения. Я пытаюсь добавить метод, который позволит мне собирать данные о выходном напряжении, пока он включен и установлено соединение. В качестве попытки я реализовал этот GetAllData метод. Метод использует цикл while, где условием является выполнение цикла while до тех пор, пока состояние источника питания не будет установлено на on . Я хотел бы иметь возможность выйти из цикла method / while после отключения питания с помощью TurnOff() метода. К сожалению, как только цикл while останавливается, он не может вырваться. Может кто-нибудь порекомендовать лучший способ реализовать то, что я пытаюсь сделать? вот мой класс ниже:

 import os
import telnetlib

class PowerSupply():

    # ---------------------------------- #
    def __init__(self,port_no,my_name):
        self.Status = "Off"
        self.Port = port_no
        self.Name = my_name
        self.tn = None
        self.HOST = "192"
    # ---------------------------------- #
    def TurnOn(self):
        onCommand = "OUT 1r"

        if self.Status == "ON":
            print "I'm already on"
        else:
            self.tn = telnetlib.Telnet(self.HOST,self.Port)
            self.tn.write(onCommand)
            self.Status = "ON"
            print "I am now on"
    # ---------------------------------- #
    def TurnOff(self):
        offCommand = "OUT 0r"
        self.tn.write(offCommand)
        self.tn.close()
        print "I am now off"
    # ---------------------------------- #
    def SetVoltage(self,volts):
        voltageCommand = "PV"   " "   str(volts)   "r"
        self.tn.write(voltageCommand)
    # ---------------------------------- #  
    def GetAllData(self):
        while(self.Status == "ON"):
            self.tn.write("DVC?r")
            all_data = self.tn.read_some()
            vdc = all_data.split(',')
            vdc = vdc[0]
            print vdc