Example #1
0
        static void Main(string[] args)
        {
            var existingWires = ".S.\n" +
                                "...\n" +
                                ".G.";

            Console.WriteLine(SG1.WireDHD(existingWires));
        }
Example #2
0
        private void bReadCard_Click(object sender, EventArgs e)
        {
            DL_STATUS result = DL_STATUS.UNKNOWN_ERROR;

            //byte tlv_type;
            //uint record_length;
            //ushort bytes_read;

            byte[] type = new byte[256];
            byte[] id = new byte[256];
            byte[] payload = new byte[1000];
            byte   type_length, id_length, tnf;
            byte   record_nr;
            byte   message_cnt, record_cnt, empty_record_cnt;

            byte[]           record_cnt_array = new byte[100];
            DLOGIC_CARD_TYPE cardtype;
            string           ct;
            int card_len;

            txtPayload.Clear();

            cardtype = getcardtype();
            // trim DL
            // _ to spc
            ct  = String.Format("[{0:X}]", (int)cardtype);
            ct += " " + cardtype.ToString();

            card_len = getcardlen(cardtype);


            if (cardtype == DLOGIC_CARD_TYPE.DL_NO_CARD)
            {
                statusResult.Text = ct;

                return;
            }

            NdefInfoCardType.Text = ct;

            unsafe
            {
                fixed(byte *pData = record_cnt_array)
                result = uFCoder.get_ndef_record_count(&message_cnt, &record_cnt, pData, &empty_record_cnt);
            }

            prn_status(result, "Read record count");

            if (result != DL_STATUS.UFR_OK)
            {
                statusResult.Text = "Card is not initialized";
                return;
            }

            NdefInfoMsgs.Text  = "Msgs : " + message_cnt;
            NdefInfoRecs.Text  = "Recs : " + record_cnt;
            NdefInfoEmpty.Text = "Empty: " + empty_record_cnt;

            // init table !
            SG1.Rows.Clear();
            txtPayload.Text = "Payload:";

            //PB1.Max = record_cnt * 10;
            //PB1.Position = 0;

            uint payload_length;

            for (record_nr = 1; record_nr < record_cnt + 1; record_nr++)
            {
                //read_payload_length = 0;
                //memset(type, 0, 256);
                //memset(id, 0, 256);
                //memset(read_payload, 0, 1000);

                unsafe
                {
                    fixed(byte *f_type = type)
                    fixed(byte *f_id      = id)
                    fixed(byte *f_payload = payload)

                    result = uFCoder.read_ndef_record(1, (byte)record_nr, &tnf, f_type, &type_length, f_id, &id_length, f_payload, &payload_length);
                }


                if (result != DL_STATUS.UFR_OK)
                {
                    if (result == DL_STATUS.UFR_WRONG_NDEF_CARD_FORMAT)
                    {
                        statusResult.Text = " NDEF format error";
                    }
                    else if (result == DL_STATUS.UFR_NDEF_MESSAGE_NOT_FOUND)
                    {
                        statusResult.Text = " NDEF message not found";
                    }
                    else
                    {
                        statusResult.Text = " Error: " + result;
                    }

                    break;
                }

                string str_payload = System.Text.Encoding.UTF8.GetString(SubByteArray(payload, (int)payload_length));
                string str_type    = System.Text.Encoding.UTF8.GetString(SubByteArray(type, (int)type_length));
                string str_tnf     = "TNF: " + System.Convert.ToString(tnf);
                //---------------------------------------------------------------------------

                string[] row = { record_nr.ToString(), str_type.ToString(), payload_length.ToString(), str_payload };

                SG1.Rows.Add(row);

                //PB1.Position = (1 + i) * 10;

                NdefInfoTNF.Text = str_tnf;

                statusResult.Text = " Reading " + record_nr + "/" + record_cnt;
            }  //for i

            SG1.Update();
            //PB1.Position = 0;

            statusResult.Text = "Reading DONE!";

            if (message_cnt == 0 && empty_record_cnt == 0)
            {
                statusResult.Text = "Card must be formatted first!";
            }
            else
            {
                if (message_cnt == 1 && empty_record_cnt == 1)
                {
                    statusResult.Text = "NFC formatted! Ready for use...";
                }
            }
        }