2回目以降のICカードのID取得に失敗してしまいます

[戻る]
アセロラ 2010/11/14(日) 19:20:20
VC++ 2005 MFC ダイアログベースで
ボタンをクリックするとICカードのIDを取得し、
それをエディトボックスに表示する
というプログラムを作っているのですが、
最初のボタンクリック時のみ正常にIDが取得でき、
それ以降はIDを取得することが出来ません。

void CTest_ICDlg::OnBnClickedButton1()
{
    // TODO: ここにコントロール通知ハンドラ コードを追加します。
    BYTE        id[10];
    int        length = 0;
    CString        CardID = "", ID = "";

    // ICを読取る
    if (GetCardID(id, &length) == 0)
    {
        // カードID文字列作成
        for(int i = 0; i < length; i++)
        {                
            ID.Format("%02X",id[i]);
            CardID += ID;
        }
    }
    else
    {
        // 読取り失敗時にメッセージを表示
        CardID = "読取りに失敗しました。";
    }
    // 結果表示
    m_edit1.SetWindowText(CardID);
}

これがそのプログラムです。
どなたかご助言よろしくお願いいたします。

aetos 2010/11/15(月) 01:16:00
理由はわかりませんが…GetCardID の戻り値は何ですか?

あと、GetCardID ってこれの関数ですかね?
http://developers.orangetags.jp/easyapi/api-manual

PATIO 2010/11/15(月) 09:55:04
掲示板の場合、書かれている情報だけが頼りなので
MicrosoftがVisualStudioと一緒に配布している物か
Win32APIのようにWindowsで標準で用意されているAPIでないのなら
何処から持ってきたどういうライブラリのなのかを提示する必要が
あります。標準で提供されているようなライブラリでない場合、
その関数を仕様は提供元しか知らないので、掲示板で尋ねても
答えようがありません。
たまたま同じ関数を使った事がある人が掲示板を見てくれていれば
答えられるかもしれませんけれど。
(それにしたってライブラリが特定できないと答えられないと思いますが)

で、そのライブラリの仕様はライブラリの提供元にまず相談するのが
筋かと思います。詳しい使い方を把握してるのはやはり提供元でしょう。
とりあえず、何か気がつく点を指摘してほしいと言う話だとしても
使っている関数の使用が分からない限り、返信のしようがありません。

PATIO 2010/11/15(月) 09:56:40
ごめん、誤字。

誤
>使っている関数の使用が分からない限り、返信のしようがありません。

正
使っている関数の仕様が分からない限り、返信のしようがありません。

アセロラ 2010/11/15(月) 11:18:01
[[解決]]
http://developers.orangetags.jp/easyapi/api-manual
の関数なのかどうかはわかりませんが、
インクルードしたヘッダファイルから呼び出しを行っているので
windowsで標準で用意されているAPIではないようです。

初心者の質問に丁寧に答えてくださってありがとうございました。

古いスレッドには追加発言できません。