LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: kerwac em 01 de Novembro de 2012, 17:50
-
Boa tarde
Estou aqui com um problema e parece não perceber aonde está o erro.
É possivel obter ajuda?
Estou a utilizar o widows 7 e o xamp para server. Ao clicar no site no botao desbloquear o servo roda.Mas estou a obter o erro""Warning: fclose() expects parameter 1 to be resource, null given in C:\xampp\htdocs\Arduino\seguranca.php on line 50##
Código Arduino:
#include <Servo.h>
#define VERMELHO 2
#define VERDE 4
Servo objeto_Servo ;
void setup()
{
Serial.begin(9600);
objeto_Servo.attach(10);
objeto_Servo.write(0);
pinMode(VERMELHO, OUTPUT);
pinMode(VERDE, OUTPUT);
digitalWrite(VERMELHO, HIGH);
digitalWrite(VERDE, LOW);
}
void loop()
{
char senha;
senha = Serial.read();
if(senha == '1')
{
desbloqueia_Sistema();
}
else
if(senha == '2')
{
bloqueia_sistema();
}
}
void desbloqueia_Sistema()
{
Serial.println("Sistema Desbloqueado");
digitalWrite(VERMELHO, LOW);
digitalWrite(VERDE, HIGH);
objeto_Servo.write(90);
}
void bloqueia_sistema()
{
Serial.println("Sistema Bloqueado");
digitalWrite(VERMELHO, HIGH);
digitalWrite(VERDE, LOW);
objeto_Servo.write(0);
}
Código PHP:
<?php
define('SENHA_DESBLOQUEIO', 123456);
define('SENHA_CORRETA', 1);
define('BLOQUEAR', 2);
$senha = $_POST['txtSenha'];
$contador = 3;
if($senha == SENHA_DESBLOQUEIO)
{
//No windows basta mudar a porta.
//$porta = fopen("COM3", "w");/dev/ttyUSB0
$porta = fopen("COM3","w");
if(!$porta)
{
echo "ERRO: A porta serial nao pode ser aberta!
Verifique as permissoes da porta";
}
else
fwrite($porta,SENHA_CORRETA);
echo "O sistema foi destravado
e o acesso foi permitido";
fclose($porta);
}
else
echo "ERRO: Senha INCORRETA";
if($senha == BLOQUEAR)
{
$porta = fopen("COM3","w");
if(!$porta)
{
echo "ERRO: A porta serial nao pode ser aberta!
Verifique as permissoes da porta";
}
else
fwrite($porta,BLOQUEAR);
}
fclose($porta);
?>
-
Penso que o problema estará no facto de estar a fazer o fclose 2 vezes e ao chegar ao ultimo fclose (quase no fim do script) a $porta já não existir. Talvez fosse solução, apenas usar o fclose apenas no final do script.
Além disso penso que no seguinte bloco de código, faltem as { } de modo a que as três linhas de código façam parte do bloco do "else":
else
{ // falta esta chaveta
fwrite($porta,SENHA_CORRETA);
echo "O sistema foi destravado e o acesso foi permitido";
fclose($porta);
} // falta esta chaveta
Sem estas chavetas, o echo e o fclose são executadas mesmo que não tenha sido possivel abrir a porta.
Espero ter ajudado.