Alguém sabe dizer como poderia fazer para simular um dispositivo conectado a uma porta serial?
A finalidade é fazer um programa que, sem nada conectado ao computador, ele entenda que esxiste um dispositivo conectado a porta serial enviando dados. Em outras palavras, fazer o InputStream e o OutputStream funcionarem sem que tenha algo conectado de verdade.
Um exemplo de utilidade desta funcionalidade é na construção de simuladores. Com isso poderia ter um “servidor simulador” onde as máquinas conectadas em rede se comunicam com ele e através de um cliente que captura os dados da rede e envia para a porta serial. Assim, teria um servidor de simulador de dispositivos seriais. O mesmo vale para todas as outras portas, mas no momento quero fazer isso para dispositivo de comunicação serial.
Peraí cachaça, como é esse negócio do hiperterminal??
humm… talvez eu possa fazer com que esse cliente crie uma porta virtual serial. talvez seja mais fácil do que enganar o computador enviando dados para uma porta já existente.
Vc cria uma aplicacao com java comm que conecte em uma porta e usa o hiperterminal nessa porta para mandar dados
O programa que tenho aqui chama SIOW, qndo eu precisei conectar em impressoras termicas eu usava o hiperterminal e tacava dados nas bixinha, e qndo eu precisei saber se tava chegando os dados certos na serial eu usei o SIOW.
[quote=cassioso]A finalidade é fazer um programa que, sem nada conectado ao computador, ele entenda que esxiste um dispositivo conectado a porta serial enviando dados[/quote].
Você pode ‘loopar’ a porta serial com um conector de loopback, na net você acha o esquema. Todo dado enviado para a serial será ecoado, aí é só seguir na idéia do outputstream/imputream…
PS.: um teste desse loop pode ser feito pelo hiperterminal do windows, abrindo uma conexão na porta em loop. Se visualizar o que digitar no teclado o loop funcionou.
Vou pesquisar sobre o loopback. Mas, talvez não funcione… pq terei uma aplicação (Programa de Monitoramento) que envia comandos para a porta serial para solicitar valores do equipamento. Quando isso acontecer com o loopback implementado ele irá receber como resposta o mesmo comando que foi enviado?
Bom… são três os esquemas possíveis. O esquema com o dispositivo conectado, com um simulador conectado e com o simulador de rede. A baixo tem a descrição dos 3 esquemas, o que estou tentando implementar é o terceiro:
No primeiro esquema, há um dispositivo conectado à porta serial do computador e o Programa de Monitoramento envia, de tempos em tempos, mensagens para esta porta para que o dispositivo lhe envie informações. Ex.: O dispositivo sendo um termômetro ligado pela porta serial. De tempos em tempos o Programa de Monitoramento envia um comando solicitando a temperatura. E o termômetro responde.
Com o simulador, existe um dispositivo conectado na porta serial, que é um computador com um simulador rodando. Um simulador de termomêtro por exemplo. O Programa de Monitoramento envia uma mensagem para a porta serial, a máquina com o simulador recebe esta mensagem e envia uma resposta de acordo com o que programado.
No esquema de um simulador em rede, teríamos uma máquina com um servidor que envia mensagens pela rede. Na máquina que está com o Programa de monitoramento, haveria também um programa cliente (broker) que lê os comandos enviados pelo Programa Monitor na porta serial e envia via Socket para a máquina servidora que tem o simulador. O simulador por sua vez iria tratar o comando e enviar a mensagem de acordo com o programado. O Broker então pega esta mensagem da rede, tbm via socket e envia para a porta serial local para que o Programa Simulador possa realizar a leitura.
[quote=cassioso]Peraí cachaça, como é esse negócio do hiperterminal??
humm… talvez eu possa fazer com que esse cliente crie uma porta virtual serial. talvez seja mais fácil do que enganar o computador enviando dados para uma porta já existente.[/quote]
A resposta de seu problema esta na criação de portas virtuais. Com certeza!
Outra dica é a utilização da API rxtx.
EDIT: existem varios programas que criam portas seriais virtuais e as ligam virtualmente, estes softwares podem ser encontrados facilmente.