Domanda

Ora, so un po 'della classe e di come installare il driver COMD800.DLL (usando il prompt dei comandi: RegSVR32).

Sto usando Visual Studio 2010 come Editor di testo e VB.NET come linguaggio di programmazione.

Ma eccomi qui, un altro problema mi sta inseguendo di nuovo. Non so dove sia colpa mia.

Innanzitutto, voglio spiegare, che quando si usa questo ID RF, ci sono alcune funzionalità da chiamare prima di scrivere e leggere la chiave hex dal tag ID RF. Ecco le funzioni che devo usare prima di scrivere o leggere.

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 è una variabile di reFerence, in altre parole, il valore di Hex verrebbe archiviato lì. (Dovrei stampare il teststr2 per ottenere il valore esadecimale dal tag ID RF)

Quando la funzione restituisce "0" significa "corretto" o funzionante. Ma quando la funzione ritorna <> 0 significa "qualcosa non va".

Così lontano, tornano tutti "0". (Tranne DC_Read_hex in cui esisteva l'errore).

Spiegare: quelle funzioni provenivano dal driver (file dcrf32.dll). Per usarli nel mio progetto, devo dichiararli nel mio file del modulo VB.NET. (Nel mio progetto è il file "koneksirfid.vb").

Finora non ho problemi con le funzioni, ma quando arrivo alla parte "Lettura" (funzione DC_READ_HEX) ho un errore. Diceva "fatalexecutionEngineerror".

immagini

Come puoi vedere, il problema si è verificato quando ho letto il valore. Ecco il mio progetto se vuoi partecipare al mio problema e trovare un modo per risolverli. Grazie prima, per chiunque abbia provato a risolvere questo problema. Lo apprezzo così tanto.

Il mio intero progetto (compreso il suo driver e il manuale RFID .pdf)

Oh un'altra cosa, devi mettere i file "driver (dcrf32.dll, dcrf32.lib, dcrf32.h)" al bidone o a Windows/System32 <- Non so se questo richiesto o no. Ma provalo quando il modulo VB.NET non ha funzionato correttamente.

È stato utile?

Soluzione

La tua definizione VB6 è questa:

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

Attualmente hai la tua definizione come questa, non hai regolato il tipo di dati di ADR o il valore di ritorno:

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

Prova a definirlo come:

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

Modificare:

Prova questo da questo Msdn pagina probabilmente dovrai aggiungere 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top