2017-09-28 2 views
0

다른 파일과 함께 작동하는 이유는 내 머리를 알 수 없으며 공유 파일과 맞지 않습니다. 이 수수께끼를 풀 수있는 영웅이 내 전사가 될 것입니다.PHP/Python 기괴한 동작

그래서 내가하려는 것은 PHP 스크립트가 데이터를 파일에 씁니다. 0,1 또는 -1입니다. 같은 텍스트 파일이 파이썬 스크립트에서 읽혀지며 서보 모터가 -1 또는 1과 0을 기준으로 왼쪽 또는 오른쪽으로 이동합니다. 내 스스로 더미 텍스트 파일을 만들고 파이썬이 그것을 읽게 만들면 매력처럼 작동하지만 파이썬 스크립트가 PHP 수정 된 텍스트 파일을 읽을 때 콘솔의 값을 인쇄하지만 서보가 움직이지는 않습니다 !!! 읽기/쓰기 문제가 있거나 0과 1이 쓰여지는 방식이 있는지 나는 모른다. 여기에 코드가 있습니다.

PHP 스크립트 :

<?php 
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); 

if ($_POST['leftb'])   
{ echo "Left is pressed";  // If Left button is pressed 
    $txt = -1;}    // Set txt to -1 


else if ($_POST['rightb']) 
{ echo "Right is pressed";  // If Right button is pressed 
    $txt = 1;}     // Set txt to 1 


fwrite($myfile, $txt);  // Write the value to file 
fclose($myfile);    // Close file 



sleep(1);      // Wait 1 second 

$myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); 
$txt = 0;      // Reset previous value to 0 
fwrite($myfile, $txt);  // Write to the same file 
fclose($myfile);    // Close the file 

?> 

파이썬 스크립트 : 당신이 볼 수 있듯이

# System initialization on Raspberry Pi 3 
import time 
import RPi.GPIO as GPIO 
initial = 5 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(38,GPIO.OUT) 
pwm=GPIO.PWM(38,50) 

# Set the servo position in the middle (5) 
pwm.start(5) 
position = initial 

while True: 

    f = open("newfile.txt","r") # Read file written by PHP for value 
    x = f.read(); 
    x = int(x)      # Make sure its an integer value 

    position = position + x  # Increment or decrement initial position 


    if position != initial:  # If position is different from initial position, update the servo position 
     pwm.ChangeDutyCycle(position) 
     print position   # Print to screen the current servo position 

    else: 
     pwm.stop()    # If no new position detected, stop the servo 


     f.close()    # Close the text file 
    time.sleep(0.8) 

, 일반 텍스트 파일은 두 프로그램 사이에 공유됩니다. 파일의 이름은 "newfile.txt"입니다. 필자는 수동으로 파일을 열 때 php scrip이 작성한 데이터를 볼 수 있으며 터미널에서 파이썬 출력을 볼 수도 있습니다. 실제로는 서보를 회전시키지 않습니다. 새로운 텍스트 파일을 만들고 수동으로 -1 또는 1 또는 0을 써서 서보가 완벽하게 움직이면 똑같은 일이 일어납니다.

2 개의 텍스트 파일이 서로 다른 이유는 무엇입니까? 하나의 문자와 다른 정수가 있습니까? 나는 정말로 도움을 사용할 수있다!

+0

개행을 비난합니다. Post'cat -vet newfile.txt' – bishop

+0

당신이 거기에서 의미하는 바가 전혀 없습니다. 당신이 의미하는 바를 친절하게 제발 주시겠습니까? 고마워요. @bishop –

+0

제 생각 엔 PHP로 편집 할 때 편집 할 때의 파일의 줄 끝이 일관성이없고 프로그램이 그것을 처리하지 못합니다. 'cat'은 유닉스 기계에서 명령입니다. '-vet' 인자는 파일에 인쇄 할 수없는 문자를 표시하기 위해 GNU/Linux 컴퓨터에서 작동합니다. 만약 당신이 그것을 가지고 있지 않다면, 나는 당신에게 파일의 실제 바이트를 보여줄 수있는 프로그램을 사용하고 줄 끝을 두 번 점검 할 것을 제안 할 것이다. 그리고 당신은 길잃은 비 인쇄 문자가 없다. – bishop

답변

0

두 파일의 인코딩이 같은지 확인 했습니까? 예 : (ASCII 대 유니 코드)?