[Resolvido]Comunicação entre programa Java e um microterminal

1 resposta
Yago_Ernandes

Eu estou desenvolvendo um programa que será o servidor num esquema entre o programa java e um microterminal, onde as teclas que o usuario digitar serão enviadas para o servidor e ele verá na database se tem um usuário referente aquele id. Estou usando o método readByte() que lê digito por dígito por que foi um dos unicos que funcionou e é o mais rápido dentre os que eu testei.

A parte em que ele lê os dígitos:

//Usuario
                os.writeUTF("ID do funcionario: ");
                do{
                    //
                    os.writeUTF("ID do funcionario: "+id);
                    tecla = trans(is.readByte());
                    if(func3==0){
                        id += tecla;
                        acao(tecla);
                    }else if(func3==1){
                        acaoEspecial(tecla,1);
                    }
                    tecla="";
                    func3=0;
                }while(id==null||id.equals("")&&func2!=1);
                func2 = 0;
                iduser = Integer.parseInt(id);
                gui.log.append("ID do funcionario: "+iduser+"\n");
                
                //Senha
                do{
                    os.writeUTF("Senha: "+pass);
                    tecla = trans(is.readByte());
                    if(func3==0){
                        pass += tecla;
                        acao(tecla);
                    }else{
                        acaoEspecial(tecla,2);
                    }
                    tecla="";
                    func3=0;
                }while(pass==null||pass.equals("")&&func2!=1);
                func2 = 0;
                senha = Integer.parseInt(pass);
                gui.log.append("Senha: "+senha+"\n");

Onde:

os = OutputStream
gui = formulário atual
tecla = trans(is.readByte()); = trans é um método que eu fiz pra ele retornar a string referente ao Byte que chega pelo is(InputStream)
func3 = no metodo trans se ele não for um dos bytes referentes aos números, ele atribui uma valor int a essa variavel pra eu tratar os comando tipo o enter ou o delete.
func2 = essa tecla tem valor 1 quando o enter é pressionado

O problema é que fica desse jeito no log quando eu vou apertando 123(sem o enter):

ID do funcionario: 1
Senha: 2
ID do funcionario: 13
Senha: 21
ID do funcionario: 132
Senha: 213
ID do funcionario: 1321
Senha: 2132
ID do funcionario: 13213

Eu usei o do-while pois queria que ele executasse isso pelo menos uma vez.

Eu queria que acontecesse desse jeito: Uma tecla qualquer seria pressionada no terminal, ela seria enviada para o servidor, se fosse um numero, voltaria e seria impressa na tela do terminal, se fosse um evento(enter, delete, etc) o servidor trataria e imprimiria na tela do terminal o resultado.

Sendo que tem dois campos para preenchimento, id e senha, então quando o cliente terminasse de digitar o id e apertasse enter, o servidor iria armazenar e ja exibir a string "Senha: " na tela to terminal, então o cliente iria digitar a senha e apertar enter, então o servidor iria buscar na data base.

Mas não estou conseguindo fazer, alguém pode me ajudar?

1 Resposta

Yago_Ernandes

Consegui! Não achei que seria tão fácil, só não exclui o post porque não achei onde -.- e se (dificilmente) alguem tiver a mesma dúvida que eu ja ta ai...

fiz assim:
do{
                    os.writeUTF("ID do funcionario: "+id);
                    tecla = trans(is.readByte());
                    if(func3==0){
                        id += tecla;
                        //acao(tecla);
                    }else if(func3==1){
                        acaoEspecial(tecla,1);
                    }
                    tecla="";
                    func3=0;
                }while(func2!=1);
                func2 = 0;
                iduser = Integer.parseInt(id);
                gui.log.append("ID do funcionario: "+iduser+"\n");
                
                //Senha
                do{
                    os.writeUTF("Senha: "+pass);
                    tecla = trans(is.readByte());
                    if(func3==0){
                        pass += tecla;
                        //acao(tecla);
                    }else if(func3==1){
                        acaoEspecial(tecla,2);
                    }
                    tecla="";
                    func3=0;
                }while(func2!=1);
                func2 = 0;
                senha = Integer.parseInt(pass);
                gui.log.append("Senha: "+senha+"\n");
Criado 27 de junho de 2012
Ultima resposta 27 de jun. de 2012
Respostas 1
Participantes 1