我有两节课。1个网络和1个设备。设备是包含线程运行的主类。应用是获取网络信号。我初始化设备类中打开的方法内部的网络类句柄。然后,在Run方法中调用CSQ方法。但是,它没有调用CSQ方法。没有打印出来。它应该是start+CSQ
import serial
import time
import threading
import re
from serial import SerialException
class Network:
def __init__(self, handle):
self.handle = handle
def CSQ(self):
while True:
self.handle.write('AT+CSQ')
time.sleep(1)
class Device(threading.Thread):
def __init__(self, port, baudrate):
threading.Thread.__init__(self)
self.port = port
self.baudrate = baudrate
def open(self):
try:
self.handle = serial.Serial(self.port, self.baudrate)
self.network = Network(self.handle)
return True
except SerialException as e:
error = re.findall(r"'(.*?)'", str(e))
self.__error = error
if error[1] == 'Access is denied.':
return True
elif error[1] == 'Port is already open.':
return True
else:
return False
def buffer(self):
while True:
if self.open():
buffer = self.handle.readline()
if buffer == b'AT+CGMI\r\r\n':
data = []
while True:
buffers = self.handle.readline()
data.append(buffers)
if buffers == b'OK\r\n':
print(data[0])
break
elif buffers == b'ERROR\r\n':
break
print(buffer)
time.sleep(1)
else:
print('Device is not connecting')
def write(self, command):
if self.open():
self.handle.write(command.encode('UTF-8') + b'\r')
def error(self):
return self.__error
def run(self):
self.buffer()
self.network.CSQ()
device = Device('COM12', 9600)
device.open()
device.start()
buffer()
方法永远不会返回,因此network.CSQ()
永远不会执行。你需要回顾一下这个逻辑相关问题 更多 >
编程相关推荐