저는 저속 촬영 사진을 위해 Raspbian을 실행하는 rPi Zero를 사용했습니다. 시작 시 쉘 스크립트가 호출된 다음 Python 스크립트가 시작됩니다.
Python 스크립트는 x개의 사진을 찍은 다음 다른 폴더로 이동합니다. 이렇게 하면 현장에서 배터리 전원으로 rPi를 사용할 수 있고 전원이 끊기며 다음에 집에서 부팅할 때 쉘이 .py를 찾을 수 없어 데스크탑으로 부팅됩니다. 그런 다음 필요한 파일을 복사하고 pi에서 삭제한 다음 다시 찾을 수 있는 폴더로 스크립트를 다시 옮긴 다음 전원을 끄고 다음 작업을 위해 준비합니다.
제 질문은 라이브 스크립트를 진행하는 도중에 배터리가 3/4 정도 방전된 경우에도 집에서 배터리를 연결하고 종료하여 이미지를 복구할 수 있도록 프로세스에 콘센트를 구축할 수 있느냐는 것입니다.
이것은 내 스크립트입니다.
런처.sh:
cd /
cd home/pi/bbt
sudo python bbt.py
cd /
bbt.py:
import shutil
import os
import time
FRAMES = 1000
TIMEBETWEEN = 10
frameCount = 0
while frameCount < FRAMES:
imageNumber = str(frameCount).zfill(7)
os.system("raspistill -o firstTLimage%s.jpg"%(imageNumber))
frameCount += 1
time.sleep(TIMEBETWEEN - 6)
shutil.move('/home/pi/bbt/bbt.py' , '/home/pi/bbt/TLbackup/bbt.py
답변1
나는 당신이 이것을하지 않는 것이 좋습니다. 시작 코드가 파일을 찾을 수 있는지 여부와 같은 부작용을 사용하면 디버깅이 더 어려워지고 오류 조건(배터리 오류)과 같은 문제를 처리하기가 더 어려워집니다. 스크립트는 관심 있는 변수를 추적한 다음 그에 따라 작동해야 합니다.
이는 이미지가 이미 존재하는지 확인하고 존재하지 않는 경우에만 이미지를 가져오는 스크립트를 다시 작성한 것입니다. 또한 샷 간의 일관된 타이밍을 보장하는 메커니즘을 추가합니다.
import time
import os
FRAMES = 1000
TIMEBETWEEN = 10
FILENAME = 'firstTLimage % 07d.jpg'
if not os.path.exists(FILENAME % 0):
next_time = time.time()
for frame_count in range(FRAMES):
time.sleep(max(0, next_time - time.time()))
next_time += TIMEBETWEEN
os.system("raspistill -o " + FILENAME % frame_count)
노트:테스트해보지는 않았으므로 템플릿으로 사용하세요.