ae galera me surgiu outra duvida estou fazendo a interface de uma dll mas o metodo dessa dll é o seguinte
void FAR PASCAL XPComVersion (char far * sBuffer // Ponteiro para buffer com ao menos 25 caracteres
);
como eu declaro isso na minha interface java??
public void XPComVersion (char far * sBuffer // Ponteiro para buffer com ao menos 25 caracteres
);
estou usando netbeans e jna para comunicar com essa dll…eu ja consegui a comunicaçao o problema agora sao esses parametros q nao existem em java por exemplo ponteiro…como eu passaria esse tipo de parametro??
Bom, você leu a documentação que lhe passei mas não entendeu bulhufas. O que você tem de fazer é o seguinte:
O C está esperando que você passe o endereço de um buffer de memória já reservado, para ele poder copiar de volta os caracteres. No seu caso, você teria de declarar seu método usando JNA com um parâmetro byte[]. Então o método deveria ser declarado como public void XPComVersion (byte[] sBuffer).
Na hora de chamar o método XPComVersion, você deve passar um byte[] já inicializado com um tamanho suficiente para o método em C poder copiar o valor desejado.
vlw thingol e malz eu vo dar uma olhada mais a fundo no link q vc me passou…eh q atualmente estou sem tempo eu dei uma olhada rapida…e como estava com preça postei no forum novamente
mas vlw a ajuda novamente amanha pela manha ja vou tentar esse codigo q vc me passou. Obrigado
consegui fazer funcionar mostrar a versao da dll usando byte[] como tipo de variavel…mas agora me surgiu outra duvida
fiz o seguinte código em um botao para pegar os valores recebidos pelo hardware
conta quantos bytes ha no buffer de recepçao
dll.ComGetnRx(3);
1 parametro eh o canal de comunicação, 2 parametro variavel q vai receber os bytes do buffer de recepção, 3 parametro o numero de bytes que serao pegos do buffer de recepção
dll.ComRxData(3, sBuffer,(int) Resultado);
byte[] sBuffer = new byte[256];
long Resultado = dll.ComGetnRx(3);
dll.ComRxData(3, sBuffer,(int) Resultado);
String ValorBuffer = Native.toString(sBuffer);
System.out.println(ValorBuffer);
System.out.println(Resultado);
só q quando mando executar ele retorna esse valor pra mim