Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
andressa.funes

Programa que controla Projetores

Recommended Posts

Boa Tarde galera, estou tentando fazer um programa em JAVA que facilite a utilização dos projetores, no local onde trabalho é utilizado o programa Hercules, mais não é muito viável, pois a todo momento tenho que estar pegando o código de cada função que quero que ele faça e passar para o programa. Bom consegui fazer a comunicação com as portas seriais que é onde ligo o projetor, mais não tenho ideia de como dar continuidade preciso de ajuda.

 

O código que tenho que abre e conversa com as portas é este logo abaixo:

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import java.util.Enumeration;


public class SerialTest implements SerialPortEventListener {
    SerialPort serialPort;
        
    private static final String PORT_NAMES[] = { 
            //"/dev/tty.usbserial-A9007UX1", // Mac OS X
                       // "/dev/ttyACM0", // Raspberry Pi
            //"/dev/ttyUSB0", // Linux
            "COM1", // Windows
    };
    
    private BufferedReader input;
    
    private OutputStream output;
    
    private static final int TIME_OUT = 2000;
    
    private static final int DATA_RATE = 9600;

    public void initialize() {
               
                

        CommPortIdentifier portId = null;
        Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

        
        while (portEnum.hasMoreElements()) {
            CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
            for (String portName : PORT_NAMES) {
                if (currPortId.getName().equals(portName)) {
                    portId = currPortId;
                    break;
                }
            }
        }
        if (portId == null) {
            System.out.println("Could not find COM port.");
            return;
        }

        try {
            
            serialPort = (SerialPort) portId.open(this.getClass().getName(),
                    TIME_OUT);

            //set port parameters
            serialPort.setSerialPortParams(DATA_RATE,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);

            //open the steams
            input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
            output = serialPort.getOutputStream();

            //add event listenrs
            serialPort.addEventListener(this);
            serialPort.notifyOnDataAvailable(true);
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }

    
    public synchronized void close() {
        if (serialPort != null) {
            serialPort.removeEventListener();
            serialPort.close();
        }
    }

    
    public synchronized void serialEvent(SerialPortEvent oEvent) {
        if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
            try {
                String inputLine=input.readLine();
                System.out.println(inputLine);
            } catch (Exception e) {
                System.err.println(e.toString());
            }
        }
        
    }

    public static void main(String[] args) throws Exception {
        SerialTest main = new SerialTest();
        main.initialize();
        Thread t=new Thread() {
            public void run() {
                
                try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
            }
        };
        t.start();
        System.out.println("Started");
    }
}
 

 

OBS: Estou utilizando a biblioteca rxtx para fazer funcionar.

 

Agora queria saber como faço para implementar os comando que tenho que mandar para o projetor. Quem puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andressa, esse seu problema é bem complicado. Primeiro porque é necessário saber se o respectivo projetor aceita comandos direto via porta serial e quais seriam esses comandos. Sem um manual de desenvolvimento para o projetor fica impossível saber os comandos que ele necessita.

 

Outra coisa é que talvez seja necessário utilizar alguma .dll (no Windows) ou algum .so (no Linux) para fazer a comunicação. Nesse caso, porém, também precisa da documentação do fabricante do projetor. 

 

Se descobrir como esse Hercules executa os envios das requisições com os respectivos códigos, será mais simples de fazer, mas com certeza não é algo trivial. 

 

Fazer Java conversar com hardware não é simples, ainda mais quando queremos operar periféricos.

 

Qual marca e modelo do projetor?

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Então eu tenho ja as dll que é essa rxtx eu até consigo escutar já a porta, os comandos que são mandados para o projetor são feitos através de hexadecimal, vou experimentar fazer uma engenharia reversa no Hercules porque nele sempre tem que colocar o código ou em forma binaria ou hexadecimal eu queria só facilitar, onde no programa você clicaria na função e ela mandaria o código você não teria que estar passando sempre a mensagem pelo código. O projetor que é usado é o Optoma mais não sei exatamente qual modelo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Já tentou usar um sniffer de porta serial para capturar o que o Hercules envia ao projetor?

     

    Eu imagino que ele deva repassar diretamente o valor que você digitou em caso de Hexa e, em casos onde ele possui uma pre-definição onde você apenas envia um código, ele manda o comando correto para a porta.

     

    É uma alternativa mais simples. Claro, eu posso estar completamente equivocado como o Hercules funciona, mas não custa tentar.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Pessoal ainda não consegui fazer o programa, para quem não entendeu porque não consigo me expressar as vezes, eu quero fazer um programa em JAVA que vai controlar as funções do projetor, funções como cor, contraste, etc.

    Consegui na internet um código que conversa com a porta serial do projetor, mas agora não sei como dar continuidade, agradeço desde ja quem puder me dar uma ajuda. O projetor recebe essas funções/informações através de códigos binários e hexadecimal.

    Obrigada Galera.

    Editado por andressa.funes

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    @andressa.funes Os comandos então você sabe eles todos já que fazia funcionar pelo Hercules, correto? 

     

    Se você consegue usar a biblioteca rxtx para conversar com a porta, deve ter alguma função específica para enviar comandos RAW nele e daí repassar esses códigos hexadecimais.

     

    Tem como colocar pra gente aqui um trecho do código e o local de download dessa dll?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Em 12/04/2017 às 14:33, TwistedSoul disse:

    @andressa.funes Os comandos então você sabe eles todos já que fazia funcionar pelo Hercules, correto? 

     

    Se você consegue usar a biblioteca rxtx para conversar com a porta, deve ter alguma função específica para enviar comandos RAW nele e daí repassar esses códigos hexadecimais.

     

    Tem como colocar pra gente aqui um trecho do código e o local de download dessa dll?

    o código que tenho é somente este no inicio do tópico onde ele abre a porta e fica ouvido.

    Essas são as dll uma pra 64 bits outra pra 32 bits

    mfz-rxtx-2.2-20081207-win-x64.zip

    rxtx-2.1-7-bins-r2.zip

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×