По мере усложнения штатной электропроводки автомобилей классическое «аналоговое» подключение сигнализаций становится все менее актуальным. При подключении «по аналогу» необходимо каждую контрольную или управляющую цепь подсоединять к конкретной физической цепи автомобиля, причем логика работы входа или выхода жестко определена прошивкой системы.
Рассмотрим пример – подключение датчиков открытия дверей. На старых автомобилях концевики дверей сводились в одну точку, замыкая лампу подсветки салона на «массу» или подавая на нее «плюс» — соответственно, достаточно было подсоединить к ним «минусовой» или «плюсовой» вход концевиков дверей от сигнализации. На более сложных автомобилях концевики уже идут с отдельными проводами до контроллера бортовых цепей или бортового компьютера, приходится собирать диодную развязку, врезая часть диодов в штатную проводку, чтобы штатная электроника не «сошла с ума».
Теперь добавим к системе автозапуск – после остановки двигателя нам уже придется заставлять автомобиль правильно «засыпать», иначе у нас, например, останется включенной магнитола. Значит, нам потребуется в большинстве случаев имитировать открытие и закрытие водительской двери – именно к этому событию в штатной проводке привязывается «засыпание». Для этого мы используем программируемый дополнительный канал, не забывая, что подключать его придется в правильное место относительно развязывающих диодов, иначе сигнализация после глушения двигателя начнет включать тревогу.
Но в то же время сейчас уже и на бюджетных моделях есть CAN-шина, которая позволяет считывать с нее диагностические данные и управлять исполнительными механизмами – например, теми же замками дверей. Установив в сигнализацию модуль КАН-шины, мы сможем получать нужные данные о состоянии автомобиля и по возможности управлять им, подсоединив всего два или четыре провода (зависит от архитектуры проводки – либо мы подключаемся только к одной шине, либо раздельно к шинам двигателя и кузова).
При этом CAN-модуль имеет собственную прошивку, что позволяет легко адаптировать автосигнализацию к разным машинам, не затрагивая прошивку самого центрального блока, который остается универсальным для всех моделей машин. Такая сигнализация станет гораздо более гибкой в настройке, сможет лучше адаптироваться к особенностям конкретной модели авто.
На сайте работает автоэлектрик-диагност, сертифицированный специалист StarLine. Если есть вопросы по автосигнализациям задавайте их в конце статьи в комментариях или Вконтакте. Указывайте при обращение марку машины и модель сигнализации.
Кан-модуль для сигнализации фактически является интерфейсным блоком, который позволяет прошивке охранной системы управлять цепями автомобиля типизированным образом. Например, при постановке автомобиля на охрану центральный блок подает на CAN-модуль соответствующую команду, а дальнейшие действия уже будут определяться прошивкой модуля. Однократно выполнив программирование КАН-модуля в процессе установки, о нем в дальнейшем можно просто забыть – сервисные функции сигнализации можно будет настраивать так же, как если бы его и не было.
При этом само по себе программирование не низкоуровневое, то есть установщику не обязательно знать, какие конкретно команды нужно подавать на шину для определенного действия: достаточно просто выбрать номер прошивки, соответствующий модели и комплектации автомобиля. Узнать номер можно на сайте производителя охранной системы. Например, прошивка КАН-модуля «Старлайн» для Honda CR-V 2017 года с кнопкой «Старт-Стоп» имеет номер 2444.
Чтобы получить ответ на этот вопрос, проще всего ознакомиться с функциями, которые выбранная сигнализация может обеспечить через CAN-шину. При этом нужно учитывать, что ведущие производители охранных комплексов постоянно обновляют прошивки модулей и их список постоянно расширяется. То есть, если CAN-шина физически присутствует в автомобиле, помимо упрощения установки мы получим еще и больший набор функций по сравнению с аналоговым подключением.
КАН-модуль «Старлайн» дает ряд функций, которые при аналоговом подключении недоступны:
Уже хотя бы ради бесключевого обхода иммобилайзера установка КАН-модуля становится привлекательным решением, даже если всю систему нетрудно подключить «по аналогу». Для автозапуска CAN-подключение интересно еще и возможностью точного контроля факта работы двигателя. При аналоговом подключении для этого приходится использовать либо специальный вход тахометрического сигнала, либо идти более грубыми путями (по росту напряжения в сети при включении генератора, по изменению напряжения на его выходе контрольной лампы).
Даже на ряде бензиновых автомобилей корректно считываемый сигнализацией тахометрический сигнал получить трудно. Например, на холостом ходу у Citroen C4 «Старлайн» не распознает сигнал с форсунок, если не собрать самодельный сумматор, и будет глушить мотор после того, как он сбросит обороты. На дизелях же возможностей тахометрического входа еще меньше. В то же время подключение CAN-модуля даст сигнализации возможность однозначно определить, работает двигатель или нет, вовремя отключая стартер и не отключая зажигание при ошибках считывания оборотов по физическому сигналу.
Рассмотрим процесс программирования модуля CAN-шины на примере популярной StarLine A93. Сам модуль устанавливается непосредственно на плату центрального блока, где предусмотрены специальные гнезда. На плате модуля есть USB-разъем, который в дальнейшем позволит обновлять прошивку.
Чтобы войти в режим программирования модуля, временно отключите от сигнализации разъемы питания и CAN-шины. Зажав кнопку Valet, возвращаем на место разъем питания и продолжаем удерживать кнопку, пока не отзвучат пять сигналов сирены.
Система подаст еще 4 сигнала, когда кнопка будет отпущена. Теперь перейдите в соответствующее меню настроек CAN-модуля однократным нажатием кнопки Valet. Затем вводим четырехзначный номер прошивки, быстро нажимая кнопку число раз, соответствующее очередной цифре номера. Например, для кода 1312 нужно нажать кнопку 1 раз, дождаться одиночного сигнала сирены, нажать ее три раза, после трехкратного сигнала нажать дважды, прослушать двойной «кряк» сирены, нажать кнопку еще два раза. После двойного сигнала с небольшой паузой система подаст еще два оповещения, если номер введен правильно, или четыре, если такой номер прошивки не найден.
Далее настраиваются функции модуля, для чего предусмотрено несколько уровней меню:
Можно полностью сбросить CAN-модуль на заводские настройки пятикратным нажатием Valet – если Вы запутались в настройке, и проще начать ее «с нуля»
Меню статусных функций позволяет задать, какие именно информационные сигналы будут считываться с CAN-шины. Например, если Вы подсоединили аналоговый контроль концевиков дверей, считывание информации концевиков с CAN-шины отключите, иначе аналоговый вход не будет работать. Аналогично в меню управляющих функций можно определить, будет ли CAN-модуль управлять «аварийкой», закрытием и открытием центрального замка (причем закрытие и открытие настраиваются отдельно), замком багажника, автозапуском и так далее. В меню дополнительных функций настраивается функция Slave.
Как определить, какие функции нужно реализовать по аналогу, а какие доступны через CAN-шину? Достаточно выбрать на портале can.starline.ru модель автомобиля и тип модуля (2CAN, CAN+LIN и так далее), чтобы узнать номер прошивки, скачать последнюю версию и увидеть перечень функций, доступных в этой прошивке через CAN.
На Chevrolet Cruze до 2015 года с замком зажигания актуальная на момент написания статьи прошивка 1765 потребует включение управление аварийной сигнализацией «по аналогу», а вот управление штатным центральным замком уже можно смело настраивать по CAN-шине, не подключая дополнительные провода. Блокировку запуска придется подключать внешнюю, потому что заглушить мотор через диагностическую шину в этой прошивке тоже нельзя.
Ещё кое-что полезное для Вас:
В дальнейшем, когда прошивка обновится, появятся дополнительные функции, можно будет просто активировать их в настройках CAN-модуля, не отключая ранее выведенные в штатную проводку аналоговые каналы.
CAN модуль является необходимым устройством при установке автосигнализации и дополнительного оборудования (для корректной работы автосигнализации) на некоторые модели автомобилей.
CAN модуль это цифровой адаптер CAN шины он служит для контроля и чтения цифровых сигналов информационной CAN шины автомобиля и преобразования сигналов автосигнализации в цифровые сигналы а\м.
При установке CAN модуля, вмешательство в штатную электропроводку Вашего автомобиля минимально!
На рисунке представлена схема подключения CAN модуля к автомобилю (всего 5 проводов) и к сигнализации.
Адаптер CAN, считывает информацию из шины CAN bus автомобиля и преобразовывает ее в аналоговые сигналы, необходимых для автосигнализации. Также CAN адаптер преобразовывает аналоговые сигналы автосигнализации в цифровые, что позволяет управлять некоторыми устройствами автомобиля например закрытие окон и люка автомобиля (зависит от комплектации автомобиля, года выпуска и тд). CAN модуль программируется под определенную модель автомобиля.
Купить CAN модули можно у нас на сайте.
Современный тип охранных устройств — CAN автосигнализации, подключаются непосредственно к цифровой шине автомобиля без промежуточных блоков, вся необходимая информация передается всего по двум проводам.
В самых современных автосигнализациях существует возможность подключения к двум кан шинам автомобиля, для более «богатого» контроля необходимых датчиков и управления сервисными функциями автомобиля.
На рисунке представлена схема подключения CAN сигнализации к автомобилю (всего 5 проводов и сирена).
Макгруп McGrp.Ru |
CAN модуль является необходимым устройством при установке автосигнализации и дополнительного оборудования (для корректной работы автосигнализации) на некоторые модели автомобилей.
При установке CAN модуля, вмешательство в штатную электропроводку Вашего автомобиля минимально! Иногда излишнее (неграмотное) вмешательство может привести к проблемам в штатной проводке и появлению ошибок автомобильного компьютера.
CAN модуль это цифровой адаптер CAN шины, он служит для контроля и чтения цифровых сигналов информационной CAN шины автомобиля и преобразования сигналов автосигнализации в цифровые сигналы ам.
При использовании цифрового адаптера CAN шины при установке автосигнализации на автомобиль исключается лишний разбор автомобиля (например всех дверей) для подключения к центральному замку, концевикам дверей и т.д. Чем меньше разбирали — тем меньше вариантов появления в дальнейшем скрипов и «сверчков». Нет протяжки лишних проводов, что делает установку автосигнализации скрытной, при этом сама установка занимает гораздо меньше времени (например с CAN модулем уйдет 4 часа на установку, без него — несколько дней). CAN шина проходит по всему автомобилю, что позволяет подключаться к ней где угодно, соответственно прятать автосигнализацию и блокировки в самых труднодоступных и неожиданных местах. На некоторых автомобилях без использования CAN модуля вообще не обойтись.
Адаптер CAN, считывает информацию из шины CAN автомобиля и преобразовывает ее в аналоговые сигналы, необходимые для автосигнализации. Также CAN адаптер преобразовывает аналоговые сигналы автосигнализации в цифровые, что позволяет управлять некоторыми устройствами автомобиля, например закрытием окон, люка автомобиля (зависит от комплектации автомобиля), управлением комфортом и другими полезными функциями. CAN модуль программируется под определенную модель автомобиля.
Существует два типа установки автосигнализаций StarLine на автомобиль.
Каждый импульс от автосигнализации StarLine идет по своему проводу к исполнительному элементу (например: открытие или закрытие ЦЗ), состояние каждой зоны так же сообщается по своему отдельному проводу (например: открытие или закрытие двери). Таким образом, для подключения автосигнализации к авто и реализации необходимого функционала (например: автозапуск двигателя или дистанционное открытие багажника) необходимо сделать от 7 до 20 точек подключений, врезаясь в штатную проводку автомобиля!. Весь модельный ряд StarLine имеет возможность подключения по аналогу.
Все современные автомобили оборудованы т.н. цифровой CAN-шиной. Это по сути цифровая сеть, в которой постоянно происходит кодированное общение между разными блоками авто. CAN-шина представляет из себя витую-пару провод, подключившись к которым можно как управлять устройствами в автомобиле (например: закрывать замки и поднимать стекла), так и считывать состояния требуемых контрольных зон (например: открылась дверь или капот).
Автосигнализации StarLine идут с модулем CAN, который позволяет как управлять различными устройствами в автомобиле конкретной марки, так и считывать необходимую информацию, исключая множественные подключения к электропроводке. При этом в разы увеличивается надежность подключения и минимизируется кол-во соединений (вмешательства в штатную проводку), что особенно актуально для автомобилей, находящихся на гарантии дилера. А как дополнительный функционал появляется возможность: складывать зеркала, дотягивать стёкла, использовать штатные кнопки на руле для ввода кода.
Кроме того, для огромного числа моделей имеется возможность реализовать т.н. режим SUPER SLAVE, когда постановка и снятие сигнализации StarLine происходит штатным алгоритмом (с родного ключа или бесключевым доступом) автомобиля, но обязательно происходит авторизация по брелоку-метке. Преимущество этого режима в том, что Вам не нужно доставать ничего лишнего! Он просто должен находится в зоне опроса после снятия с охраны для авторизации, которая происходит в течении короткого времени. Более подробно можете ознакомиться в статье — «Slave-режим или чего опасаться?».
А с помощью максимально расширенной поддержке модулей StarLine 2CAN-2LIN владелец авто может получить приятные бонусы в виде iCAN — блокировка двигателя и iKey – бесключевой обходчик штатного иммобилайзера для запуска двигателя!
Благодаря работе инженеров компании StarLine, список поддерживаемых автомобилей постоянно пополняется, а современное оборудование и оперативность позволяют выпускать поддержку самых новых моделей в короткие сроки.
Актуальный список поддерживаемых автомобилей, а так же возможные функции, поддерживаемые модулем StarLine Вы можете посмотреть здесь — can.starline.ru
Рабочее напряжение, В 12/24
Ток потребления, А менее 20мА
Диапазон рабочих температур, С от -40 до +85 С°
ALTOX WBUS-5 GPS — это устройство управления предпусковым подогревателем двигателя или отопителем салона с помощью телефона.
Устройство поддерживает работу как с мобильными телефонами любого типа, так и со стационарными телефонами поддерживающими тоновый набор.
Помимо управления голосовыми вызовами и СМС сообщениями модулем можно управлять через бесплатное приложение ALTOX HEATER для мобильных устройств на платформе Android и iOS.
Управление подогревателями Webasto осуществляется по фирменному цифровому протоколу W-bus, либо с помощью аналогового сигнала для подогревателей не поддерживающих данный протокол.
В отсутствии сигнала сотовой связи включить подогреватель можно кнопкой принудительного запуска непосредственно из салона автомобиля.
Благодаря интегрированному GPS/ГЛОНАСС приемнику с помощью данного устройства можно контролировать перемещение и нахождение транспортного средства в режиме реального времени
Список штатных подогревателей совместимых с GSM-модулем ALTOX WBUS-5 GPS:
Слева на рисунке много проводов, подключающих датчики и устройства автомобиля, в середине CAN модуль, который преобразует все сигналы автомобиля в цифровые и справа выходят два провода, называемые CAN шина. CAN шина позволяет соединить охранную систему или другое сложное устройство, подключаясь всего к двум проводам вместо десятка.
Сигнализация с автозапуском это особая тема для современных автомобилей.
CAN модуль StarLine — квадратики, на которых написано StarLine
Для второго пункта опишу пример для более ясного представления. Возьмем к примеру Volkswagen Tiguan 2011 года с механической коробкой передач. Для корректной работы охранной системы и для безопасного дистанционного запуска, надо чтобы сигнализация видела, открыта ли какая-либо дверь автомобиля. Для этого обычно сигнализация подключается напрямую к концевым выключателям дверей. Но в этом автомобиле, чтобы проделать данную процедуру (довольно таки трудоемкую), надо разобрать все двери (аккуратно снять панели), протянуть от каждого замка провод в салон! Это как минимум 4 часа работы. Плюс это отразится на цене.
Имея в наличии сигнализацию со встроенным CAN-модулем, мы соединяем два провода внутри салона и считываем с них все основные показатели (открыты или закрыты двери, заведен ли двигатель и поднят ли рычаг ручного тормоза).
Отсюда плюсы использования сигнализации с автозапуском, имеющим CAN-модуль:
Этот модуль предоставляет механизмы для использования обработчиков сигналов в Python.
Функция signal.signal ()
позволяет определять пользовательские обработчики, которые будут
выполняется при получении сигнала. Небольшое количество обработчиков по умолчанию
установлено: SIGPIPE
игнорируется (поэтому ошибки записи в каналы и сокеты
может сообщаться как обычные исключения Python) и SIGINT
— это
преобразовано в KeyboardInterrupt исключение
, если родительский процесс
не изменил это.
Обработчик определенного сигнала, однажды установленный, остается установленным до тех пор, пока он
явно сбросить (Python эмулирует интерфейс стиля BSD независимо от
базовая реализация), за исключением обработчика для SIGCHLD
, который следует за базовой реализацией.
Обработчик сигнала Python не выполняется внутри сигнала низкого уровня (C) обработчик. Вместо этого обработчик сигналов низкого уровня устанавливает флаг, который сообщает виртуальная машина для выполнения соответствующего обработчика сигналов Python в более поздний момент (например, в следующей инструкции байт-кода).Это имеет последствия:
Нет смысла отлавливать синхронные ошибки, такие как SIGFPE
или SIGSEGV
, которые вызваны недопустимой операцией в коде C. питон
вернется из обработчика сигнала в код C, который, вероятно, вызовет
снова тот же сигнал, из-за чего Python явно зависает. Из Python 3.3
и далее вы можете использовать модуль Faulthandler
для сообщения о синхронном
ошибки.
Длительное вычисление, реализованное исключительно на C (например, обычное сопоставление выражений в большом тексте) может выполняться без прерывания для произвольное количество времени, независимо от полученных сигналов.Питон обработчики сигналов будут вызываться по окончании расчета.
Обработчики сигналов Python всегда выполняются в основном потоке Python,
даже если сигнал был получен в другом потоке. Это означает, что сигналы
не может использоваться как средство межпоточного взаимодействия. Ты можешь использовать
примитивы синхронизации из модуля threading
вместо этого.
Кроме того, только основной поток может устанавливать новый обработчик сигнала.
Переменные, определенные в модуле signal
:
сигнал.
SIG_DFL
Это один из двух стандартных вариантов обработки сигналов; он просто выполнит
функция по умолчанию для сигнала. Например, в большинстве систем
действие по умолчанию для SIGQUIT
— сбросить ядро и выйти, в то время как
действие по умолчанию для SIGCHLD
— просто игнорировать его.
сигнал.
SIG_IGN
Это еще один стандартный обработчик сигналов, который просто игнорирует данный сигнал.
сигнал.
SIGABRT
Прервать сигнал от прервать (3) .
сигнал.
SIGALRM
Сигнал таймера от аварийного сигнала (2) .
Доступность: Unix.
сигнал.
SIGBREAK
Прерывание с клавиатуры (CTRL + BREAK).
Наличие: Windows.
сигнал.
SIGBUS
Ошибка шины (неправильный доступ к памяти).
Доступность: Unix.
сигнал.
SIGCHLD
Дочерний процесс остановлен или завершен.
Наличие: Windows.
сигнал.
SIGCLD
Псевдоним SIGCHLD
.
сигнал.
SIGCONT
Продолжить процесс, если он в настоящее время остановлен
Доступность: Unix.
сигнал.
SIGFPE
Исключение с плавающей точкой. Например, деление на ноль.
См. Также
ZeroDivisionError
возникает, когда второй аргумент деления
или операция по модулю равна нулю.
сигнал.
SIGHUP
Обнаружено зависание управляющего терминала или завершение управляющего процесса.
Доступность: Unix.
сигнал.
SIGILL
Незаконная инструкция.
сигнал.
СИГНАЛ
Прерывание с клавиатуры (CTRL + C).
Действие по умолчанию — вызвать KeyboardInterrupt
.
сигнал.
SIGKILL
Сигнал уничтожения.
Его нельзя поймать, заблокировать или проигнорировать.
Доступность: Unix.
сигнал.
СИГПАЙП
Сломанная труба: запись в трубу без считывателей.
По умолчанию сигнал игнорируется.
Доступность: Unix.
сигнал.
SIGSEGV
Ошибка сегментации: недопустимая ссылка на память.
Этот модуль предоставляет механизмы для использования обработчиков сигналов в Python. Некоторые общие правила работы с сигналами и их обработчиками:
После установки обработчик определенного сигнала остается установленным, пока
явно сбросить (Python эмулирует интерфейс стиля BSD независимо от
базовая реализация), за исключением обработчика для SIGCHLD
, который следует за базовой реализацией.
Невозможно временно «заблокировать» сигналы от критических участков (т.к. это поддерживается не всеми разновидностями Unix).
Хотя обработчики сигналов Python вызываются асинхронно, пока Python пользователь обеспокоен, они могут возникать только между «атомарными» инструкциями Интерпретатор Python. Это означает, что сигналы, поступающие при длительных вычислениях реализовано исключительно на C (например, сопоставление регулярных выражений на больших массивах text) может быть отложено на произвольное время.
Когда сигнал поступает во время операции ввода / вывода, возможно, что ввод / вывод операция вызывает исключение после возврата обработчика сигнала. Это зависит от семантики базовой системы Unix в отношении прерванной системы звонки.
Поскольку обработчик сигнала C всегда возвращается, нет смысла ловить
синхронные ошибки, такие как SIGFPE
или SIGSEGV
.
Python по умолчанию устанавливает небольшое количество обработчиков сигналов: SIGPIPE
игнорируется (поэтому об ошибках записи в каналах и сокетах можно сообщать как об обычных
Исключения Python) и SIGINT
переведен в KeyboardInterrupt
исключение.Все это можно изменить.
Следует проявлять осторожность, если и сигналы, и потоки используются в одном
программа. Главное, что нужно помнить при использовании сигналов и потоков
одновременно: всегда выполнять signal ()
операций в основном потоке
исполнения. Любой поток может выполнить alarm ()
, getsignal ()
, pause ()
, setitimer ()
или getitimer ()
; только основной поток
может установить новый обработчик сигнала, и основной поток будет единственным,
получать сигналы (это обеспечивается модулем Python signal
, даже
если реализация базового потока поддерживает отправку сигналов в
отдельные потоки).Это означает, что сигналы нельзя использовать как средство
межпотоковое общение. Вместо этого используйте замки.
Переменные, определенные в модуле signal
:
сигнал.
SIG_DFL
Это один из двух стандартных вариантов обработки сигналов; он просто выполнит
функция по умолчанию для сигнала. Например, в большинстве систем
действие по умолчанию для SIGQUIT
— сбросить ядро и выйти, в то время как
действие по умолчанию для SIGCHLD
— просто игнорировать его.
сигнал.
SIG_IGN
Это еще один стандартный обработчик сигналов, который просто игнорирует данный сигнал.
SIG *
Все номера сигналов определены символически. Например, сигнал зависания
определяется как сигнал .SIGHUP
; имена переменных идентичны
имена, используемые в программах на C, как показано в
. Страница руководства Unix для
‘ signal ()
’ перечисляет существующие сигналы (в некоторых системах это сигнал (2) , в других список находится в сигнал (7) ).Обратите внимание, что
не все системы определяют одинаковый набор имен сигналов; только те имена, которые определены
система определяется этим модулем.
сигнал.
CTRL_C_EVENT
Сигнал, соответствующий событию нажатия клавиши Ctrl + C . Этот сигнал может
может использоваться только с os.kill ()
.
Наличие: Windows.
сигнал.
CTRL_BREAK_EVENT
Сигнал, соответствующий событию нажатия клавиши Ctrl + Break .Этот сигнал может
может использоваться только с os.kill ()
.
Наличие: Windows.
сигнал.
НСИГ
На единицу больше, чем самый высокий номер сигнала.
сигнал.
ITIMER_REAL
Уменьшает интервал таймера в реальном времени и выдает SIGALRM
по истечении срока.
сигнал.
ITIMER_VIRTUAL
Уменьшает интервал таймера только во время выполнения процесса и доставляет SIGVTALRM по истечении срока.
сигнал.
ITIMER_PROF
Уменьшает интервал таймера как при выполнении процесса, так и при система выполняется от имени процесса. Вместе с ITIMER_VIRTUAL, этот таймер обычно используется для профилирования времени, потраченного приложением в пространстве пользователя и ядра.SIGPROF доставляется по истечении срока.
Сигнальный модуль
определяет одно исключение:
сигнал.
ItimerError
Возникает, чтобы сигнализировать об ошибке из базового setitimer ()
или getitimer ()
реализация. Ожидайте эту ошибку, если недопустимый
интервальный таймер или отрицательное время передается на setitimer ()
.
Эта ошибка является подтипом IOError
.
Сигнальный модуль
определяет следующие функции:
сигнал.
тревога
( раз ) Если время не равно нулю, эта функция запрашивает, чтобы сигнал SIGALRM
был
отправлено в процесс за раз за секунд. Любой ранее запланированный сигнал тревоги
отменено (в любое время можно запланировать только один будильник). Возвращаемое значение
затем количество секунд до срабатывания любого ранее установленного будильника.
доставлен.Если время равно нулю, сигнал тревоги не запланирован, и любой запланированный сигнал тревоги
отменен. Если возвращаемое значение равно нулю, сигнализация в настоящее время не запланирована. (Видеть
страница руководства Unix alarm (2) .) Доступность: Unix.
сигнал.
getsignal
( signalnum ) Вернуть текущий обработчик сигнала для сигнала signalnum . Возвращаемое значение
может быть вызываемым объектом Python или одним из специальных значений сигнал.SIG_IGN
, signal.SIG_DFL
или Нет
. Вот, signal.SIG_IGN
означает, что сигнал ранее игнорировался, signal.SIG_DFL
означает, что способ обработки сигнала по умолчанию был
ранее использовался, и Нет
означает, что предыдущий обработчик сигнала не был
установлен с Python.
сигнал.
пауза
()Заставить процесс засыпать до получения сигнала; соответствующий обработчик затем будет вызван.Ничего не возвращает. Не в Windows. (См. Справочную страницу Unix сигнал (2) .)
сигнал.
setitimer
( который , секунд [, интервал ])UNIX / Linux предлагают специальные механизмы для связи между каждым отдельным процессом. Одним из этих механизмов являются сигналы, и они относятся к различным методам связи между процессами (Inter Process Communication, сокращенно IPC).
Короче говоря, сигналы — это программные прерывания, которые отправляются программе (или процессу) для уведомления программы о значимых событиях или запросах к программе, чтобы запустить специальную кодовую последовательность.Программа, получившая сигнал, либо останавливает, либо продолжает выполнение своих инструкций, завершает работу с дампом памяти или без нее, или даже просто игнорирует сигнал.
Хотя это определено в стандарте POSIX, реакция на самом деле зависит от того, как разработчик написал сценарий и реализовал обработку сигналов.
В этой статье мы объясним, что такое сигналы, покажем вам, как отправить сигнал другому процессу из командной строки, а также как обработать полученный сигнал.Среди других модулей программный код в основном основан на сигнальном модуле. Этот модуль соединяет соответствующие заголовки C вашей операционной системы с миром Python.
В системах на базе UNIX существует три категории сигналов:
Системные сигналы (аппаратные и системные ошибки): SIGILL, SIGTRAP, SIGBUS, SIGFPE, SIGKILL, SIGSEGV, SIGXCPU, SIGXFSZ, SIGIO
Сигналы устройства: SIGHUP, SIGINT, SIGPIPE, SIGALRM, SIGCHLD, SIGCONT, SIGSTOP, SIGTTIN, SIGTTOU, SIGURG, SIGWINCH, SIGIO
Пользовательские сигналы: SIGQUIT, SIGABRT, SIGUSR1, SIGUSR2, SIGTERM
Каждый сигнал представлен целым числом, а список доступных сигналов сравнительно длинный и не согласован между различными вариантами UNIX / Linux.В системе Debian GNU / Linux команда kill -l
отображает следующий список сигналов:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN + 1 36) SIGRTMIN + 2 37) SIGRTMIN + 3
38) SIGRTMIN + 4 39) SIGRTMIN + 5 40) SIGRTMIN + 6 41) SIGRTMIN + 7 42) SIGRTMIN + 8
43) SIGRTMIN + 9 44) SIGRTMIN + 10 45) SIGRTMIN + 11 46) SIGRTMIN + 12 47) SIGRTMIN + 13
48) SIGRTMIN + 14 49) SIGRTMIN + 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Сигналы с 1 по 15 примерно стандартизированы и в большинстве систем Linux имеют следующее значение:
Чтобы отправить сигнал процессу в терминале Linux, вы вызываете команду kill
с номером сигнала (или именем сигнала) из приведенного выше списка и идентификатором процесса (pid).В следующем примере команда отправляет сигнал 15 (SIGTERM) процессу с pid 12345:
$ убить -15 12345
Эквивалентный способ — использовать имя сигнала вместо его номера:
$ kill -SIGTERM 12345
Какой способ вы выберете, зависит от того, что вам удобнее. Оба способа имеют одинаковый эффект. В результате процесс получает сигнал SIGTERM и немедленно завершается.
Начиная с Python 1.4, библиотека сигналов
является регулярным компонентом каждой версии Python. Чтобы использовать библиотеку сигналов
, сначала импортируйте библиотеку в свою программу Python следующим образом:
импортный сигнал
Захват и правильная реакция на полученный сигнал осуществляется функцией обратного вызова — так называемым обработчиком сигнала. Довольно простой обработчик сигнала с именем receiveSignal ()
можно записать следующим образом:
def receiveSignal (signalNumber, frame):
print ('Получено:', signalNumber)
возвращение
Этот обработчик сигнала не делает ничего, кроме сообщения номера полученного сигнала.Следующим шагом является регистрация сигналов, которые перехватывает обработчик сигналов. Для программ Python все сигналы (кроме 9, SIGKILL) могут быть пойманы в вашем скрипте:
если __name__ == '__main__':
# регистрируем сигналы, которые нужно поймать
signal.signal (сигнал.SIGHUP, receiveSignal)
signal.signal (сигнал.SIGINT, receiveSignal)
signal.signal (сигнал.SIGQUIT, receiveSignal)
signal.signal (сигнал.SIGILL, receiveSignal)
signal.signal (signal.SIGTRAP, receiveSignal)
сигнал.сигнал (сигнал.SIGABRT, получитьСигнал)
signal.signal (сигнал.SIGBUS, receiveSignal)
сигнал.сигнал (сигнал.SIGFPE, получитьСигнал)
# signal.signal (signal.SIGKILL, receiveSignal)
signal.signal (сигнал.SIGUSR1, receiveSignal)
signal.signal (сигнал.SIGSEGV, receiveSignal)
signal.signal (сигнал.SIGUSR2, receiveSignal)
signal.signal (сигнал.SIGPIPE, receiveSignal)
signal.signal (сигнал.SIGALRM, receiveSignal)
signal.signal (сигнал.SIGTERM, receiveSignal)
Затем мы добавляем информацию о текущем процессе и определяем идентификатор процесса с помощью метода getpid ()
из модуля os
.В бесконечном цикле и
мы ждем входящих сигналов. Мы реализуем это с помощью еще двух модулей Python — os и time. Мы также импортируем их в начале нашего скрипта Python:
импорт ОС
время импорта
В цикле while
нашей основной программы оператор печати выводит «Waiting …». Вызов функции time.sleep ()
заставляет программу ждать три секунды.
# выходной текущий идентификатор процесса
print ('Мой PID:', os.GETPID ())
# ждем в бесконечном цикле сигналов
в то время как True:
print ('Wa
.