2011-12-06 8 views
1

今、私はクラスとCOMRD800.dllドライバ(コマンドプロンプトを使用して:regsvr32)をインストールする方法について少し知っています。VB.NETによるRFIDプログラミング|パートIII

私はテキストエディタとしてVisual Studio 2010を、プログラミング言語としてはVB.NETを使用しています。

しかし、ここで私は別の問題が再び私を追いかけています。私はどこにいるのか分からない。

まず、このRF IDを使用するときに、RF IDタグから16進数のキーを読み書きする前に呼び出される関数があることを説明したいと思います。 ここには、私が書いたり読んだりする前に使わなければならない機能があります。

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は、言い換えれば変数です。つまり、16進数の値がそこに格納されます。 (私はTestStr2を出力してRF IDタグから16進値を取得する必要があります)

この関数が "0"を返すときは、 "正しい"ことを意味します。 しかし、関数が<> 0を返すときは、何かが間違っていることを意味します。

これまでのところ、すべて「0」を返します。 (エラーが存在したdc_read_hexを除く)。

説明: これらの機能はドライバ(dcrf32.dllファイル)からのものです。私のプロジェクトでそれらを使用するには、私はそれらをVB.NETモジュールファイルで宣言しなければなりません。 (私のプロジェクトでは "KoneksiRFID.vb"ファイルです)。

これまでのところ、私は関数に問題はありませんが、 "読み込み"部分(dc_read_hex関数)にはエラーがあります。 「FatalExecutionEngineError」と言っています。

Images

あなたが見ることができるように私が値を読んだときに、問題が発生しました。 私の問題に参加し、問題を解決する方法を見つけたい場合は、私のプロジェクトです。 この問題を解決しようとした人の前にありがとう。私はそれをとても感謝します。

My Entire Project(そのドライバおよびRFIDマニュアル.PDF含む)

ああもう一つは、 "ドライバ(dcrf32.dll、dcrf32.lib、dcrf32.h)ファイル" を配置する必要があなたのビンにかwindows/system32 < - これが必要かどうかわかりません。しかし、vb.netモジュールが正しく動作しなかったときに試してみてください。

+0

このエラーに関するドライバのマニュアルは何ですか? – PVitt

+0

このマニュアルは役に立ちません。 「私のプロジェクト全体」のリンクを見てください。私はドキュメントも含めています。 非常に簡単で説明は全くありません。 一週間前から自分でこれを試してみました。 –

答えて

1

あなたのVB6の定義はこれです:

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

あなたは現在このように、あなたの定義を持っている、あなたは、ADRまたは戻り値のデータ型を調整していない:

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

は、としてそれを定義してください:

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

編集:

これをMSDNページから試してみると、おそらく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 
+0

まだそれが発生した エラーが以前と同じである:(動作しません: 「FatalExecutionEngineError」 –

+0

あなたはまだ私はByValのにそれを修正するのに間違っていたあなたの文字列にByRefの宣言を必要とする、私はいくつかの追加 –

+0

@ArvidTheodorus。追加情報[OK]を –

関連する問題