dongque1958 2013-01-14 10:04
浏览 113
已采纳

Arduino fopen错误

I am trying to send a string through PHP to a serial port. But I get this error when I exectute it:

Warning: fopen(com8) [function.fopen]: failed to open stream: Permission denied in C:\server\web\arduino\index.php on line 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 script

// 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;
    }
}
  • 写回答

2条回答 默认 最新

  • douren2395 2013-01-15 00:52
    关注

    Try using the following, with the addition of + at the end of w (i.e. w+).

    'w+' - Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

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

    See: http://php.net/manual/en/function.fopen.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用