preciso receber o string do leitor de codio de barras e comparar seu valor (para que possa mandar o microcontrolador realizar uma ação)
duas soluções: a) ler o valor direto do dispositivo - jUSB, JSR80?? (não sei nem como utilizar)
b) ler o valor do campo de texto e apontar a leitura a pistola para lá, só que:
- isso iria ficar num loop, então como alterar o valor do campo de texto em tempo de execução(thread??)
Para ler o valor diretamente do dispositivo USB, quando ele está na classe HID (Human Interface Device), que é o caso de um leitor USB que simula o teclado, julgo que seja um bocadinho complicado. Portanto você precisa ler as teclas mesmo.
Normalmente é relativamente fácil - essas tais pistolas normalmente mandam um ENTER no final do código de barras a ser lido, então você precisa tratar esse ENTER.
L
leivacasemiro
Caro thingol,
eu já leio o valor, já comparo!.. entretanto precisaria que, dentro do loop, o valor do TextField fosse alterado
publicvoidactionPerformed(ActionEvente){System.out.println("1-"+e.getID());if(e.getSource().equals(B_conf)){//botao confirmarA_test.grabFocus();acao();}}...publicvoidacao(){for(intk=1;k<=Integer.parseInt(A_Qnt_Amostra.getText());k++){do{try{Thread.sleep(3000);}catch(InterruptedExceptione){System.out.println(e);}comparar=A_test.getText();//AKI O VALOR DO CAMPO DEVERIA SER ALTERA PELA PISTOLA..a primeira vez blz..mas depois nada..ALGUMA IDÉIA?? //deliverEvent(new Event(B_conf, Event.ACTION_EVENT, null));}while(!compara(k));}}publicbooleancompara(intindex){booleanachou=false;switch(index){case1:System.out.println(comparar);if(comparar.compareTo(Choice1.getItem(Choice1.getSelectedIndex()))==0){System.out.println("Igual");SERIAL_RS232<CommIdentifier>serial=newSERIAL_RS232<CommIdentifier>();serial.inicio("0");serial.fechar();returntrue;}else{A_test.grabFocus();System.out.println("Não é igual");returnfalse;}case2:if(comparar.compareTo(Choice2.getItem(Choice2.getSelectedIndex()))==0){achou=true;A_test.setText("");returnachou;}default:returnfalse;}}
Notem que, ao clicar no botão seu estado fica com o de “clicado - MouseDown”, por isso não consigo desviar o foco para o campo de texto e consequentemente atualizar o valor do campo!
Obrigado pela atenção!
Att,
Leiva Casemiro Oliveira
Engenharia Elétrica - UFCG
Lic. COmputação - UEPB
T
thingol
Você não pode ficar em um loop que é iniciado por um botão. Se você fizer isso, como você fez, então toda a parte gráfica é congelada, e mesmo o JTextField fica congelado.
Se você precisa investigar o valor de alguma coisa em um loop, ponha esse loop em uma thread.
L
leivacasemiro
Thingol meu querido,
Valeu pela ajuda..os fóruns servem para ajudar, que não necessariamente tem de ser dando a resposta de cara, mas só em informar o que não pode ajuda bastante. Fiz o seguinte:
Nao seria mais facil utilizar o metodo KeyReleased do .tx e colocar todo o seu codigo lah??? aÊ sempre q o leitor de codigo de barras jogar um valor no .tx vc pode comparar e fazer algo depedendo da situação!!
L
leivacasemiro
Caro Jameson_itu,
sinceramente não sei!..nunca usei o KeyReleased…o que seria .tx (um arquivo .txt???)
Se puder me fornecer mais sobre o assunto…é válido…ainda mais se for uma solução melhor1
na verdade esse txt q eu me refiro seria um Jtextfield é q por força do habito sempre nomeio meus Jtextfield com txtNome txtCodigo!!rs
Utilizei este evento do Jtextfield faz pouco tempo em um projeto segue aÊ: