Python trap рутина - PullRequest
       6

Python trap рутина

0 голосов
/ 11 сентября 2018

Хорошо, так что для живого я программирую Промышленные роботы ABB , а используемый нами язык программирования называется Rapid .

Одна действительно крутая вещь, которую я могу сделать в Rapid, называется рутиной ловушек.И это похоже на цикл while, но вместо того, чтобы проходить через весь цикл, прежде чем проверять условие, он будет прерываться буквально, как только произойдет событие, ожидающее его.

Полагаю, это похоже на прослушиватель событий в javascript.Это похоже на работу обычной фоновой программы.Я хочу сделать это в Python.

У меня мало формального образования в области CS, поэтому я не совсем уверен, что это за концепция.Извините, если это немного расплывчато, я не совсем уверен, как спросить это ясно.

1 Ответ

0 голосов
/ 11 сентября 2018

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

Короче говоря, вы можете связать функциюна один или несколько сигналов:

>>> import signal
>>> import sys
>>> import time
>>> 
>>> # Here we define a function that we want to get called.
>>> def received_ctrl_c(signum, stack):
...     print("Received Ctrl-C")
...     sys.exit(0)
... 
>>> # Bind the function to the standard system Ctrl-C signal.
>>> handler = signal.signal(signal.SIGINT, received_ctrl_c)
>>> handler
<built-in function default_int_handler>
>>> 
>>> # Now let’s loop forever, and break out only by pressing Ctrl-C, i.e. sending the SIGINT signal to the Python process.
>>> while True:
...     print("Waiting…")
...     time.sleep(5)
... 
Waiting…
Waiting…
Waiting…
^CReceived Ctrl-C

В вашем конкретном случае выясните, какой сигнал (и) робот отправляет вашему процессу Python (или какой-либо процесс слушает сигналы), а затем воздействуйте на них, как показано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...