Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hax0r3x

[Resolvido] Como fazer PHP acessar USB

Recommended Posts

Olá!

 

Preciso criar um sistema web que fará leitura/escrita na USB.

Já criei um script PHP que deveria enviar um dado para a USB e receber a resposta do dispositivo conectado (um Arduino).

Mas ao executar o script nada acontece, e pelo que testei, o script não está conseguindo ter permissão para utilizar a USB.

 

Alguem sabe se é alguma configuração do servidor Apache ou do próprio PHP?

 

obs. Estou rodando o servidor no Debian GNU/Linux, e meu usuário está no grupo 'dialout', o que dá permissão de utilizar a USB.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, muita calma nessa hora.

Você quer fazer isso no seu servidor local, não é? Não sei se é possível.

 

Agora se você quer fazer isso a partir de um servidor remoto, esquece, impossível.

O PHP roda do lado do servidor, ele não tem acesso nenhum ao computador cliente, muito menos às portas USB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem q usar funcoes de leitura de memoria da maquina pra fazer isso...

 

http://php.net/manua...rappers.php.php

 

você tem q ver qual porta usb o disponitivo esta conectado e le-la, eu ja vi o php conectando a porta COM, no proprio site do arduino tem uns scripts

 

 

@henrique, posteriormente procure um servidor chamado scada br...você vai gostar....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, obrigado por me responderem.

 

O que gostaria de fazer é:

Rodar um sistema web num servidor que tem um Arduino conectado na USB.

O cliente apenas conecta ao sistema web para visualização e controle de dados, enviando comandos para o Arduino.

Seria algo parecido com o software ScadaBr, só que bem mais simples.

 

Mas assim pessoal, eu já consegui fazer isso num servidor Xampp no Windows.

O problema é que preciso fazer em um servidor GNU/Linux (Debian) e parece que existe alguma permissão faltando.

O usuário já está no grupo de acesso leitura/escrita na USB mas o serviço Apache parece não conseguir fazer essa comunicação.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem q usar funcoes de leitura de memoria da maquina pra fazer isso...

 

http://php.net/manua...rappers.php.php

 

você tem q ver qual porta usb o disponitivo esta conectado e le-la, eu ja vi o php conectando a porta COM, no proprio site do arduino tem uns scripts

 

 

@henrique, posteriormente procure um servidor chamado scada br...você vai gostar....

 

E esse site aqui?

:seta: http://www.scadabr.org.br

 

Se for, na própria página sobre o projeto diz que ele é implementado em Java EE.

 

 

3. Como funciona o software ScadaBR?

 

O ScadaBR roda em qualquer computador que execute Java, ou seja, PCs rodando o Windows, Linux e outros sistemas operacionais. O ScadaBR executa dentro de um servidor de aplicações (sendo o Apache Tomcat a escolha padrão, incluída em algumas versões).

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Fiz o seguinte. Instalei o Xampp no servidor Debian e rodei meu script porem deu os seguintes erros:

Warning: fopen(/dev/ttyACM0) [function.fopen]: failed to open stream: Permissão negada in /opt/lampp/htdocs/comunicacaoSerial.php on line 7

Warning: fwrite() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/comunicacaoSerial.php on line 10

Warning: fgets() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/comunicacaoSerial.php on line 13

Warning: fclose() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/comunicacaoSerial.php on line 15

 

Alguem sabe como dou permissão de acesso (leitura/escrita) na USB para o serviço Xampp?

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

provavelmente...pera, você chegou a montar o dispositivo? pode nao estar lendo, pelo dispositivo nao estar montado.

 

@henrique, como dito por mim acima, eu OUVI DIZER, ou seja ,(nao tenho certeza e nao posso afirmar) eu nunca trabalhei com ele, apenas um amigo indicou...e o mesmo keria usar php pra fazer algo parecido com o amigo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos,

 

desculpe pela demora em responder.

Mas enfim, coloquei o Arduino na USB e verifiquei que o mesmo foi detectado no dispositivo /dev/ttyACM0

 

Então rodei meu script no Xampp e continuei com os erros que informei anteriormente :/

 

Segue meu código:

<!DOCTYPE html>

<?php

if(isset($_POST['valor']) && !empty($_POST['valor'])) {  

   $port = fopen('/dev/ttyACM0', 'w+');    
   sleep(2);

   fwrite($port, $_POST['valor']);
   sleep(2);

   $retorno = fgets($port);

   fclose($port);
}
?>

<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title>Arduino + PHP</title>
   </head>
   <body>
       <form method="post">
           Valor: <input type="text" name="valor" id="valor" value=""/>
           <input type="submit" value="Enviar"/><br/><br/>
           Retorno: <input type="text" name="resposta" id="resposta" value="<?php echo $retorno; ?>"/>       
       </form>
   </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifica antes se a porta esta sendo lida, você esta mandando direto...você deu chmod na porta? se eu nao me engano o dev seria uma pasta para links simbolicos...me corrijam se eu estiver errado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Igor,

 

A permissão do dispositivo é a seguinte:

crw-rw---- 1 root dialout 166, 0 Dez 13 10:45 /dev/ttyACM0

 

Ou seja, está para leitura/escrita (r/w) para o usuário 'root' e o grupo 'dialout'.

O usuário que utilizo no servidor já está no grupo 'dialout', tanto que está funcionando a comunicação com o Arduino pela IDE dele.

 

O script PHP está com as seguintes permissões:

-rw-r--r-- 1 root   root   724 Dez  8 12:13 comunicacaoSerial.php

 

Será que está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. acabei de fazer o seguinte conforme você comentou:

 

fiz um chmod 666 /dev/ttyACM0, ficando assim:

crw-rw-rw- 1 root dialout 166, 0 Dez 13 11:00 /dev/ttyACM0

 

ai rodei o script e funcionou!

 

só me preocupo com a segurança, pois agora todos podem ler/escrever na porta.

mas pelo menos para testes já está bom hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.