🐷

I-O DataのNFCリーダライタ ぴタッチ(USB-NFC3)にMac上のUnityで接続する

2023/08/17に公開

1. 概要

社員証のデータを使って何かやりたいなと思ったので試してみた。
PaSoRiとWindowsを使った記事はあったが、Macでの例があまりなかったので。

いろいろ試しまくったので、以下に書いた以外の部分が大事になってくるかもしれません、、。その場合はコメントで教えていただけますと。
(Homebrewでpcsc-liteとか入れたけど必須だったのか分からず、、 https://formulae.brew.sh/formula/pcsc-lite)

2. 環境

3. 方法

3.1 ドライバをダウンロードする。

下記URLからドライバをダウンロードする。
https://www.iodata.jp/lib/software/u/2229.htm

3.2 NuGetにあるPCSCをdllとしてUnityに移す

以下のサイトを参考にする。
https://heppokoprogramer.seesaa.net/article/485208180.html

※最新版のVisual Studioだと新規を選んだ際に、「.Net - ライブラリ」というのがなかったので古いものをダウンロードした。

Visual Studio 2019 for Macを開く

「その他 - .NET - ライブラリ」を選択し「次へ」を押す

プロジェクト名と保存場所を指定

プロジェクトが起動

「Project - Manage NuGet Packages」を開く

検索窓に「PCSC」と入れ、「PCSC」と「PCSC.Iso7816」にチェックを入れて「パッケージの追加」を押す。

プロジェクトフォルダに「packages」というフォルダが生成され、その中の「PCSC.6.13」と「PCSC.Iso7816.6.13」のそれぞれのフォルダの「lib/netstandard2.0」の中にdllが保存されている。

(参考にした記事ではビルドをしていたけどビルドしなくてもよさそう。)

3.3 Unityで動かしてみる

2つのdllをUnityの「Assets/Plugins」というフォルダ(なければ作成)に入れる。

PCSC-SharpのReadmeをそのままStart()に入れたサンプルプログラムを作成。
https://github.com/danm-de/pcsc-sharp#list-all-connected-smartcard-readers
Console.WriteLineだけDebug.Logに変更

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PCSC;
using PCSC.Iso7816;

public class PcscTest : MonoBehaviour
{
    void Start()
    {
        var contextFactory = ContextFactory.Instance;
        using (var context = contextFactory.Establish(SCardScope.System)) {
            // Console.WriteLine("Currently connected readers: ");
            Debug.Log("Currently connected readers: ");
            var readerNames = context.GetReaders();
            foreach (var readerName in readerNames) {
                // Console.WriteLine("\t" + readerName);
                Debug.Log("\t" + readerName);
            }
        }
    }
}

からのオブジェクトに上のスクリプトをアタッチして実行すると、接続されているNFCカードリーダを示すCircle CIR215 PICCが表示された。

一旦接続するところまで行った。この後カードの情報を取れるようにしたい。

Discussion