- ベストアンサー
MiFare1K の文字変換方法を教えてください。
ICカードのMiFare1K の書込み、読取りソフトをVBで作成しています。 書込み、読取りはできるようになったのですが、文字変換方法が自己流です。 文字『あ』の変換の流れ 1)Asc関数で『-32092』 2)Hex関数で『82A0』 Shift_JISへ 3)『82A0』をByteデータに 82→130 A0→160 上記をカードに書き込んで、読取はその逆を行ってます。 この方法で一般的には通用するのでしょうか? 実際にエンコードしたカードを購入できたり、そういったことを教えてくれる 業者等はあるのでしょうか? よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>客先より依頼を受ける際は、文字コードの種類等も仕様として確認するのが一般的なのでしょうか? カードに情報を入れているという事は、いずれその情報を読み出すという事ですよね? ならば、読み出す側の仕様に合わせてフォーマットを考えるのが一般的……というか、それ以外に無いかと思います。 Mifareの場合、入退管理などに使われる場合が多いのですが、セキュリティ機器のベンダー側で既に決まったカードフォーマットを持っているのでそれに合わせてエンコードを行うことになります。 そういう情報は、大概客先からベンダー側に問い合わせて貰い、NDAなりを結んで情報を教えて貰います。 ちなみに読み出し側のシステムもご質問者様で作られている場合で、かつカードフォーマットの策定も任されているならば、特に客先に考えて貰う必要はありません。それこそご自分の趣味でフォーマットを作ってしまっても問題ありません。大概そんなもんです。 ただし、今後システムの拡張などで他のベンダーにもそのカードを使わせたりする場合もあるので、フォーマット情報はかなり正確に残しておく必要があります。(文字のエンコード方法なり、使用ブロックなり、KaやKbの情報なり) ただ、そういった情報は本来、システムを構築する前に要件定義書などで確定しておく物だと思います。 システム構築では責任の所在を明確化するため、要件定義書を作成後、客先に捺印なりをもらい、そこで完全に仕様を確定します。その時点で、どんなシステムを納品するのか、カードフォーマットはどうなっているのか、納品形態、納品物は何なのかがすべて決まります。 そういった仕様確定を怠った場合、客からの仕様変更が延々と続き、納期に間に合わないとか、品質が担保できないとか、工数が掛かりすぎて赤字になるとか、いわゆる失敗プロジェクト(デスマーチ)になったりします。 カード系の案件の場合、専門家があまりいない為に仕様のおかしなところが見えない場合が多く、後々運用で問題が出たりカードの発行を他の業者に出したときにエンコードミスが出たりして、揉める事が多くなります。 今回のご質問からは、特段フォーマットに関しては問題は無いと思いますので、進捗管理も含めて早々に客先とカードフォーマットの仕様確定を行った方が良いと思います。
その他の回答 (1)
ICカードに書き込むデータをどのようなエンコードで行うかはシステムを開発する人間のセンス、もしくは前提となる規格があって決めるものですので、日本語をメモリに記憶するにあたりShiftJISであろうとUnicodeであろうと特に決まりはありません。 ちなみにメモリにShiftJISコードを書く事に関しては、特に問題無いと思います。私もよくそうしていますし。 >実際にエンコードしたカードを購入できたり、 受託エンコードという形ならば、印刷会社がやっていたりします。(日本のICカードはほぼ大手印刷会社が製造、エンコードしています) ただし、1枚単位とかはビジネスとして成り立ちませんし、それなりにセキュリティの高い業務になりますので、個人としては難しいと思います。法人だとしても、数万円になると思います。 >そういったことを教えてくれる業者等はあるのでしょうか? コンサルという形では受けてくれる会社はあるかも知れませんが、現実的に中々難しいと思います。ノウハウ的な部分もありますので。 または、どこかにRFIDのショールームを構えているような会社に突撃して、開発屋と面談を求めるのも良いかも知れません。 なお、こういう質問サイトで聞くのが手っ取り早く、かつお金が掛からない良い方法だと思います。
お礼
ご回答本当にありがとうございます。 客先より依頼を受ける際は、文字コードの種類等も仕様として確認するのが一般的なのでしょうか? 全く知識の無いところから行っている為、依頼の受け方も分からないしだいです。
お礼
聞ける人もいなく、聞くところも無く、本屋に行っても書籍は無く 途方にくれておりました。 分かりやすくご回答頂きありがとうございました。