AttributeError: 'Utility' object has no attribute 'ser'
пишу приложение с serial port на python и возникла следующая ошибка
File "/home/ivaries/Projects/Locator_Layout/Main/Layout_Control/control.py", line 51, in Move
self.Utility.move(self.y, self.x, self.block)
File "/home/ivaries/Projects/Locator_Layout/Main/Layout_Control/utility.py", line 96, in move
resp = self.__gcode_querry(move_com)
File "/home/ivaries/Projects/Locator_Layout/Main/Layout_Control/utility.py", line 20, in __gcode_querry
self.ser.flushInput()
AttributeError: 'Utility' object has no attribute 'ser'
Я понимаю что ошибка говорит о том, что класс Utility не имеет инициализации переменной ser, но если смотреть по коду, то она есть...
def __gcode_querry(self, g_code, resp_lines = 1):
self.ser.flushInput()
self.ser.write(g_code.encode())
resp = self.ser.readline()
# Последняя линия ответа
#for i in range(resp_lines - 1):
#discard = self.ser.readline()
return resp
def __init__(self, port, baudRate):
g_code_motor_on = 'M17 ;\n'
g_code_se_dis = 'M211 S0; \n'
g_code_rel_mode = 'G91 ;\n'
g_code_motor_current = 'M907 X10 Y10 ;\n'
g_code_feedrate = 'M220 S5 ; \n'
g_code_maxfrate = 'M203 X1.5 y0.5 ; \n'
g_code_saccel = 'M204 T2 ;\n'
self.init = False
try:
self.ser = serial.Serial(port, baudRate, timeout = 5)
except:
return
# Запустите двигатель, отключите точки остановки и
# установить относительный режим
self.__gcode_querry(g_code_motor_on, 29);
self.__gcode_querry(g_code_maxfrate);
self.__gcode_querry(g_code_saccel);
#self.__gcode_querry(g_code_motor_current);
#self.__gcode_querry(g_code_feedrate);
self.__gcode_querry(g_code_se_dis, 2);
self.__gcode_querry(g_code_rel_mode);
self.init = True
def move(self, x, y, blocking = False):
move_com = f"G0 X{x} Y{y} ;\n"
resp = self.__gcode_querry(move_com)
if True == blocking:
#todo: возможно, нам нужно вместо этого использовать delta < min_gap
while(True):
sleep(1/100)
current_pos = self.__gcode_coord_get()
if None != current_pos:
break
return resp
В move вызывается __gcode_querry(move_com), в котором удаляются данные входного буфера self.ser.flushInput(), сам же ser инициализирован в init
try:
self.ser = serial.Serial(port, baudRate, timeout = 5)
except:
return
в чем может быть беда?