2014-12-01 6 views
0

이 페이지를 생성하는 cgi-bin에 스크립트가 있습니다. 그 의도는 을 패닝 웹 카메라 용 인터페이스로 사용하는 것입니다. 카메라가 팬을 한 다음 신속하게 중앙 위치로 돌아갑니다. 페이지가로드 될 때마다 모든 스크립트가 연속적으로 호출되어 z.py로 끝나기 때문입니다. 이 프로그램을 수정하여 선택이 발생할 때까지 스크립트가 실행되지 않도록하려면 어떻게해야합니까? 그대로, 페이지가로드 될 때 모든 것이 실행됩니다. 이는 항상 중심으로 다시 이동합니다.CGI 스크립트 프로그래밍 지원이 필요합니다

#! /bin/sh 
echo "content-type: text/html" 
echo 
echo "<!DOCTYPE html><html><head><title>pan camera</title></head>" 
echo "<body>" 

echo "<form action=\"g.pt1\" method=\"get\">" 
echo "<select name=\"letter\" onchange=\"submit();\">" 
echo " <option value=\"w\">w</option>" 
echo " <option value=\"a\">a</option>" 
echo " <option value=\"s\">s</option>" 
echo " <option value=\"d\">d</option>" 
echo " <option value=\"z\">z</option>" 
i=0 
for i in a s d w z 
     do 
       echo " $i $(./$i.py)" 
     done 
echo "</select></form>" 
echo "<iframe src=\"localhost:8888/?action=stream\" width=\"330\" height=\"260\">" 
echo " <p>Your browser does not support iframes.</p>" 
echo "</iframe>" 
echo "</body></html>" 
+0

당신이 말하는 것처럼 "모든 것이 실행됩니다"라고 생각하지 않습니다. for/do/echo 문은 일련의 문자를 나열하고 파이썬 파일을 제안하지만, 단지 에코되고 실행되지 않습니다. 여기서 볼 수 있듯이 선택 상자를 변경하면 CGI를 통해 g.pt1이 호출됩니다. 아마도 w, a, s, d 또는 z가 선택되었는지 여부와 카메라를 이동해야 할 것입니다. 카메라가 뒤로 움직이면'g.pt1'이 무엇을 하던지에 기인한다고 생각합니다. –

+0

$()는 명령 대체이므로 echo를 통해 exec 할 수 있습니다. 또한/dev/ttyACM0에 액세스 할 수 있도록 www 데이터 그룹에 대한 일부 BS 권한이 있습니다. –

답변

0

주 -이 아니라 '웹 프로그래머'...

은 '모든'위의 스크립트인가? (또는 단지 출력?)

또한이 유형의 사용에서는 모든 인용 부호를 '이스케이프'하지 않으려면 '여기있는 문서'를 사용하는 것이 좋습니다.

'중간'에코 라인이있는 FOR LOOP는 '매번'페이지가로드 될 때마다 실행됩니다.

$은 (./$ i.py)는 ..., s.py 다음 순서대로 a.py를 실행 한 후 z.py

루프를 제거하고이 논리를 변경 '사용자 입력을 얻으려고'하는 것이 좋을 것입니다.