Pessoal, estou tentando ler a porta serial pelo PHP com o código abaixo:

$port = fopen('COM31', 'w');
sleep(2);
echo fgets($port);
fclose($port);

O Arduino enviando para essa porta a temperatura e gostaria de ler esse dado com o PHP, porém com código acima nada acontece. 

att,

Emerson

Exibições: 17148

Responder esta

Respostas a este tópico

Em algumas leituras aqui dizem que o IO do php só enxerga até a COM5. Tenta trocar a COMx do seu arduino.

É isso ai troquei aqui a porta pra um valor alto e parou de retornar, alem cria um arquivo com o nome da com no diretório do source.

Matheus, 

obrigado, estava também  tentando com a COM27 e nada, mudei para COM2 e funcionou .

Valeu

Oi Matheus, obrigado pela resposta.

Eu já havia testado em portas menores mas o PHP sempre voltava o erro abaixo:

Warning: fopen(COM5) [function.fopen]: failed to open stream: No such file or directory in C:\inetpub\wwwroot\arduino\port.php on line 2

Estou rodando num Windows. Já testei com o IIS e com o Apache.

Valeu,

Emerson

Olá Emerson! Olha ai cara o exemplo:

<?php
    $port = fopen('COM5', 'w+');
    sleep(2);
    echo fgets($port);
    fclose($port);
?>


Veja ai no seu script se a COM5 está entre aspas, pq o erro relatado acontece se a COM estiver sem aspas. E outra coisa é o segundo parametro para leitura deve ser colocado "r" para apenas leitura ou "w+" para escrita e leitura da porta.

Pois é, esta assim:

<?php
$port = fopen('COM5', 'w+');
sleep(2);
echo fgets($port);
fclose($port);
?>

e mesmo assim:

Warning: fopen(COM5) [function.fopen]: failed to open stream: No such file or directory in C:\inetpub\wwwroot\arduino\port.php on line 2

Warning: fgets() expects parameter 1 to be resource, boolean given in C:\inetpub\wwwroot\arduino\port.php on line 4

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\inetpub\wwwroot\arduino\port.php on line 5

Caro Emerson,

fiz alguns testes com comunicação de um arduino UNO com meu computador (rodando Windows 7). Tentei várias vezes e de várias formas (conforme várias sugestões na Internet) e em muitas ou não funcionava ou travava a porta e eu não podia usar nem o Arduino nem o programa. Pesquisei muito na Internet e testei uma solução proprietária chamada "PHP Serial Extension". Paguei pela extensão e após instalada funcionou muito bem e os problemas que tinha antes não apareceram mais. Não usei uma porta "alta". Sempre usei a porta COM3. Se quiser testar, segue o link para a extensão: http://thebyteworks.com/phpserial/index.html (Siga as instruções com bastante cuidado e paciência).

Abraços e boa sorte.

Galera estou passando pelo msm problema no meu projeto, não consigo ler dados do arduino, algum tem alguma sugestao

Pessoal tbm estou a ter o mesmo problema!

Alguém já consegui encontrar uma solução?

Olá, tentem usar os recursos do OS ou aplicativos externos e capturem a resposta com o PHP.

Por exemplo (no ruindows):

$r = shell_exec('type COMx')

echo $r;

ou algo como:

$path  = "diretorio/arquivo.txt";

shell_exec("aplicativoParaLeitura COMx >> $path");

$r = file_get_contents($path);

Daew pessoal.. 

Esse site me ajudou muito quando eu inventei de usar a porta serial para comunicar minha aplicação web com o Arduino:

http://www.fritz-hut.com/php-serial-class/

Essa classe PHP é bem poderosa, salvou minha vida:

http://code.google.com/p/php-serial/

Espero que ajude aew...

use "r" ao inves de "w"

o modo write é quando temos que enviar dados escrevendo na porta

para ler, temos que usar o modo read

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço