NLink

0 respostas
A

Boa tarde,

Estou tentando me comunicar com um leitor de digital através da dll xpcom32 usando nlink.

Até aí tudo bem, já consigo me conectar ao aparelho, porém estou com problemas na hora da receber os valores do buffer.

Em C o método é o seguinte:

//ComRxData

int FAR PASCAL ComRxData (int nCanal, // Numero do canal de comunicacao
char _far * sBuffer, // Ponteiro para buffer de destino
unsigned int wBytes // Numero de bytes a serem transferidos
);

/*Descrição

A função 'ComRxData' retira um ou mais bytes do buffer de recepção do canal especificado e coloca no buffer de destino
apontado por sBuffer.
O argumento 'nCanal' especifica o canal de comunicação, possibilita o uso de no máximo 16 canais (COM1 a COM16).
O argumento 'sBuffer' é um ponteiro que define a localização do buffer de destino.
O argumento 'wBytes' informa o número de caracteres a serem retirados do buffer de recepção e guardados no buffer de
destino.*/

Estou confuso quanto ao ponteiro do buffer, já tentei usar nlink.Holder, porém gera uma excessão na hora da execução, também já tentei usar java.nio.ByteBuffer, java.nio.StringBuffer, java.nio.Buffer, mas todos geram o erro EXCEPTION_ACCESS_VIOLATION, provavelmente causado por passagem errada de parâmetros.

Será que alguém poderia me ajudar com a declaração do método em Java?

Atualmente está assim:

@DllMethod
public int ComRxData (int nCanal, // Numero do canal de comunicacao
                      java.nio.Buffer sBuffer, // Ponteiro para buffer de destino
                      int wBytes // Numero de bytes a serem transferidos
);

Obrigado

Criado 5 de dezembro de 2008
Respostas 0
Participantes 1