Я могу запустить свой скрипт Python в фоновом режиме для управления двумя сервомашинами, автоматически запуская сценарий при загрузке с помощью sudo crontab -e. Я изменил сценарий, поэтому теперь я постоянно записываю текущую позицию сервоприводов в файл horz.txt и vert.txt и используя эти файлы для инициализации степпиков в их исходное положение, чтобы снова найти домашнюю позицию после потери мощности. Скрипт отлично работает с кодом horz.txt и vert.txt, который я добавил, когда я вручную запускал скрипт из командной строки на черном экране с использованием sudo python mystepper6.py, но он не запускается автоматически при запуске, и он не запускается автоматически показывается, когда я запускаю ps ax в командной строке. Я добавил немного дополнительного кода, чтобы покачивать сервомашины до запуска основной программы, и сервоприводы автоматически покачиваются, как запрограммировано в sudo crontab -e, но затем он просто останавливается и не будет продолжать находить исходную позицию. Кажется, что-то с новым кодом, но я не знаю, что это может быть. Моя строка sudo crontab -e - @reboot (sleep2; python /home/pi/mystepper6.py) &. Ниже приведен скрипт для mystepper6.py.Crontab больше не работает Raspberry Pi Python скрипт в фоновом режиме, но все еще работает вручную
Сценарий ниже был сокращен, чтобы показать соответствующие строки из-за ограниченного пространства, доступного в этом сообщении. Перезагрузка sudo ведется без сообщения об ошибке рядом с нижним, где прокомментировано «перемещение в исходное положение» (оно не перемещается). Я могу печатать скобки regv и adjusth до этой точки, поэтому переменным надлежащим образом присваивается значение из файлов .txt в этой точке. Когда я вручную запускаю mystepper6.py из командной строки, он работает отлично.
Я потратил waaay слишком много часов на эту проблему и купил две электронные книги безрезультатно. Пожалуйста помоги.
import RPi.GPIO as gpio # import library RPi.GPIO gpio=use general purpose input output pin names
import time # import time library
PINSh = [27,10,18,23] # variable 'PINS' holds a list of gpio pin numbers
SEQAh = [(27,),(10,),(18,),(23,)]
PINSv = [4,17,22,24] # variable 'PINS' holds a list of gpio pin numbers
SEQAv = [(4,),(17,),(22,),(24,)]
DELAY = 0.01 # time between motor steps (too small of a number then the motor stalls)
alpha = 140 # horizontal full scale viewing angle in motor counts 128 counts = 360 degrees
beta = 30 # was 15 vertical full scale viewing angle in motor counts 128 counts = 360 degrees
gpio.setmode(gpio.BCM) # tells RPi.GPIO we want to use pin names (BCM is the mfg)
for pin in PINSh: # pin is a variable name assigned a new value each loop; PINS is a list
gpio.setup(pin, gpio.OUT) # this says we want to use 'pin' as an output
for pin in PINSv: # pin is a variable name assigned a new value each loop; PINS is a list
gpio.setup(pin, gpio.OUT)
def stepper(sequence, pins): # def says 'stepper' is the function name (like a variable), then parameters are inside()
for step in sequence:
for pin in pins:
if pin in step:
gpio.output(pin, gpio.HIGH)
else:
gpio.output(pin, gpio.LOW)
webcam_horz_home = open("horz.txt", "a")
webcam_horz_home.close()
webcam_vert_home = open("vert.txt", "a")
webcam_vert_home.close()
# load last position prior to power down
webcam_horz_home = open("horz.txt", "r")
rows = webcam_horz_home.readlines();
for row in rows:
adjusth = int(row)
webcam_horz_home.close()
webcam_vert_home = open("vert.txt", "r")
rows = webcam_vert_home.readlines();
for row in rows:
adjustv = int(row)
webcam_vert_home.close()
counter = 0 # move to home position
while counter < adjustv:
stepper(SEQAv, PINSv)
counter = counter + 1
# CONTINUAL PAN AND TILT OPERATION (box pattern):
Моя линия crontab -e - @reboot (sleep2; python/home/pi/mystepper6.py) & – Mark
Что делать, если вы попробуете 'sudo chmod + x your_script' и добавьте скрипт в crontab root через' sudo crontab -e'? Выпишите все пути от root до файла в crontab. Также могут возникать проблемы с директивой '@ reboot' (я прочитал довольно много жалоб на эту особенную функцию cron) – jDo
jDo, просто попробовал свое предложение следующим образом: @reboot (sleep2; sudo chmod + x python/home/pi/mystepper6.py) и от sudo crontab -e и получили ту же проблему. Правильно ли я ввел ваше предложение? – Mark