Question

Maintenant, je connais un peu la classe et comment installer le pilote COMRD800.dll (en utilisant l'invite de commande: regsvr32).

J'utilise Visual Studio 2010 comme éditeur de texte et VB.NET comme langage de programmation.

Mais me voilà, un autre problème me poursuit à nouveau. Je ne sais pas où est ma faute.

Tout d'abord, je veux expliquer que lors de l'utilisation de cet ID RF, il y a une fonction à appeler avant d'écrire et de lire la clé hexagonale de l'étiquette d'identification RF. Voici les fonctions que je dois utiliser avant d'écrire ou de lire.

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 est une variable de référence, en d'autres termes, la valeur de hex y serait stockée. (je devrais imprimer le TestStr2 pour obtenir la valeur hexadécimale de l'étiquette d'identification RF)

Lorsque la fonction renvoie "0", cela signifie "correct" ou fonctionne. Mais quand la fonction renvoie <> 0, cela signifie "quelque chose ne va pas".

Jusqu'à présent, ils renvoient tous "0". (Sauf le dc_read_hex où l'erreur existait).

Expliquant: Ces fonctions provenaient du pilote (fichier dcrf32.dll). Pour les utiliser dans mon projet, je dois les déclarer dans mon fichier Module VB.NET. (dans mon projet, c'est le fichier "KoneksiRFID.vb").

Jusqu'à présent, je n'ai aucun problème avec les fonctions, mais quand j'arrive à la partie "lecture" (fonction dc_read_hex), j'ai une erreur. Il disait "FatalExecutionEngineError".

Images

Comme vous pouvez le voir, le problème est survenu lorsque j'ai lu la valeur. Voici mon projet si vous souhaitez participer à mon problème et trouver un moyen de le résoudre. Merci avant, pour quiconque a essayé de résoudre ce problème. Je l'apprécie tellement.

Mon projet entier (y compris son pilote et son manuel RFID .pdf)

Oh encore une chose, vous devez mettre les fichiers "driver (dcrf32.dll, dcrf32.lib, dcrf32.h)" dans votre bac ou windows / system32 <- je ne sais pas si cela est nécessaire ou non . Mais essayez-le simplement lorsque le module vb.net ne fonctionnait pas correctement.

Était-ce utile?

La solution

Votre définition VB6 est la suivante:

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

Vous avez actuellement votre définition comme ceci, vous n'avez pas ajusté le type de données de adr ou la valeur de retour:

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

Essayez de le définir comme suit:

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

Modifier:

Essayez ceci à partir de cette page MSDN .doit probablement ajouter 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top