- 締切済み
FeliCaを利用した認証システム
FeliCaを使用した認証システムを開発しています。 認証方法 (1)PCに個人情報(IDm、名前)の登録を行う。この際、テキストファイル名をIDm(例 01 02 03 05.txt)としファイル内に名前を書き込む。 (2)リーダー/ライターにFeliCaをかざし、IDmを読み取る。 (3)ファイル内の情報を出力させる。 CUIでは、動くのですがGUIで動かすにはどこを替えればいいのでしょうか? 認証というボタン押すと登録された名前を出力させる感じです。 以下にCUIのコードを載せます。 // sample.cpp -*-c++-*- #include <cstdio> #include <cstdlib> #include "felica.h" int main(void); void error_routine(void); void print_vector(char* title, unsigned char* vector, int length); int main(void) { char file[28]; char kawa[6]=".txt"; int i; FILE *fp; int ninzu = 0; char name[100]; //ライブラリの初期化 if (!initialize_library()) { fprintf(stderr, "Can't initialize library.\n"); return EXIT_FAILURE; } //リーダ;ライタの自動認識とオープン if (!open_reader_writer_auto()) { fprintf(stderr, "Can't open reader writer.\n"); return EXIT_FAILURE; } //ポーリングのための宣言 structure_polling polling; unsigned char system_code[2] = {0x00, 0x00}; polling.system_code = system_code; polling.time_slot = 0x00; unsigned char number_of_cards = 0; structure_card_information card_information; unsigned char card_idm[8]; card_information.card_idm = card_idm; //ポーリングとカード情報の取得 if (!polling_and_get_card_information(&polling, &number_of_cards, &card_information)) { fprintf(stderr, "Can't find FeliCa.\n"); return EXIT_FAILURE; } fprintf(stdout, "number of cards: %d\n", number_of_cards); print_vector("card IDm:", card_idm, sizeof(card_idm)); //card_idmをfileに書き込む sprintf(file,"%02x %02x %02x %02x %02x %02x %02x %02x",card_idm[0],card_idm[1],card_idm[2],card_idm[3],card_idm[4],card_idm[5],card_idm[6],card_idm[7]); for(i=23;i<28;i++) file[i]=kawa[i-23]; printf("%s\n",file); if((fp=fopen(file,"r"))==NULL) printf("情報が登録されていません\n"); else{ while(fscanf(fp,"%s",name)==1){ printf("%-10s\n",name); ninzu++; } fclose(fp); } //リーダ。ライタのクローズ if (!close_reader_writer()) { fprintf(stderr, "Can't close reader writer.\n"); return EXIT_FAILURE; } //リーダ。ライタを開放する if (!dispose_library()) { fprintf(stderr, "Can't dispose library.\n"); return EXIT_FAILURE; } return EXIT_SUCCESS; } void error_routine(void) { enumernation_felica_error_type felica_error_type; enumernation_rw_error_type rw_error_type; get_last_error_types(&felica_error_type, &rw_error_type); printf("felica_error_type: %d\n", felica_error_type); printf("rw_error_type: %d\n", rw_error_type); close_reader_writer(); dispose_library(); } void print_vector(char* title, unsigned char* vector, int length) { if (title != NULL) { fprintf(stdout, "%s ", title); } int i; for (i = 0; i < length - 1; i++) { fprintf(stdout, "%02x ", vector[i]); } fprintf(stdout, "%02x", vector[length - 1]); fprintf(stdout, "\n"); } どなたかご教授よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
SDK for FeliCaを使われているようなので対象はWindowsだと思いますが、Visual C++を使うかVisual C#でプログラムを書かれてはいかがでしょうか。(SDKのDLLはVC++から呼び出すのが一番簡単です。C#から呼び出すには其相応の知識が必要ですが) なお、普通のCUI用のコードにいくつか命令を足したらGUI用になるというわけでもありませんので、まずは簡単にGUIが使える言語(というかVisualStudioの使い方)を学ばれるのが一番かと思います。 あと、蛇足だとは思いますが、認証システムにしてはセキュリティに欠ける様な気もしますので、もう少し工夫した方が良いと思います。
- toda hiro(@hiro_knigh)
- ベストアンサー率39% (59/151)
お疲れ様です。 まず、聞きたいことをタイトルにすべきではないでしょうか? 「GUIアプリケーションの作成方法について」等 タイトルと聞きたいことの本質が違っていた場合に、質問を受ける側としては何を聞きたいの?と分からなくなります。 GUIで動かす方法について。。。 対象とする環境(OS,言語)は何でしょうか? 対象によってGUIアプリを構築する方法は変わってきます。 ※Java等は環境依存しないようになっていますが。。。 →100%ではありません。 まずは、環境をどうぞ。
補足
御指導ありがとうございます。以後気をつけたいと思います。 環境はwindows、C++を使用しようと考えております。
お礼
御教授ありがとうございます。 とりあえず勉強をしたいと思います。 卒業研究の課題のため、安全性はあまり考えていませんでした。