Pregunta

Ahora, sé un poco sobre la clase y cómo instalar el controlador Comd800.DLL (usando el símbolo del sistema: REGSVR32).

Estoy usando Visual Studio 2010 como mi editor de texto y VB.NET como mi lenguaje de programación.

Pero aquí estoy, otro problema es perseguirme de nuevo. No sé dónde es mi culpa.

Primero, quiero explicar que al usar esta ID de RF, hay alguna función que se llama antes de escribir y leer la clave HEX de la etiqueta de ID de RF. Aquí están las funciones que tengo que usar antes de escribir o leer.

dc_init(100,115200) 'to open the port, this should be initialized first
dc_beep(icdev,10) 'just to make the device beeping
dc_load_key_hex(icdev,0,0,"ffffffffffff") 'initializing the device key
dc_request(icdev,0,tagtype) 'to get the Card Tag Type
dc_anticoll(icdev,0,snr) 'to get the card's serial number
dc_select(icdev,snr,sizeA) 'to get the size of the card's memory to pc (it always "8")
dc_authentication(icdev,0,0) 'to pass the authentication
dc_write_hex(icdev,1,TestStr) 'writing to the RF ID tag with string TestStr
dc_read_hex(icdev,1,TestStr2) 'Nah, here is where the error occured. 

TestStr2 es una variable de referencia, en otras palabras, el valor de Hex se almacenaría allí. (Debería imprimir el TestStr2 para obtener el valor hexadecimal de la etiqueta de identificación de RF)

Cuando la función regresa "0" significa "correcto" o funcionando. Pero cuando la función regresa <> 0 significa "algo está mal".

Hasta lejos, todos regresan "0". (Excepto el dc_read_hex donde existía el error).

Explicando: Esas funciones provienen del controlador (archivo dcrf32.dll). Para usarlos en mi proyecto, debo declararlos en mi archivo del módulo VB.NET. (En mi proyecto es el archivo "koneksirfid.vb").

Hasta ahora no tengo ningún problema con las funciones, pero cuando llego a la parte "lectura" (función dc_read_hex) tengo un error. Dijo "fatalExecutionEngineError".

Imágenes

Como puede ver, el problema ocurrió cuando leí el valor. Aquí está mi proyecto si desea participar en mi problema y encontrar una manera de resolverlos. Gracias antes, por quien intentó resolver este problema. Lo aprecio mucho.

Todo mi proyecto (incluido su controlador y manual RFID .pdf)

Oh, una cosa más, tienes que poner el "controlador (dcrf32.dll, dcrf32.lib, dcrf32.h) archivos" en su contenedor o windows/system32 <- No sé si esto es necesario o no. Pero solo pruébelo cuando el módulo VB.NET no funcionara correctamente.

¿Fue útil?

Solución

Su definición de VB6 es esta:

Declare Function dc_read_hex Lib "dcrf32.dll" (ByVal icdev As Long, ByVal adr%, ByVal sdata$) As Integer

Actualmente tiene su definición como esta, no ha ajustado el tipo de datos de ADR o el valor de retorno:

Declare Function dc_read_hex Lib "dcrf32.dll" (ByVal icdev As Integer, ByVal adr%, ByRef sdata$) As Integer

Intenta definirlo como:

Declare Function dc_read_hex Lib "dcrf32.dll" (ByVal icdev As Integer, ByVal adr as Short, ByRef sdata as String) As Short

Editar:

Prueba esto de esto MSDN página probablemente tendrás que agregar Imports System.RunTime.InteropServices.

Declare Function dc_read_hex Lib "dcrf32.dll" (ByVal icdev As Integer, ByVal adr as Short, <MarshalAs(UnmanagedType.LPTStr)> sdata as String) As Short
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top