Exemple #1
0
        protected void StartNfcPolling(bool enableNfcA, bool enableNfcB, bool enableNfcF)
        {
            Debug.WriteLine("Start Polling");

            UInt32 targetDevice = 0;

            if (enableNfcA)
            {
                Debug.WriteLine("Enable 14443 Type A");
                targetDevice = targetDevice | DEVICE_TYPE_NFC_14443A_18092_106K;
            }
            if (enableNfcB)
            {
                Debug.WriteLine("Enable 14443 Type B");
                targetDevice = targetDevice | DEVICE_TYPE_NFC_14443B_106K;
            }
            if (enableNfcF)
            {
                Debug.WriteLine("Enable FeliCa 212K");
                targetDevice = targetDevice | DEVICE_TYPE_NFC_18092_212K;
                Debug.WriteLine("Enable FeliCa 424K");
                targetDevice = targetDevice | DEVICE_TYPE_NFC_18092_424K;
            }

            bool result = FeliCaNfcDllWrapperClass.FeliCaLibNfcStartPollMode(targetDevice);

            if (!result)
            {
                DispatchErrorEvent();
                DisposeNfc();
                return;
            }
        }
Exemple #2
0
        static Int32 Main(string[] args)
        {
            bool           bRet              = false;
            String         msg_str_of_find   = "find";
            String         msg_str_of_enable = "enable";
            ListenerWindow lw = new ListenerWindow();

            UInt32 card_find_message = RegisterWindowMessage(msg_str_of_find);

            if (card_find_message == 0)
            {
                Console.Write("Failed: RegisterWindowMessage\n");
                return(EXIT_FAILED);
            }

            UInt32 card_enable_message = RegisterWindowMessage(msg_str_of_enable);

            if (card_enable_message == 0)
            {
                Console.Write("Failed: RegisterWindowMessage\n");
                return(EXIT_FAILED);
            }

            bRet = lw.WatchMessage(card_find_message);
            if (bRet == false)
            {
                Console.Write("Failed: WatchMessage\n");
                return(EXIT_FAILED);
            }

            bRet = lw.WatchMessage(card_enable_message);
            if (bRet == false)
            {
                Console.Write("Failed: WatchMessage\n");
                return(EXIT_FAILED);
            }

            MessageHandler messageHandler
                = new MessageHandler(card_find_message, card_enable_message);

            lw.handler
                += new MessageReceivedEventHandler(messageHandler.messageHandlerFunc);

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcInitialize();
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcInitialize\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            StringBuilder port_name = new StringBuilder("USB0");

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcOpen(port_name);
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcOpen\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcSetPollCallbackParameters(
                lw.Handle,
                msg_str_of_find,
                msg_str_of_enable);
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcSetPollCallbackParameters\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            const Int32 DEVICE_TYPE_NFC_14443A_18092_106K = 0x00000001;
            UInt32      target_device = DEVICE_TYPE_NFC_14443A_18092_106K;

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcStartPollMode(target_device);
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcStartPollMode\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            Application.Run(lw);

            if (messageHandler.bRet == false)
            {
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            byte[] command_packet_data = new byte[2] {
                0x30, 0x00
            };                                                          // Command for Mifare ultralight, &H30: 16byte Reading command, &H0: Start address
            UInt16 command_packet_data_length = 2;

            byte[] response_packet_data        = new byte[BUFSIZ];
            UInt16 response_packet_data_length = 0x00;

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcThru(
                command_packet_data,
                command_packet_data_length,
                response_packet_data,
                ref response_packet_data_length);
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcThru\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            for (Int32 idx = 0; idx < 16; idx++)
            {
                Console.Write("response_packet_data[{0}]: 0x{1:X2}\n", idx, response_packet_data[idx]);
            }

            UInt32 RE_NOTIFICATION_SAME_DEVICE = 0x00;
            UInt32 stop_mode = RE_NOTIFICATION_SAME_DEVICE;

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcStopDevAccess(stop_mode);
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcStopDevAccess\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcStopPollMode();
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcStopPollMode\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcClose();
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcClose\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            bRet = FeliCaNfcDllWrapperClass.FeliCaLibNfcUninitialize();
            if (bRet == false)
            {
                Console.Write("Failed: FeliCaLibNfcUninitialize\n");
                ErrorRoutine();
                return(EXIT_FAILED);
            }

            Console.Write("Succeed\n");

            return(EXIT_SUCCEED);
        }
        private void HandleForm_Shown(object sender, EventArgs e)
        {
            bool result;

            // NFCライブラリを初期化します
            result = FeliCaNfcDllWrapperClass.FeliCaLibNfcInitialize();
            if (!result)
            {
                Console.Error.WriteLine("Failed to nfc initialize");
                Close();
                return;
            }

            // NFCライブラリを開きます
            StringBuilder portName = new StringBuilder("USB0");

            result = FeliCaNfcDllWrapperClass.FeliCaLibNfcOpen(portName);
            if (!result)
            {
                Console.Error.WriteLine("Failed to nfc open, port_name=" + portName);
                HandleError();
                Close();
                return;
            }

            // NFCデバイス補足時のWindowメッセージを登録します。
            cardFindMessage = RegisterWindowMessage(MsgStrOfFind);
            if (cardFindMessage == 0)
            {
                Console.Error.WriteLine("Failed to register window message, param=" + MsgStrOfFind);
                Close();
                return;
            }

            cardEnableMessage = RegisterWindowMessage(MsgStrOfEnable);
            if (cardEnableMessage == 0)
            {
                Console.Error.WriteLine("Failed to register window message, param=" + MsgStrOfEnable);
                Close();
                return;
            }

            result = FeliCaNfcDllWrapperClass.FeliCaLibNfcSetPollCallbackParameters(this.Handle, MsgStrOfFind, MsgStrOfEnable);
            if (!result)
            {
                Console.Error.WriteLine("Failed to set pall callback parameters, msf_str_of_find=" + MsgStrOfFind + ", msg_str_of_enable=" + MsgStrOfEnable);
                HandleError();
                Close();
                return;
            }

            // 補足するデバイスの種類を決定します。
            UInt32 targetDevice = 0;

            targetDevice = targetDevice | DEVICE_TYPE_NFC_18092_212K;
            targetDevice = targetDevice | DEVICE_TYPE_NFC_18092_424K;

            // ポーリングを開始します。
            FeliCaNfcDllWrapperClass.FeliCaLibNfcStartPollMode(targetDevice);
            if (!result)
            {
                Console.Error.WriteLine("Failed to start poll mode, target_device=" + targetDevice);
                HandleError();
                Close();
                return;
            }
        }