LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: tiagosilva510 em 29 de Junho de 2011, 22:46

Título: php
Enviado por: tiagosilva510 em 29 de Junho de 2011, 22:46
boas..

alguem aqui percebe de php?

estou a usar um sensor de proximidade rfid, ja tenho td a funcionar.. estou a tratar do tratamento de dados no pc.. recebo do leitor um conjunto de bits.. num terminal.. por rs232 (uso um conversor usb)

agora precisava de ler esse valor em um php.. tenho um formulario.. assim que é passado o cartao queria que o valor fosse preenchido no form, tou em linux e gostava de ler da porta ttyUSB0.

Cumprimentos
Título: Re: php
Enviado por: senso em 29 de Junho de 2011, 22:58
php, logo web, logo web não fala com usb's nem seriais, se queres interface gráfico tens python que é facil de usar, tambem é scripting e dá para o meter a falar com serial, tambem tens uma biblioteca que te ajuda com os gráficos.
Título: Re: php
Enviado por: tiagosilva510 em 29 de Junho de 2011, 23:56
n ha mesmo maneira de ler o valor? eu ja li algures que havia
Título: Re: php
Enviado por: SJD22 em 29 de Junho de 2011, 23:58
Com PHP garanto-te que é impossivel. São linguagens para web e que normalmente nao comunicam com hardware local nem com muitas outras coisas, por razoes de segurança. O PHP pode é ir buscar o valor de outra forma, com alguma "entidade" pelo meio que entao sim lê o valor que queres.
Título: Re: php
Enviado por: SJD22 em 30 de Junho de 2011, 00:05
Dou a mão à palmatória... parece que o PHP lida com portas de série...

Sendo assim consegues safar-te... :)
Título: Re: php
Enviado por: senso em 30 de Junho de 2011, 00:21
Com uma lib 3rd-party qualquer.
Linguagens de scripting orientadas a web a fazer este tipo de trabalho não é de todo para o que elas foram desenhadas..
Título: Re: php
Enviado por: tiagosilva510 em 30 de Junho de 2011, 15:00
e com esse tal de python posso fazer o q disse? passar o cartao no leitor e os dados sao directamente inseridos no formulario?
Título: Re: php
Enviado por: CBX em 30 de Junho de 2011, 15:11
em asp.net tens acesso directo à classe System.IO.Ports se a página for escrita em C#
Título: Re: php
Enviado por: tiagosilva510 em 30 de Junho de 2011, 15:12
estou a fazer pagina em html..
Título: Re: php
Enviado por: nunosilvarocha em 30 de Junho de 2011, 16:03
Podes usar php e a porta de serie.
Eu já tive uma pagina em php que recebia valores do arduino pela porta serie.
Faz uma pesquisa e vais ver que é simples!
Título: Re: php
Enviado por: SJD22 em 30 de Junho de 2011, 16:16
tiagosilva, html nao é uma linguagem de programação e serve apenas para fazer layouts de paginas. A programação do site tem de ser feito em PHP ou ASP.NET C# como alguém já referiu. Com essas podes aceder a porta de serie e mostrar os resultados ao utilizador.

Nao sei como tas a pensas fazer isso, mas se os dados ainda nao estiverem disponiveis na porta antes de o utilizador invocar o URL, nao vai aparecer nada. Terá de estar sempre a fazer resfresh ou entao tens de usar ajax (javascript).

Título: Re: php
Enviado por: tiagosilva510 em 30 de Junho de 2011, 17:02
eu consigo receber os dados por terminal..

os dados sao enviados sempre que é gerado um impulso pelo leitor de cartoes..

queria que esses dados aparececem automaticamente no campo do formulario a eles pertencentes assim que é passado o cartao..

Cumprimentos e obrigado pela ajuda, eu tambem ja vi a falar na net, no entanto ja usei o referido exemplo mas n esta a funcionar, pois estou a usar um conversor usb/rs232
Título: Re: php
Enviado por: tiagosilva510 em 01 de Julho de 2011, 21:03
nng me sabe dizer nada?
Título: Re: php
Enviado por: CBX em 01 de Julho de 2011, 21:07
mas qual é a duvida em concreto?
Título: Re: php
Enviado por: tiagosilva510 em 01 de Julho de 2011, 21:14
como poderei por o php a ler o 'pico' que sera dado pelo leitor, no formulario
Título: Re: php
Enviado por: SJD22 em 01 de Julho de 2011, 21:51
Tem de ser em PHP? Porque não .NET? É compilado e tens mais liberdade para criar...
Título: Re: php
Enviado por: microbyte em 01 de Julho de 2011, 23:09
Claro que pode ser feito em PHP.

Desde que percebas que tudo o que é PHP é corrido no SERVIDOR, percebes que o dispositivo que queres ligar ao PHP por série, tem de estar ligado ao PC que tem o servidor do PHP a correr.
A partir daí são fread() e fwrite() para a porta COM* ou /dev/*, caso estejas a usar linux.

Eu percebo a vantagem de usar PHP, podes facilmente interagir remotamente, porque tens um servidor a correr logo à partida.
Ao usar coisas tipo .NET ou Python, sim talvez seja mais fácil comunicar por série, mas tens sempre de fazer 2 programas, um a correr no servidor, e um cliente. Isto partindo do pressuposto que queres ter algum tipo de ligação remota.
Título: Re: php
Enviado por: SJD22 em 01 de Julho de 2011, 23:43
microbyte: dois programas porquê? Um cliente?

Usas o .NET da mesma forma como usas o PHP.
Título: Re: php
Enviado por: microbyte em 02 de Julho de 2011, 09:24
microbyte: dois programas porquê? Um cliente?

Usas o .NET da mesma forma como usas o PHP.

Se correres um servidor apache, por exemplo, consegues correr um script PHP a partir de um computador remoto.
É o que fazes cada vez que abres uma página aqui no LusoRobótica. Abres a página no browser em tua casa, e no servidor, algures no mundo, são executados centenas de scripts php.

Se quiseres fazer algo parecido com .NET tens de usar um programa servidor e um programa cliente.

Agora, se for para fazer tudo no mesmo PC é igual... O cliente e o servidor são o mesmo computador, não precisas de 2 programas, basta 1.
Eu não faço ideia o que é que o rapaz quer fazer, por isso deixei a minha ideia.
Título: Re: php
Enviado por: SJD22 em 02 de Julho de 2011, 11:32

Citar
Se correres um servidor apache, por exemplo, consegues correr um script PHP a partir de um computador remoto.

Mas isso é o que acontece sempre... afinal é para isso que servem os servidores web. Que confusão que vai para aí... :)

O PHP é igual ao .NET. Tens um servidor web a correr numa determinada máquina (normalmente Apache para PHP e IIS para .NET) e a máquina remota (computador do cliente) faz pedidos http. O servidor executa o código correspondente e envia o HTML para o cliente.

Passa-se exactamente a mesma coisa para um caso ou para outro.

De uma forma geral a unica diferença entre o PHP e o C#.NET, por exemplo, é a sintaxe e uma é compilada e a outra é interpretada, de resto o principio é exactamente o mesmo.



Título: Re: php
Enviado por: microbyte em 02 de Julho de 2011, 15:42
Não é confusão nenhuma, amigo. Estamos os dois a dizer o mesmo.
Por .NET pensei que estivesses a falar de aplicações GUI e não .NET para Web. ;) Mas .NET não é uma linguagem, é uma framework.

PHP não se compara com .NET, podes quanto muito comparar com ASP.
Título: Re: php
Enviado por: CBX em 02 de Julho de 2011, 16:17
ele está a falar de asp, asp.net, que por sua vez é escrito em c# ou vb
Título: Re: php
Enviado por: SJD22 em 02 de Julho de 2011, 20:03
Evidente! Quando se fala em .NET (que é uma framework) subentende-se uma das linguagens dela: C#, VB, ASP, C++, etc.

Se queres fazer o paralelo exacto entre uma coisa e outra, sim, de facto PHP equivale a ASP. Só que hoje em dia ninguem programa um site em ASP(.NET) apenas, mas recorre sempre ao codebehind que pode ser uma das linguagens que disse em cima.

Citar
ele está a falar de asp, asp.net, que por sua vez é escrito em c# ou vb

ASP tem a sua propria sintaxe e nao é escrito em c# ou vb, o codebehind é que é.

Título: Re: php
Enviado por: CBX em 02 de Julho de 2011, 20:44
ASP tem a sua propria sintaxe e nao é escrito em c# ou vb, o codebehind é que é.

não me fiz entender bem mas era exactamente isso que eu queria dizer, só não o conhecia como codebehind

btw asp (linguagem de programação) foi descontinuada à algum tempo
Título: Re: php
Enviado por: microbyte em 02 de Julho de 2011, 21:08
Evidente! Quando se fala em .NET (que é uma framework) subentende-se uma das linguagens dela: C#, VB, ASP, C++, etc.

Se queres fazer o paralelo exacto entre uma coisa e outra, sim, de facto PHP equivale a ASP. Só que hoje em dia ninguem programa um site em ASP(.NET) apenas, mas recorre sempre ao codebehind que pode ser uma das linguagens que disse em cima.

Citar
ele está a falar de asp, asp.net, que por sua vez é escrito em c# ou vb

ASP tem a sua propria sintaxe e nao é escrito em c# ou vb, o codebehind é que é.

Está certo. Não uso .NET para desenvolvimento web, e por isso pressupus (erradamente) que falavas de .NET para aplicações gráficas.
Mas pronto, está esclarecido de ambas as partes, já chega de off-topic ;)
Título: Re: php
Enviado por: SJD22 em 02 de Julho de 2011, 21:17
Citar
btw asp (linguagem de programação) foi descontinuada à algum tempo

ASP sim, ASP.NET não :)

Voltando à vaca fria: tiagosilva, podes fazer isso em PHP ou ASP.NET (com o que quiseres por trás). Mas o user tem de estar sempre a refrescar a pagina ou entao usas ajax.
Título: Re: php
Enviado por: microbyte em 02 de Julho de 2011, 21:44
Sim, é verdade, se correr pelo browser dá time-out.
Ou se for para correr PHP directamente no PC servidor, podes iniciar o script na consola do PHP que com um while infinito ele não se queixa.
Título: Re: php
Enviado por: GnGz em 02 de Julho de 2011, 21:59
Podes usar o .net em rede.
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 19:09
boas novamente.. o que eu pretendo fazer é para estar disponivel apenas no meu computador... é uma pagina que vai interagir com uma base de dados mysql..

mas integrar o programa pra ler a porta serie e facil de inserir n que ja tenho...

imaginem que tem um 'sensor' ligado a porta.. e ele é activo so de vez enquando... dessa vez que é activo ele envia um conjunto de dados.. o que eu queria era ler esses dados...

neste momento so estou a tentar receber esses dados.. ja tentei com php mas n consegui.. muito provavelmente porque nao sei se funcionara assim.. pois so vou ter dados de vez enquando...
Título: Re: php
Enviado por: CBX em 04 de Julho de 2011, 19:54
esse computador é o mesmo que tem o dispositivo ligado na porta série?
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 20:32
sim é
Título: Re: php
Enviado por: GnGz em 04 de Julho de 2011, 20:45
Podes escrever , ler , etc numa mysql com o .net
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 20:48
eu so quero ler a porta usb, pois a parte de mysql esta td feito...
Título: Re: php
Enviado por: GnGz em 04 de Julho de 2011, 20:58
E um bocadinho de procura pelo google.

http://blog.bsoares.com.br/php/controlling-arduino-with-php (http://blog.bsoares.com.br/php/controlling-arduino-with-php)
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 21:02
eu ja tentei algo parecido e nao funcionou.. repara que eu quero ler um impulso... eu n tou a usar com.. tou a usar a ttyUSB0 do linux
Título: Re: php
Enviado por: GnGz em 04 de Julho de 2011, 21:32
em vez de com metes o nome da porta em linux.
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 21:33
é um caminho, n é uma porta
Título: Re: php
Enviado por: CBX em 04 de Julho de 2011, 21:37
se só queres ler a porta usb no pc em que isso está ligado para quê o php, justificava-se se fosse para ler os dados noutro lado ou para interagir com algum site, assim mais vale fazeres um programa em C ou python que é bem mais fácil e viável nesse caso
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 21:38
e posso integrar c em html?
Título: Re: php
Enviado por: CBX em 04 de Julho de 2011, 21:41
não

mas porquê uma linguagem web e não outra?
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 21:42
n percebi...
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 21:44
perguntas-t pk que uso html?

pk foi o que me foi proposto para este trabalho...
Título: Re: php
Enviado por: CBX em 04 de Julho de 2011, 22:28
se foi proposto para esse trabalho não insisto, de qualquer maneira não vejo o interesse de usar php sem ser para uma aplicação web

tens aqui metade do trabalho feito: http://code.google.com/p/php-serial/ (http://code.google.com/p/php-serial/)
Título: Re: php
Enviado por: tiagosilva510 em 04 de Julho de 2011, 22:30
eu ja conhecia e ja testei isso.. no entanto não aparece nada.. isto ta a ler continuamente?
Título: Re: php
Enviado por: CBX em 04 de Julho de 2011, 23:22
tens que ser tu a actualizar manualmente a página ou arranjares um script (javascript, ajax, etc..)
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 16:15
boas..

CBX, tentei novamente como disseste com aquele link, mas nada.. nem mesmo actualizando me aparece alguma coisa..

o codigo:

 
Código: [Seleccione]
<?php
//leitura da porta serie
//http://pplware.sapo.pt/tutoriais/php/php-quinta-feira-controlar-uma-porta-com/
require("php_serial.class.php");
$serial = new phpSerial();
$serial->deviceSet("/dev/ttyUSB0");

$serial->confBaudRate(9600); //Taxa de transmissão
$serial->confParity("none");  //Paridade
$serial->confCharacterLength(8); //Comprimento
 
$serial->confStopBits(1);  //Bits de paragem
$serial->confFlowControl("none"); //Controlo

$serial->deviceOpen();

//$serial->sendMessage("Hello!");
$read $serial->readPort();

$serial->deviceClose();


echo "<P>O id inserido é $read </P>";
?>

de referir tambem que na respectiva clase alterei o endereço da porta e passei para /dev/ttyUSB

passei o cartao no leitor.. e actualizei algumas vezes a pagina, no entanto nao apareceu nada...

Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 16:22
O problema pode não ser no PHP mas no hardware ou nas ligações. Tenta ler com o putty ou com o hiperterminal, se der tudo bem entao passas para o PHP.
Título: Re: php
Enviado por: CBX em 06 de Julho de 2011, 16:30
não funciona possivelmente porque não tens nenhum buffer e só vais conseguir ver alguma coisa na página se actualizares no exacto momento em que passas o cartão (praticamente impossível)
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 16:39
esta tudo a funcionar.. ja tentei no cutecom.. e no proprio terminal do linux com o comando cat /dev/ttyUSB0

como implementarias o buffer neste caso?
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 16:48
n tou mesmo a ver como vou escrever os dados que saem do leitor no formulario html =/

nao ha nenhuma maneira de usar o comando que inseri na consola pois n?
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 17:08
ha alguma maneira de ir buscar o valor lido no terminal e armazena-lo numa variavel no php?
Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 17:11
Podes fazer uma pequena aplicação em Java, .NET, phyton, etc que vá ler o valor à porta e o grave num ficheiro .txt por exemplo e depois o PHP vai ler o ficheiro e mostra no HTML.

Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 17:16
parece-me bem.. eu nunca funcionei com nenhuma.., n faço a mínima como se faz isso.. tens experiência em alguma delas?

eu com um comando executado na consola consigo escrever o valor lido num ficheiro...

cat /dev/ttyUSB0 > file.txt

para tal teria que estar com a consola aberta paralelamente a execução da pagina HTML, mas nao haveria problema
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 17:26
estive a testar a maneira que falei de escrever num file e n deve dar muito resultado, uma vez que como a aplicaçao iria estar sempre aberta iria escrever continuamente no mesmo ficheiro..

Sera que percebes de Java, .NET, phyton, de modo a que quando a aplicaçao seja chamada crie um ficheiro no qual escreve o valor lido na porta usb..
depois o php le esse ficheiro, carrega para uma variavel.. e depois disso pode apagar o ficheiro... pare que depois a aplicaçao  volte a iniciar o processo sempre que seja preciso
Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 17:41
o ficheiro nao tem que estar sempre aberto...

aplicação 1) abre -> escreve -> fecha

aplicação PHP abre -> le -> fecha
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 17:55
o meu problema continua a ser a aplicaçao 1.. a aplicaçao 2 acabei de a fazer
Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 18:07
Podes chamar essa linha de comandos a partir do PHP com o comando "exec".
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 20:15
tipo isto? 

Código: [Seleccione]
exec (cat /dev/ttyUSB0 > file.txt) ;
sera que da para arquivar o que se obtem numa variavel?
Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 20:17
Mete entre aspas o que está dentro dos parenteses.

Melhor ainda cria um batch file com isso e depois so chamas o batch file.
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 20:42
ja agora como? x)
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 20:46
ja agora.. outra pergunta.. :P

depois de o php ler o ficheiro de texto e armazenar o conteudo numa variavel.. sabes se ha a possiblidade de alguma forma aparecer esse valor automaticamente sem termos que o escrever no form?
Título: Re: php
Enviado por: microbyte em 06 de Julho de 2011, 20:52
Calma lá, tens de correr o servidor como root ou privilégios de administrador para teres acesso à porta série pelo PHP. ;)
Verifica isso, por favor.
Título: Re: php
Enviado por: tiagosilva510 em 06 de Julho de 2011, 20:59
n tenho o sensor comigo, mas usando o comando cat sem ser usado como root ele funciona...
Título: Re: php
Enviado por: SJD22 em 06 de Julho de 2011, 21:02
Citar
depois de o php ler o ficheiro de texto e armazenar o conteudo numa variavel.. sabes se ha a possiblidade de alguma forma aparecer esse valor automaticamente sem termos que o escrever no form?

Usas Ajax... mas nao é o limpa-vidros... é o outro :)
Título: Re: php
Enviado por: tiagosilva510 em 07 de Julho de 2011, 16:10
ja esta feita esta parte..

proximo passo... :P

agora vou fazer uma aplicaçao em c.. para estar constantemente a espera de ler um valor da porta usb.. e comparar com os valores de um dado campo da base de dados mysql.

sugestoes? :P
Título: Re: php
Enviado por: tiagosilva510 em 07 de Julho de 2011, 16:46
alguém já trabalhou com algo do género?
Título: Re: php
Enviado por: tiagosilva510 em 07 de Julho de 2011, 16:59
esta aplicaçao n tem obrigatoriamente que ser em c, tem q ser executavel e taqr constantemente a conparar velores lidos pela usb, que corresponde aos cartoes lidos.. e estar a comparar com a base de dados
Título: Re: php
Enviado por: tiagosilva510 em 07 de Julho de 2011, 22:42
alguma sugestao?
Título: Re: php
Enviado por: senso em 07 de Julho de 2011, 22:44
Continuo a não perceber a coisa do php para uma coisa local, uma bd pode ser simplesmente um .txt ou .log
Título: Re: php
Enviado por: tiagosilva510 em 08 de Julho de 2011, 00:01
eu apenas fiz o q me pediram senso :P

quando ao codigo c.. ja alguma vez trabalhaste com a porta usb?
Título: Re: php
Enviado por: tiagosilva510 em 11 de Julho de 2011, 17:17
ja pesquisei bastante e ja arranjei codigo.. mas nao funciona.. sera que alguem ja usou algo parecido?