我正在编写一个使用函数 get_serial_port() 的类。如果 self.ser.write('at\r') 没有在init中调用,那么 self.ser 在类的其他地方是 None 。(注意 get_serial_port 函数在返回实例之前验证通信)。我认为这与 Serial 类中的垃圾收集有关,但我不明白发生了什么。为什么是这样?
函数 get_serial_port 检查通信并返回链接到 com 端口的实例。init_module() 函数使用 self.ser.write('command') 运行多个函数。它按原样工作,但我不喜欢有我不理解的代码......
class Device():
def __init__(self, log = True, com_port=None, imei=None, ser=None, baud_rate=115200):
if log:
self.log = True
self.log = Logger()
self.log.start_log()
if ser is None:
try:
self.ser = get_serial_port(baud_rate=baud_rate)
self.ser.write('at\r')
print(self.ser.read(1000))
except:
print('ERROR: serial port connection failed')
else:
self.ser = ser
self.imei = imei
self.init_module()