2

PHP経由で文字列をシリアル ポートに送信しようとしています。しかし、実行すると次のエラーが発生します。

警告: fopen(com8) [function.fopen]: ストリームを開くことができませんでした: C:\server\web\arduino\index.php 行 15 で許可が拒否されました

<?php
    if(isset($_GET['command'])){
        $fp =fopen("com8", "w");
        $i = ($_GET['command'] > 0) ? $_GET['command'] : 0;
        echo "<p>Wrote $i </p>";
        fwrite($fp, chr($i));
        sleep(3);
        fclose($fp);
    }
?>

Arduinoスクリプト

// Includes

#include <Servo.h>

// Aanmaken van de variabelen voor in de code

int ledPin = 13;
int motorPin = 12;
int USBnumber = 0;
Servo stuurServo;   // Create servo object to control a servo.
int pos = 90;       // Variable to store the servo position.


// Make the first setup.
void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(motorPin, OUTPUT);
    stuurServo.attach(11);
    Serial.begin(9600);
    stuurServo.write(pos);
}

void loop()
{
    if (Serial.available() > 0) {
        USBnumber = Serial.read();
    }

    if (USBnumber > 0) {
        if (USBnumber == 1){ // Blink LED
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
            digitalWrite(ledPin, HIGH);
            delay(1000);
            digitalWrite(ledPin, LOW);
            delay(500);
        }else if(USBnumber == 2){ // Motor on for five seconds
            digitalWrite(motorPin, HIGH);
            delay(5000);
            digitalWrite(motorPin, LOW);
            delay(500);
        }else if(USBnumber == 3){ // Control servo +10 graden
            if(pos != 180){
              pos + 10;
              stuurServo.write(pos);
              delay(500);
            }
        }else if(USBnumber == 4){ // Control servo -10 graden
            if(pos != 0){
              pos - 10;
             stuurServo.write(pos);
            delay(500);
            }
        }else if(USBnumber == 5){ // Control servo left
             pos = 0;
             stuurServo.write(pos);
             delay(500);
        }else if(USBnumber == 6){ // Control servo right
             pos = 180;
             stuurServo.write(pos);
             delay(500);
        }else{
            delay(500);
        }
        USBnumber = 0;
    }
}
4

2 に答える 2

2

wの末尾に+を追加して(つまりw+ )、以下を使用してみてください。

'w+' - 読み取りおよび書き込み用に開きます。ファイルポインタをファイルの先頭に置き、ファイルの長さをゼロに切り詰めます。ファイルが存在しない場合は、作成してみてください。

$fp = fopen("com8", "w+");

参照: http://php.net/manual/en/function.fopen.php

于 2013-01-15T00:52:50.173 に答える
1

fopen() と "w+" の後の sleep(2)

$fp =fopen("com8", "w");
sleep(2);
于 2014-02-17T02:35:53.373 に答える