Skip to content

bookwho2063/BlackBox

Repository files navigation

미니 프로젝트 - 블랙박스 만들기 I (ARM디바이스 프로그래밍)

1. 카메라, MicroSD 등 필수 디바이스들이 정상적인지 인식되는지 확인한다.

- 연결된 디바이스 리스트 조회 (list getDeviceList)
- /home/유저정보/blackbox 폴더 연결 가능 여부 체크 (checkConnFolder)
-> 연결 시 True, 연결 안될 시 False (후처리로 False 일 경우 1분뒤에 다시 연결해서 True 뜰때까지 반복 처리 고려) 

2. 현재 시간으로된 폴더를 생성한다.

(char* getCurrentTime())
(chkFolder(char* currectTime))
ex) blackbox/yyyymmdd(여기까지 default 생성)/20180530_09 년월일시까지 폴더이름 적용 (YYYYMMDD_HH)
- 현재 만들려는 일자 폴더가 존재한다면??
- (개발용) : 존재하는 폴더와 하위파일을 삭제한 뒤 폴더 생성 수행
- (개발용2) : 현재 시간대 파일 존재 시 mkdir 미 수행
- 현재 만들려는 시간 폴더가 존재하는지 여부 확인
- 현재 만들려는 시간 폴더가 존재 할 경우 -> 프로세스 종료?????
- BIOS TIME 을 기준으로 폴더 생성 (OS 타임이 아닌 BIOS타임으로 처리)
- yyyymmdd_HH:24

3. 녹화를 시작하기전에 디스크 용량을 확인한다.

- 폴더는 /home/userName/workspace/blackbox로 한다.
	- 제약을 걸어주기위해 blackbox의 용량을 1기가로 제한시켜줄 수 있으면 그렇게 전처리해준다
- blackbox 폴더의 현재 용량을 체크한다 
- (방안1) 현재 소스가 실행되고있는 OS를 조회, OS에 따라 드라이브 마운트 경로가 다르므로 OS별 statfs 마운트 경로 적용 처리
	- (방안2) statfs(파일시스템상태) 구조체를 사용하지않고, 재귀함수를 이용하여 지정경로 하위 파일 전체 사이즈 체크
- (디스크용량기준) 10기가의 용량이있다는 기준으로 잡고 디렉토리 내 사이즈 계산하여 남은 용량 체크
용량이 부족한 경우 blackbox폴더의 하위 디렉토리중 가장 오래된 폴더를 삭제한다.  
용량이 90% 이상이면 오래된 폴더 삭제한다
blackbox/YYYYMMDD/YYYYMMDD_HH.mpg

4. 현재 시간으로된 녹화 파일을 생성한다.

- ex) 20180530_091023.mpg 초까지 파일명에 적용
- 파일 화질 설정 (여러 환경에서 )
- (Thread 처리) 
   녹화의 시작과 끝(+저장) 까지를 1사이클로 체크하는 함수 작성
   쓰레드를 이용하여 함수 수행 (10분 혹은 1시간 사이클로 동시처리 혹은 시작-끝 중복(겹침)처리)
- (멀티프로세스 처리)
   녹화 - 종료 - 저장 처리를 하는 하나의 프로세스를 스케줄러를 이용하여 반복 수행

- (메모리관리)
  1시간 > 10분
  1시간 : 메모리 관리필요
  10분 : 1시간치 영상파일로 합치는 작업 필요

5. 실행 환경 관리 (Thread / Crontab)

- (1) 쓰레드를 이용하여 하나의 프로세스로 처리
	1. 용량 체크 및 폴더 삭제 쓰레드 처리
	2. 폴더 생성 및 영상 녹화 쓰레드 처리
- (2) Crontab을 이용하여 각각의 함수들을 독립적으로 수행
	1. 용량 체크 및 폴더 삭제
	  1.1 주기 0 * * * *
	  1.2 파일명 deleteFolder.c
	  1.3 실행파일명 deleteFolder
	  1.4 crontab -e 1 * * * * /home/nvidia/test/jk/deleteFolder
	
	2. 폴더 생성 및 영상 녹화 수행
	  2.1 주기 1 * * * *
	  2.2 파일명 main.c, function.c, function.h
	  2.4 실행파일명 main
	  2.5 crontab -e 1 * * * * /home/nvidia/test/jk/main

################################################################################# ################################################################################# ################################################################################# Reference

func #1. 디바이스 체크 func #2. 디스크 용량 체크(적으면 녹화 폴더중 가장 오래된 녹화파일 및 해당 폴더 삭제) func #3. ROOT\고정경로\녹화폴더생성(yyyymmdd_HH) func #4. 녹화 파일 생성(녹화파일 생성 시 메모리 관리가 필요하다), 녹화파일 생성 후 저장 시 후처리 필수 func #5. 녹화 파일 저장 func #6. 녹화 파일간 메모리 관리 참조자료(http://blog.naver.com/PostView.nhn?blogId=bieemiho92&logNo=220676489002)

	   영상녹화관련(https://076923.github.io/posts/Python-opencv-20/)
	   영상녹화관련2(http://blog.naver.com/PostView.nhn?blogId=leapforfly&logNo=90170937094)

check #1. 녹화파일이 시간단위로 있는게 메모리 부하가 높은가, 10분단위로 끊는게 부하가 높은가? check #2. 녹화파일을 매시 정각에 만든다고 가정할때 00초에 기존녹화파일을 저장하는것과 바로 녹화하는것을 별도로 구성해야하는데 이부분에서 메모리간의 간섭이 크게 일어 날 듯함 이부분 처리가 필요함 check #3. 녹화파일을 저장/생성 할때의 메모리 관리

################################################################################# ################################################################################# #################################################################################

About

Black Box Example

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published