出産前後の痔にはご注意!

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");
}
どなたかご教授よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

SDK for FeliCaを使われているようなので対象はWindowsだと思いますが、Visual C++を使うかVisual C#でプログラムを書かれてはいかがでしょうか。

(SDKのDLLはVC++から呼び出すのが一番簡単です。C#から呼び出すには其相応の知識が必要ですが)

なお、普通のCUI用のコードにいくつか命令を足したらGUI用になるというわけでもありませんので、まずは簡単にGUIが使える言語(というかVisualStudioの使い方)を学ばれるのが一番かと思います。

あと、蛇足だとは思いますが、認証システムにしてはセキュリティに欠ける様な気もしますので、もう少し工夫した方が良いと思います。
    • good
    • 0
この回答へのお礼

御教授ありがとうございます。
とりあえず勉強をしたいと思います。
卒業研究の課題のため、安全性はあまり考えていませんでした。

お礼日時:2010/02/05 10:30

お疲れ様です。



まず、聞きたいことをタイトルにすべきではないでしょうか?
「GUIアプリケーションの作成方法について」等

タイトルと聞きたいことの本質が違っていた場合に、質問を受ける側としては何を聞きたいの?と分からなくなります。

GUIで動かす方法について。。。
対象とする環境(OS,言語)は何でしょうか?

対象によってGUIアプリを構築する方法は変わってきます。
※Java等は環境依存しないようになっていますが。。。
  →100%ではありません。

まずは、環境をどうぞ。

この回答への補足

御指導ありがとうございます。以後気をつけたいと思います。
環境はwindows、C++を使用しようと考えております。

補足日時:2010/02/05 10:17
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。


人気Q&Aランキング