SheepSmartCard.dllとは

 SheepSmartCard.dllは、非接触型カードリーダ・ライタ「SCR331CL-NTTCom」または「PaSoRi」にてICカードの固有ID(UID、IDm)を読み取るダイナミックライブラリ(DLL)です。

本DLLを利用することにより、VisualBasicやAccess・Excelプログラム(VBA)に、カードID読み取り機能をお手軽に組み込むことが可能となります。

 固有ID(UID、IDm)はカード製造時に割り当てられるものです(何も書き込まれていないブランクカードであっても、不良品でない限り固有IDは存在します)。本DLLが読み取るのは、この固有IDの部分のみであり、その他の情報エリア(例えばSuikaの利用履歴、残高など)の読み込み・書き込み機能はありません。「書き込みが出来なければ意味がない」と思われるかもしれませんが、カード偽造防止など特別なセキュリティを必要としないシステム構築に当たっては、基本的に各種情報はサーバ内にて管理すればよく、ICカードはその判別が出来れば充分なので、タイムカード、ポイント付き会員カードなど様々な用途にご利用いただけると思います。

 

動作環境

対応機器(動作確認しているもの) : SCR331CL-NTTCom、PaSoRi RC-S380

   ※動作確認は行っていませんが、おそらくNTT-ComもしくはSonyから発売されている他製品(SCR3310、SCR331DI、RC-S370、RC-S330など)でも使用出来るのではないかと思われます。

対応カード:MIFARE(1K、UltraLight)、Felica、住民基本台帳カード、Suika、PASMO、Edyなど、対象のカードリーダーが認識出来るものであれば基本的に全て読み取り可能(なはず)。

   ※お使いのカードリーダーのドライバやファームウェアが古いと、カード種別によっては読み取れない場合があります。
    例) SCR331CL-NTTComの場合:ファームウェアバージョンが1.05以前ではFelica規格(Suika、PASOMO等)のカードを認識出来ません。

対応OS : 日本語版 Windows XP / Vista / 7

対応アプリケーション : Visual Basic 2008、 MS-Access2003(VBA)、MS-Excel2003(VBA)にて動作を確認。他バージョン(VB2005以降、Office2007以降のVBA)でも利用出来ると思います。

 

利用方法

(1)予めカードリーダ・ライタを使用出来る状態にしておいて下さい(ドライバのインストール、機器の接続)

(2)当ページ下部より「SheepSmartCard.dll」(ZIP圧縮してあります)をダウンロードし、解凍してパスの通っているフォルダ(C:\Windows\System32など)に移動して下さい。

(3)当機能を組み込みたいアプリケーションに以下のようなコードを記述して本DLLを 関数として宣言します。Access、Excel(VBA)とVisualBasicとでは、記述方法が若干異なります。

  ※DLLをパスの通っていない場所に置く場合は、上記のSheepSmartCard.dllの部分をフルパス指定して下さい(例:C:\Users\ひつじかい\Documents\ICカード\SheepSmartCard.dll)。

Private Declare Function GetSmartCardUID Lib "SheepSmartCard.dll" (ByVal SCardUID As String) As Integer '標準モジュール内で宣言する場合はPublic

■ 関数(GetSmartCardUID)及び引数(SCardUID)の戻り値

・GetSmartCardUID(Integer)

0 読み取り成功
100 カードがセットされていない、または読み取り不能のカードがセットされている
200 カードリーダーを認識出来ない(接続されていない)
300 スマートカードサービスが起動していない、またはインストールされていない
400 カードの読み取りに失敗
999 上記以外(予期しないエラー)

・SCardUID(String)

読み取り成功時 カードID:MIFARE規格のカードは4バイトまたは7バイト、Felica規格のカードは8バイト
   例)072C44EB(7バイト)、B97089D553AC0B(7バイト)、5F01E79A64341BD6(8バイト)
読み取りエラー時 空文字列(長さ0)

 

(4)関数呼び出し方法


   Dim ret As Integer
   Dim strCardUID As String
   
   strCardUID = String$(128, vbNullChar)     'VBA(Access、Excel)空文字のままで関数に渡すとエラーとなるので、Null文字で埋めておきます
'  strCardUID = New String(vbNullChar, 128)	 'Visual Basic 空文字のままで関数に渡すとエラーとなるので、Null文字で埋めておきます
   
   ret = GetSmartCardUID(strCardUID)

   strCardUID = Replace(strCardUID, vbNullChar, "")  '文字列からNull文字を除去
      
   If ret = 0 Then
      MsgBox ("読み取り成功 ID=" & strCardUID)            'VBA
'     MessageBox.Show("読み取り成功 ID=" & strCardUID)    'Visual Basic
   Else
      MsgBox ("読み取り失敗")             'VBA
'     MessageBox.Show("読み取り失敗")     'Visual Basic
   End If

※Access、Excel、VisualBasicそれぞれのサンプルソースを用意しました。以下より適宜ダウンロードして下さい。

 

ダウンロード

  DLL本体
  SheepSmartCard.dll SheepSmartCard.dll
  サンプルソース
  サンプルソース(Access版) Access(Access2003で作成しています)
  サンプルソース(Excel版) Excel(Excel2003で作成しています)
  サンプルソース(VB版) VB(VisualBasic2008で作成しています)
  ※ファイルはいずれもZIP圧縮してあります。解凍してご利用ください。

 

著作権、免責、再配布等

・本DLLはフリーウェアですので自由にご使用ください。なお、著作権は作者である田村嘉朗が保有しています。また、サンプルソースはご自由に改変していただいて結構です。

・本DLL及びサンプルソースの使用または使用不能により生じたいかなる障害・損害について、作者は一切の責任を負いません。各自の責任においてご使用ください。

・不具合について、作者の可能な限りにおいて改善の努力をいたしますが、その訂正及び再配布の義務は負いません。

・非営利目的での転載・再配布は自由です。報告なども特に必要ありません。ただし、転載・再配布の際、許可なく内容を改変することは禁止します。