Java[Script]+serial

Programação Java

Moderadores: 51, guest2003

Java[Script]+serial

Mensagempor marcelo campos » 28 Abr 2011 11:24

Amigos

"Plagiando" o tópico do colega de título similar, seria possível acessar a porta serial em JavaScript ?

valeu
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor helton » 28 Abr 2011 11:42

Acho que não,

O javascript é executado no lado do cliente, e não do servidor ( onde está a porta serial ).

Então, o ideal é executar um GET/POST em javascript para uma app no servidor que entenda este GET/POST, leia os dados na porta serial, e envie para o javascript no lado cliente através de um POST com JSON.

Uma possível solução para uma placa que roda linux embedded é usar o Mongoose (http://code.google.com/p/mongoose/) que é um webserver que pode rodar "embedded with your application" - tradução livre: "ser integrado junto a sua aplicaçào".

Dá uma olhada no mongoose, e também sobre Jquery, que é uma biblioteca bem completa de javascript, que traz esta parte de AJAX bem mastigada, e resolve vários problemas de compatbilidade entre browsers ( vide: IE6 ).
Helton Marques
"Priorize as Prioridades"
helton
Byte
 
Mensagens: 146
Registrado em: 16 Out 2006 09:18
Localização: São José-SC

Mensagempor marcelo campos » 04 Mai 2011 09:55

helton escreveu:Acho que não,

O javascript é executado no lado do cliente, e não do servidor ( onde está a porta serial ).

Então, o ideal é executar um GET/POST em javascript para uma app no servidor que entenda este GET/POST, leia os dados na porta serial, e envie para o javascript no lado cliente através de um POST com JSON.

Uma possível solução para uma placa que roda linux embedded é usar o Mongoose (http://code.google.com/p/mongoose/) que é um webserver que pode rodar "embedded with your application" - tradução livre: "ser integrado junto a sua aplicaçào".

Dá uma olhada no mongoose, e também sobre Jquery, que é uma biblioteca bem completa de javascript, que traz esta parte de AJAX bem mastigada, e resolve vários problemas de compatbilidade entre browsers ( vide: IE6 ).


Helton

Então é justamente esta a necessidade, já tenho um produto que é um supervisório em modo de webserver: com uma web page com javascript nele, então quem quer monitorar conecta à este endereço ou ip e fica "vendo" os status dela em forma de página e também envia comando pra acionar saídas.

Aí o que eu quero é que além do sujeito ficar "olhando", ele tendo um dongle espetado na serial-rs232 acione por exemplo um buzzer quando houver algo anormal (aí o usuário percebe e toma uma atitude)

Um próximo passo é gerar relatórios também à partir do cliente mas, aí é papo pra outro dia, outro tópico...

valeu, abraço
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor chipselect » 04 Mai 2011 23:14

Quando eu precisei fazer algo do tipo, fiz um servidorzinho de web em c++ que só aceitava uma requisição GET por uma porta específica do TCP, fazia um acesso à porta serial, pegava uma página WEB de um servidor na internet via outra requisição GET, fazia um parser no código http da página pra trocar um banner por outro e retornava. Era um viralzinho que acessava o hardware.

Hoje eu faria esse micro servidorzinho web em C#, seria muito mais rápido e fácil.

Editado:
esse servidorzinho tinha que ficar instalado na máquina cliente, obviamente, e o brownser fazia uma requisição GET para o localhost (servidorzinho c++). O servidorzinho c++ repassava a requisição para a internet e acessava a serial. Dessa forma dá pra ser feito.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor marcelo campos » 05 Mai 2011 07:29

Olá chipselect,

Tua idéia do servidor (eu chamaria de proxy) é muito boa mesmo

No meu caso preferiria não ter que fazer software pra máquina do cliente, pois aí, dependendo do trampo, já poderia fazer o supervisório completo

Um detalhe de meu produto é que o cliente (neste caso "cliente" que compra), pode personalizar a página ele mesmo e fazer upload pro server, então acaba ficando mais flexível do que software proprietário porém claro com as limitações da arquitetura do sistema, uma delas o motivo deste tópico.

Ah, detalhe: os valores medidos pela placa o JavaScript é quem decide se está normal ou não, sinalizando pro usuário

abraço
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor chipselect » 05 Mai 2011 16:17

a idéia de um proxy é mais chata, porque vc tem que "interceptar" e "interpretar" todas as requisições do browser para a internet...

o que eu fiz foi um servidor mesmo, rodando como serviço, que devolvia uma resposta pré programada de página para uma requisição.

Também podia, opcionalmente, pegar uma página pré definida da web, modificá-la e retornar.

O mais simples é você fazer algo que só escuta uma requisição (get ou post) instalado na máquina e acessar a serial, nem precisaria acessar a internet, o javascript acessaria a internet normalmente e acessaria o servidor via requisições para localhost...

O cliente do projeto que eu fiz essa tranqueira ganhou um prêmio em Gramado ano passado com ele...
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor marcelo campos » 05 Mai 2011 17:07

chipselect

Ah, entendi está certo é um cliente mesmo, demais a idéia.

Fiquei curioso da aplicação - e falou em Gramado é cinema ?-, poderia abrir um pouco dela ?

Não costumo fazer projetos pra fora, mas por falar em cinema, estou iniciando um que ajusta o foco de câmeras de fotos profissionais, remotamente via rf, ajuda à trasformar estas cameras boas profissionais em literalmente câmeras para cinema.

abraço
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor marcelo campos » 06 Mai 2011 18:02

Baseado no que o amigo chipselect disse vou tentar uma abordagem pela tangente:
- Vou ver se o JavaScript consegue chamar um pequeno executável (que farei) e talvez enviar algo pra ele tio linha de comando, aí o executável se encaregaria de mandar pela serial e o Dongle faria o resto do trabalho pesado

Fica a dúvida se javascript pode fazer esta chamada tipo shell, vou testar

Acho pelo que tive vendo que será o jeito mesmo um outro programa instalado...
marcelo campos
Word
 
Mensagens: 648
Registrado em: 08 Ago 2009 08:37

Mensagempor chipselect » 06 Mai 2011 22:05

olha, eu instalei um programa na máquina cliente mesmo, nem tentei ver se o js tem chamada para shell, mas acho que não tem, pois se tiver isso quebra toda a segurança.

Desculpe-me, eu errei quanto ao "premio", não é Gramado, é Cannes, kkkk. É que eu fui muito pra Gramado final do ano passado resolver problema em uns projetos, ficou o nome martelado nos neurônios.

O projeto "premiado" era uma campanha de marketing da Natura, basicamente o cliente conseguiu uma autorização do servidor Terra para alterar o conteúdo da página dinamicamente (um banner em específico) substituindo por outro banner programado em flash. Daí filmaram uns caras usando (a reação das pessoas, principalmente), montaram um filmezinho com isso e foram concorrer e ganharam o prêmio Leão em Cannes.

O legal da filmagem é que não falaram nada pro pessoal que tava usando o computador, e as câmeras ficaram "escondidas". Algumas pessoas já sabiam, mas o interessante era ver a reação das que não sabiam do dispenser atrás do monitor...

Para a filmagem a gente montou uma espécie de "lan house" na empresa mesmo, no setor de vídeo 3D, só tivemos que botar umas divisórias e uns cartazes de games, dar uma geral na sala e filmar. Depois o pessoal fez a edição da filmagem e mandou pro cliente. Obviamente isso não pode ser feito na sala de eletrônica, por motivos de bagunça, kkkk.

Tecnicamente eu deixei a máquina cliente com o browser carregando a homepage com o endereço do localhost (mini servidor instalado no cliente) e esse baixava a página do terra, trocava o banner e devolvia. Acho que o projeto foi instalado no Shopping Morumbi e em mais uns 2 Shopping de São Paulo, não lembro pq faz um tempinho já.

Quando o cliente clicava no banner, o brownser (flash) fazia uma requisição para o localhost (outro end.) e especificava o que era pra mandar pra porta serial, onde tava instalado um dispenser de cartão que ejetava uma amostra de perfume, como se estivesse "saindo" da página web.

Isso tudo foi feito para não precisar alterar quase nada no browser nem no site do Terra, daí não interferiu na navegação da máquina na internet e nem teve nenhuma burocracia maior com o Terra.

Fiz um servidorzinho em VC++ (win32) pra ficar pequeno e leve, já que não precisava de quase nenhuma interface com o usuário, só shutdown...
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor B-EAGLE » 09 Mai 2011 12:10

Você pode usar FOPEN e FCLOSE na porta serial diretamente através de PHP, rodando no server. deve ter outros frameworks que também aceitam, como ruby on rails...

agora pro cara mandar comandos pra porta serial é mesma coisa, trata isso tudo no lado cliente da página, e manda pro server q ele faz o resto... não precisa acessar via javascript no lado cliente.
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS

Mensagempor chipselect » 09 Mai 2011 22:43

usar fopen e fclose dentro de um PHP ou Ruby normalmente funciona acessando a porta do servidor e não do pc cliente, já que a porta serial a ser acessada é do pc cliente, e não do servidor.

Neste caso teria que instalar um servidor no cliente de qualquer forma, configurá-lo e fazer o javascript do servidor da internet mandar requisições para o localhost, que seria o pc cliente.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor B-EAGLE » 10 Mai 2011 10:17

então eu entendi errado, to achando que o periférico na porta serial fica no lado server somente...
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS


Voltar para Java

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x