- - PR -
Felicaについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-13 10:06
現在Felicaを利用したVB.NETのプログラムを作成しようとしているのですが、下記のコードはカードのIdmを取得してテキストボックスに表示するだけのものなのですが実行した結果イニシャライズとポートのオープンまでは成功しているようなのですがポーリングとカードの取得ができていません、VB6.0のサンプルでは動作しているので本体やカードには異常はないと思われます、どなたかFelicaに詳しいかたご教授お願いします。
Public Function VarPtr(ByVal obj As Object) As Integer Dim gch As GCHandle = GCHandle.Alloc(obj, GCHandleType.Pinned) Dim address As Integer = gch.AddrOfPinnedObject().ToInt32() gch.Free() VarPtr = address End Function Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click 'ライブラリの初期化 If (InitializeLibrary() = 0) Then MsgBox("Can't initialize library.") Exit Sub End If 'リーダ・ライタのオープン If (OpenReaderWriterAuto() = 0) Then MsgBox("Can't open reader writer.") Exit Sub End If Dim udtPolling As StructurePolling Dim bytSystemCode(1) As Byte bytSystemCode(0) = &HFF bytSystemCode(1) = &HFF udtPolling.lngSystemCode = VarPtr(bytSystemCode(0)) udtPolling.bytTimeSlot = &H0 Dim bytNumberOfCard As Byte Dim udtCardInformation As StructureCardInformation Dim bytCardIdm(7) As Byte Dim bytCardPmm(7) As Byte udtCardInformation.lngCardIdm = VarPtr(bytCardIdm(0)) udtCardInformation.lngCardPmm = VarPtr(bytCardPmm(0)) Dim j As Short Dim temp As Integer Set_time_out(1000) For j = 0 To 10 'ポーリング temp = PollingAndGetCardInformation(udtPolling, bytNumberOfCard, udtCardInformation) If Not (temp = 0) Then 'MsgBox "find" Exit For ElseIf j = 10 Then MsgBox("not find") j = CloseReaderWriter() j = DisposeLibrary() Exit Sub End If Next Dim IDm As String Dim i As Short 'カードのIDを文字列化 For i = 0 To 7 IDm = IDm & Hex(bytCardIdm(i)) Next Text2.Text = IDm End Sub | ||||
|
投稿日時: 2006-10-13 10:32
とは何を持ってして判断してます? ステップ実行してポーリングの所を通って居ないんですか? ステップ実行してみて下さい。 またVB6のサンプルがあるのであれば それとコードレベルで比較してみてはどうでしょうか? | ||||
|
投稿日時: 2006-10-13 11:05
NAOさん返答ありがとうございます、ステップ実行は全部確認しております、結果としてはVB6.0の場合はPollingAndGetCardInformationを行った後にbytNumberOfCardに値が格納されていますが.NETの場合にはPollingAndGetCardInformationの引数であるudtPollingとudtCardInformationの値は両方格納されています(VB6.0と同一)が値は0し帰ってきません。よってポーリングの部分がうまく動作していないと判断しています。
| ||||
|
投稿日時: 2006-10-13 11:51
書き方からすると bytNumberOfCardの値がVB6だと入るのにvb.netだと入らない それ以外は同一の値が入ってるって事ですかね? 私も開発している訳では無いのですが… APIリファレンスを読むか、 ソニーさんに聞いた方が早いと思います。 #検索しても解決したってのが出てきませんね。 _________________ Inspired Ambitious ISMS Assistant Auditor [ メッセージ編集済み 編集者: NAO 編集日時 2006-10-13 11:59 ] | ||||
|
投稿日時: 2006-10-13 18:10
ポインタをAPIに渡す前に開放している。 | ||||
|
投稿日時: 2006-10-13 19:41
todoさん返答ありがとうございます、現在Felicaが手元にありませんので試せませんが土日あけましたら試してみます。
| ||||
|
投稿日時: 2006-10-16 09:31
本日試してみましたが残念ながら結果は効果ありませんでした。
|
1