Boa tarde colegas!
Estou com dificuldade para ler informações (coo, cro,etc) da ecf urano modelo pos-logger.
Estou utilizando JNA para acessar a dll como já faço com as ecfs Bematech e Sweda e funcionam perfeitametne.
Mas no caso da urano só estou conseguindo até o momento enviar os comandos para impressão.
Quando preciso fazer as consultas, a função da dll não retorna erro mas também não retorna a informação.
Vou postar aqui o código para a leitura do coo pra ficar mais claro.
public void consultaCOO() {
dll.DLLG2_LimpaParams(handle);
dll.DLLG2_AdicionaParam(handle, "NomeInteiro", "coo", 7);
int i = dll.DLLG2_ExecutaComando(handle, "LeInteiro");
if (i > 0) {
i = dll.DLLG2_ObtemCodErro(handle);
if (i == 0) {
long tm = 50;
long tr = 6;
byte[] retorno = new byte[6];
if (dll.DLLG2_Retorno(handle, 0,"ValorInteiro", tm, retorno, tr) > 0) {
System.out.println("Coo: " + new String(retorno));
} else {
System.out.println("Nenhum byte de retorno");
System.out.println("Retorno: " + retorno);
}
} else {
String erro = "";
erro = dll.DLLG2_ObtemNomeErro(handle, erro, 0);
System.out.println("Erro:" + erro);
String descricaoErro = "";
descricaoErro = dll.DLLG2_ObtemCircunstancia(handle, descricaoErro, 0);
System.out.println("Circunstancia:" + descricaoErro);
}
}
}
Bom segundo o manual da dll devo passar uma string como referência para a função da dll chamada DLLG2_Retorno que vai me devolver a informação na mesma.
Como Strings em java são imutáveis segui o mesmo principio das implementações usando outras DLLs e também a documentação do JNA e estou passando um array de bytes no lugar de um tipo String.
Já tentei também seguir alguns exemplo que encontrei em outros tópicos aqui do GUJ que trabalham com PointerByReference e também não funcionou.
Consultei o pessoal do suporte da urano e os mesmos não suporte a java.
Só me passaram que a DLL foi feita em C++ e que a função em questão precisa de um parametro do tipo String mesmo.
Também me passaram exemplo em Dephi que funcionou certinho me devolvendo o COO.
É isso!
Espero que alguém já tenha enfrentado esse problema e possa me ajudar com alguma dica, sugestão, exemplo, etc.
Abraço a todos!
Obrigado!
Giu