C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: NFC通信リーダー”PaSoRi”


(過去ログ 168 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■97296 / inTopicNo.1)  NFC通信リーダー”PaSoRi”
  
□投稿者/ VB初心者 (2回)-(2021/04/22(Thu) 20:41:42)

分類:[.NET 全般] 


分類:[.NET 全般] 

VB.NET初心者です
(を
VB.NETでpasori(NFC通信リーダー”PaSoRi”)を使用してデータを
読もうと思います
一応会社内なので、身元の確かな会社で作成したDLLを使用したいと
考えています
使用できるDLLとサンプルソースをおしえてください
SDK for NFC Starter Kit  を使用した簡単なサンプルソースでも
大歓迎です


環境
win10
vb,net 2003 (バージョンアップは可能)

宜しくお願いします
引用返信 編集キー/
■97299 / inTopicNo.2)  Re[1]: NFC通信リーダー”PaSoRi”
□投稿者/ kiku (225回)-(2021/04/23(Fri) 09:02:33)
No97296 (VB初心者 さん) に返信

> VB.NET初心者です
> VB.NETでpasori(NFC通信リーダー”PaSoRi”)を使用してデータを
> 読もうと思います

VB.NETの初心者であり、
ICカードとの通信に関する初心者であると勝手に理解しました。

だとすると、
まずは、通信仕様書を入手すべきです。
ICカードを読みたいのだと思いますが、
ICカードには種類によって通信仕様が異なります。
場合にはよっては、機密保持契約を結ばないと入手できないものになります。

通信仕様書を入手したら、その内容を理解する必要があります。

理解できましたら、はじめてプログラミングに世界に入ることができます。

まずは順をおって進めていくことをお勧めします。
サンプルソースを入手したいのだと思いますが、
ICカードの場合、機密保持契約を結ぶことが普通です。

このような掲示板から入手できる確率はかなり低いです。
正式なルートから入手するようにすることをお勧めします。

引用返信 編集キー/
■97301 / inTopicNo.3)  Re[2]: NFC通信リーダー”PaSoRi”
□投稿者/ kiku (226回)-(2021/04/23(Fri) 10:14:13)
No97299 (kiku さん) に返信
> ■No97296 (VB初心者 さん) に返信

当方の場合、あるメーカ様のリーダを使いました(PaSoRiではない)。
そのメーカの通信仕様を入手するために、機密保持契約が必要でした。
通信仕様には、通信ポートを通じてやりとりが
カートの種類毎に分かれて記述されていました。

DLLなどなくてもこの通信仕様に従ってプログラミングすれば
問題なくICカードを読み取れます。
※当方ではこの方法を選択しました。

また、リーダメーカ様からは有償でプログラミングを簡単にする
DLLの提供がありました。
※DLLを購入するとサンプルも付属していたようです。

読みたいICカードを管理する会社に対して
ICカードを読むための固有の情報を頂きました。
こちらも機密保持契約が必要でした。

以上、こんな感じです。
引用返信 編集キー/
■97306 / inTopicNo.4)  Re[3]: NFC通信リーダー”PaSoRi”
□投稿者/ VB初心者 (5回)-(2021/04/24(Sat) 09:05:29)
No97301 (kiku さん) に返信
> ■No97299 (kiku さん) に返信
>>■No97296 (VB初心者 さん) に返信
>
大変失礼致しました 説明が不足してました
ICカードから読みたいのはIDだけです
複数社の社員証(ICカード 運転免許でも可)よりIDを読み、個人を識別し
人によって出来る事が異なるプログラムを作成したいのです

IDを読むだけなのですが、機密保持契約は関係がありますでしょうか?
不勉強で誠に申し訳ありません。

引用返信 編集キー/
■97310 / inTopicNo.5)  Re[4]: NFC通信リーダー”PaSoRi”
□投稿者/ 魔界の仮面弁士 (3083回)-(2021/04/24(Sat) 13:24:16)
No97295 (VB初心者 さん) に返信
> 一応会社内なので、身元の確かな会社で作成したDLLを使用したいと
> 考えています
試したことはありませんが、標準機能が良ければ、WinRT 用に Windows.Devices.SmartCards 名前空間が用意されています。
https://docs.microsoft.com/ja-jp/uwp/api/windows.devices.smartcards?WT.mc_id=DT-MVP-8907&view=winrt-19041

WinForms とかであれば、felicalib Remodeled や felicalib を使うことができますし、
オープンソースを選択できない現場の場合には、有償の SDK も選択になるでしょう。

Proximity API や PCSC-sharp など、様々な物があるわけですが、どれが良いかはケースバイケースです。
Declare/DllImport するもの、参照設定して使う物、
32bit 専用、64bit 専用、AnyCPU 対応、
有償・無償・サポートの有無などを検討したうえで、
検討に挙がったものをそれぞれ実際に試してみることをお奨めします。



No97306 (VB初心者 さん) に返信
> 説明が不足してました
> ICカードから読みたいのはIDだけです

取得したい情報によって手順が異なるのですが、具体的には、
どの種類のカード内のどの ID を取得したいのでしょうか。
いわゆる UID (FeliCa だと 8 バイトの IDm) ですかね?

FeliCa なら Card ID Number (CIN) / NFCID2、あるいは共通領域内の System IDm などがあります。
プライベート領域内にある情報にアクセスする場合には、書き込みだけでなく読み込みに対しても
暗号鍵が必要になるため、秘密保持契約が必要になってきます。
一方、暗号化されていない領域にある nanaco ID や QUICPay ID を得る程度ならば、
各システム用のシステムコードとサービスコードを固有値で指定するだけであり、秘密保持契約も不要です。

あるいは社員証の場合、FeliCa よりも安価な Mifare 系の規格が使われていることがありますが、
IC チップによって、UID が 4 バイトのものもあれば 7 バイトのものもあります。
4 バイトタイプの ID は既に枯渇しているため、一意な識別用の ID として扱うには不向きです。
そのようなカードでは、セクター内にシステム固有の ID (社員番号とか契約IDとか)を
記録しておくような運用がとられていることがあります。



> 複数社の社員証(ICカード 運転免許でも可)よりIDを読み、
自動車運転免許証番号を取得したいのであれば、最低でも PIN 1が必要です。(3 回間違えるとロックされます)
https://www.npa.go.jp/laws/notification/koutuu/menkyo/menkyo20190403_070.pdf

自動車運転免許証番号から暗証番号無しで読み取れる識別情報としては、
Type-B カードの PUPI (NFCID0) がありますが、これは必ずしも一意ではありません。
スキャン時に別の ID が返却される可能性があります。


> 個人を識別し
カードを識別したとしても、そこから個人まで識別できるかは別の話ですから、
そこは運用する側やシステム側で面倒をみる必要があろうかと思います。

マイナンバーカードや運転免許証のように、他者の手に渡らない前提のカードもありますが、
無記名のもの、たとえば nanaco や Edy などは未チャージなら他人への譲渡や貸借のハードルが低いため、
たとえば出退勤管理や入退室管理に使うには不向きとなります。
引用返信 編集キー/
■97311 / inTopicNo.6)  Re[5]: NFC通信リーダー”PaSoRi”
□投稿者/ 魔界の仮面弁士 (3084回)-(2021/04/25(Sun) 00:57:09)
No97310 (魔界の仮面弁士) に追記
> WinForms とかであれば、felicalib Remodeled や felicalib を使うことができますし、

実装例。
AnyCPU/x86/x64 のいずれでも動作することを確認しています。


'参照設定:FelicaLib.DotNet.dll
'https://github.com/sakapon/felicalib-remodeled
Imports FelicaLib
Module Module1
    Function Main() As Integer
        Console.WriteLine("Is64BitProcess=" & Environment.Is64BitProcess)
        Do
            'FE00: FeliCa Networks Common Area (Waon/Edy/nanaco など)
            Using felica As New Felica(&HFE00)
                If felica.TryConnectionToPort() AndAlso felica.TryConnectionToCard() Then
                    '8 バイトの IDm (製造者コード 2 バイト + カード識別番号 6 バイト)
                    Console.WriteLine("共通領域のIDm:" & felica.GetIDm().ToHexString())
                    '8 バイトの PMm (ROM 種別 1 バイト + IC 種別 1 バイト + 最大応答時間パラメータ 6 バイト)
                    Console.WriteLine("共通領域のPMm:" & felica.GetPMm().ToHexString())
                    Try
                        'nanaco番号: サービスコード 0x558B の 先頭 8 バイト (BCD)
                        Console.WriteLine("nanaco番号:" & felica.ReadWithoutEncryption(&H558B, 0).Take(8).ToArray().ToHexString())
                    Catch
                    End Try
                End If
            End Using

            '0003: Cybernetics (Suica/ICOCA/PiTaPa/PASMO/TOICA など)
            Using felica As New Felica(&H3)
                If felica.TryConnectionToPort() AndAlso felica.TryConnectionToCard() Then
                    Console.WriteLine("SuicaのIDm:" & felica.GetIDm().ToHexString())
                    Console.WriteLine("SuicaのPMm:" & felica.GetPMm().ToHexString())
                End If
            End Using

            '04C1: QUICPay
            Using felica As New Felica(&H4C1)
                If felica.TryConnectionToPort() AndAlso felica.TryConnectionToCard() Then
                    Console.WriteLine("QUICPayのIDm:" & felica.GetIDm().ToHexString())
                    Console.WriteLine("QUICPayのPMm:" & felica.GetPMm().ToHexString())
                    Try
                        'QUICPay ID: サービスコード 100B の 10 バイト (16 進数)
                        Console.WriteLine("QUICPay ID:" & felica.ReadWithoutEncryption(&H100B, 0).ToHexString())
                    Catch
                    End Try
                End If
            End Using


            Console.ForegroundColor = ConsoleColor.Green
            Console.WriteLine("Escape=終了/Enter=再読み込み")
            Console.ResetColor()
        Loop Until Console.ReadKey().Key = ConsoleKey.Escape
        Return 0
    End Function
End Module


実行には、32bit / 64bit いずれかの PaSoRi ドライバーがインストールされている必要があります。
"C:\Program Files (x86)\Common Files\Sony Shared\FeliCaLibrary\felica.dll"
"C:\Program Files\Common Files\Sony Shared\FeliCaLibrary\felica.dll"

上記の FelicaLib.DotNet.dll は、
32bit モードでは felicalib.dll 経由で 32bit 版の felica.dll をロードし、
64bit モードでは felicalib64.dll 経由で 64bit 版の felica.dll をロードする設計に
なっているため、EXE と同じフォルダーまたは PATH の通った場所に、
32bit/64bit いずれの felicalib*.dll が配置しておく必要があります。

引用返信 編集キー/
■97315 / inTopicNo.7)  Re[4]: NFC通信リーダー”PaSoRi”
□投稿者/ kiku (227回)-(2021/04/26(Mon) 09:05:57)
No97306 (VB初心者 さん) に返信
> ■No97301 (kiku さん) に返信
>>■No97299 (kiku さん) に返信
> >>■No97296 (VB初心者 さん) に返信
>>
> 大変失礼致しました 説明が不足してました
> ICカードから読みたいのはIDだけです
> 複数社の社員証(ICカード 運転免許でも可)よりIDを読み、個人を識別し
> 人によって出来る事が異なるプログラムを作成したいのです

社員証のICカードの種別は何でしょうか?
それをはっきりさせないと先に進めないと思います。

運転免許証は、NFCTypeBの規格のリーダーで読めるものですね。
PINが必要になりますし、間違えるとロックもされるので
システムで利用するには適していない気がします。

> IDを読むだけなのですが、機密保持契約は関係がありますでしょうか?
> 不勉強で誠に申し訳ありません。

PaSoRiは利用した経験がないのでわかりませんが、
当方の経験では、リーダーメーカのAPI仕様書を入手するだけでも
機密保持契約が必要でした。
リーダーメーカのポリシーによると思います。
PaSoRiメーカに問い合わせてみるのが一番良いです。

魔界の仮面弁士さんがいろいろ書いて頂いているので
そちらが非常に参考になると思います。
引用返信 編集キー/
■97331 / inTopicNo.8)  Re[5]: NFC通信リーダー”PaSoRi”
□投稿者/ VB初心者 (6回)-(2021/04/26(Mon) 19:24:39)
No97310 (魔界の仮面弁士)殿へ返信
申し訳ありません
Imports FelicaLib  FelicaLibが定義されていません
Using felica As New Felica(&H3) Felicaが定義されていません
Using felica As New Felica(&H4C1)Felicaが定義されていません
になります どうすればよいでしょうか

                         

引用返信 編集キー/
■97333 / inTopicNo.9)  Re[6]: NFC通信リーダー”PaSoRi”
□投稿者/ VB初心者 (7回)-(2021/04/26(Mon) 20:01:05)
Visual Basic 中学校 掲示板 VB勉強より
此方のHPへ引っ越ししました
因みにVB初心者 さんとは関係者です


siroshitsuji.blog.fc2.com/blog-entry-18.html
のプログラムを参考に作成しましたが
win10 64 で VB,NET 2013 NETFramework 4.5.2で

<DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)>
にするとエラーになります

DLL 'felicalib.dll", CallingConvention.Cded'を読み
こみましたがモジュールがみつかりません(HRSESULTか
らの例外0x8007007E

この環境でこのコーディングではおかしいのでしょうか


H


引用返信 編集キー/
■97334 / inTopicNo.10)  Re[6]: NFC通信リーダー”PaSoRi”
□投稿者/ 魔界の仮面弁士 (3085回)-(2021/04/26(Mon) 21:41:42)
No97331 (VB初心者 さん) に返信
> Imports FelicaLib  FelicaLibが定義されていません
> Using felica As New Felica(&H3) Felicaが定義されていません
> Using felica As New Felica(&H4C1)Felicaが定義されていません
> になります どうすればよいでしょうか

先の投稿では『参照設定:FelicaLib.DotNet.dll』と書いておいたかと思います。
32bit / 64bit それぞれの必要ファイルも載せていますよね。
引用返信 編集キー/
■97336 / inTopicNo.11)  Re[4]: NFC通信リーダー”PaSoRi”
□投稿者/ 魔界の仮面弁士 (3087回)-(2021/04/26(Mon) 23:53:50)
No97306 (VB初心者 さん) に返信
> 複数社の社員証(ICカード 運転免許でも可)よりIDを読み、

先に紹介した FelicaLib.DotNet は、文字通り FeliCa を利用するためのラッパーなので、
それ以外の IC カード(たとえば運転免許証)の情報は読めないかと思います。

パソリで自動車運転免許証の読取を行う DLL だと、このようなものがあります。
https://www.seamile.co.jp/LicenseViewer/
運転免許証の論理ファイル仕様は、 No97310 で紹介した警察庁公開の PDF あたりで。


PC/SC API でアクセスできるのかもしれませんが、試したことはありません。
http://developers.orangetags.jp/words/pc-sc
https://qiita.com/rhene/items/725dfe4a6b6307731cbf
https://github.com/soft-studio/windows_DriversLicenseReader
https://office-fun.com/techmemo-csharp-nfcreading/
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -