time.process_time () не дает мне тайм-аут, в то время как time.clock () работает точно так же, как и тайм-аут процесса - PullRequest
0 голосов
/ 27 февраля 2020

Я использую Python 3.x и библиотеку pyserial для того, чтобы пытаться читать с последовательного порта и записывать в него.

Как это работает, так что есть последовательный тайм-аут, который определен в инициализации, но есть другой тайм-аут, который является тайм-аутом процесса, который передается как параметр в функцию для тайм-аута, если в течение определенного времени, если мы не получить любые данные из последовательного порта.

Кажется, проблема в этом тайм-ауте процесса , который не работает, когда я использую time.process_time () , но работает, если я использую время .clock () вместо. Поскольку time.clock () в апреле будет объявлено устаревшим, какое решение лучше для этой ситуации и почему time.process_time () не работает должным образом.

class Uart:
uart = serial.Serial()
process_timeout = 0

file_name = 'results.txt'
result_file = open(file_name,'w')

def __init__(self,port_name):
    print("init called")

    self.uart.baudrate= 115200
    self.uart.port = port_name # COM9 for NP and COM8 for AP
    self.uart.parity= serial.PARITY_NONE
    self.uart.bytesize= serial.EIGHTBITS
    self.uart.stopbits= serial.STOPBITS_ONE
    self.uart.timeout = 10  
    #reads data on Uart   
def start_uart_read(self,timeout):
    self.process_timeout = timeout
    start_comm = 'a'
    start_time =time.process_time() 
    decoded_data=''
    time_diff=0
    if(self.uart.is_open!=1):
        self.uart.open()
    print(self.uart.is_open)
    while (start_comm!='*') and (time_diff<timeout):
        time_diff=time.process_time() -start_time 
        data= self.uart.read(size=1)
        if(data):                
            decoded_data= data.decode("utf-8")
            if (decoded_data=='*'):
                start_comm='*'                

    if(time.process_time() -start_time>timeout):
        self.result_file.write('StartupTimeout\n')
       # print("timeout called")
    else:
        self.result_file.write('SuccessfulStartup\n')
...