Надеюсь, у всех дела идут хорошо.
У меня есть проблема, которую я давно пытаюсь решить, но безуспешно ... У меня есть эта функция, которая прослушивает команды, посылаемые нажатием различных кнопок на сайт. Получив команду, он отправляет ее дальше по последовательному порту:
def write(self):
while self.alive:
try:
data = self.socket.recv(1024)
print('Data received through TCP: ' + str(data))
recvdStr = data.decode('UTF-8')
if not data:
break
self.serial.write(recvdString.encode('utf-8'))
print('Data sent through serial: ' +str(recvdStr))
self.alive = False
self.thread_read.join()
. Вышеописанное работает как задумано ...
Я сейчас пытаюсь расширить эту функцию, чтобы, когда она получая указанную c команду от этого веб-сайта, он выполняет заданную c часть функции (продолжая при этом прослушивать сокет), пока не получит другую команду, сообщающую этой части функции об остановке и возвращении к простому прослушиванию и пересылке ( как показано в коде выше).
Способ, которым я пытался реализовать его, можно увидеть здесь:
def write(self):
while self.alive:
try:
data = self.socket.recv(1024)
print('Data received through TCP: ' + str(data))
recvdStr = data.decode('UTF-8')
if data == b'start':
self.serial.write(data.encode('utf-8'))
while True:
newData = self.socket.recv(1024)
newMessage = 'works'
self.serial.write(newMessage.encode('utf-8'))
time.sleep(0.5)
if newData == b'stop':
break
if not data:
break
self.serial.write(recvdString.encode('utf-8'))
print('Data sent through serial: ' +str(recvdStr))
self.alive = False
self.thread_read.join()
Вид поведения, который я получаю из вышесказанного, заключается в том, что когда он получает сообщение «пуск», которое неоднократно отправляет сообщение «newMessage» по последовательному порту (как и предполагалось), но когда я нажимаю на моем веб-сайте кнопку, которая отправляет сообщение «стоп», функция не получает его, а «newMessage» все еще отправляется.
Я хотел бы остановить это l oop, как только будет получено сообщение "Стоп", и вернуться к нормальной работе ...
Любая помощь был бы очень признателен.
Спасибо,
Роб