public override CardReaderInfo GetReaderInventory()
        {
            CardReaderInfo cri = null;
            string         reader_name;
            string         chip_version;
            string         fw_version;

            if (GetReaderInventory(out reader_name, out chip_version, out fw_version))
            {
                cri              = new CardReaderInfo();
                cri.sn           = "N/A";
                cri.firmware     = fw_version;
                cri.type         = reader_name;
                cri.manufacturer = "TransMac";
            }
            else if (!String.IsNullOrEmpty(reader_name))
            {
                if (reader_name != "UNKNOWN")
                {
                    cri              = new CardReaderInfo();
                    cri.sn           = "N/A";
                    cri.firmware     = "N/A";
                    cri.type         = reader_name;
                    cri.manufacturer = "TransMac";
                }
            }

            return(cri);
        }
示例#2
0
        private bool ParseInventory(string serial, ref CardReaderInfo cri)
        {
            bool result = false;

            if (!String.IsNullOrEmpty(serial))
            {
                int len = serial.Length;
                int pos = serial.IndexOf(',');
                if (pos > 0)
                {
                    cri.type = serial.Substring(0, pos);
                }
                if (len > pos + 1)
                {
                    int pos_next = serial.IndexOf(',', pos + 1);
                    if (pos_next > 0)
                    {
                        cri.firmware = serial.Substring(pos + 1, pos_next - pos - 1);
                    }
                    pos = serial.IndexOf('"', pos_next);
                    if (pos > 0)
                    {
                        if (len > pos + 1)
                        {
                            cri.manufacturer = serial.Substring(pos + 1, len - pos - 2);
                            result           = true;
                        }
                    }
                }
            }

            return(result);
        }
示例#3
0
        public override CardReaderInfo GetReaderInventory()
        {
            const int      RETRY_MAX = 3;
            CardReaderInfo cri       = null;
            bool           result    = false;

            byte[] reply = null;

            try
            {
                lock (ReadWriteOperationLock)
                {
                    for (int attempt = 0; attempt < RETRY_MAX; attempt++)
                    {
                        reply = serialPort.SendCmd(DDM845_COMMAND.READER_DEVICE_DESCRIPTORS);
                        if (reply != null && reply.Length > 0x40)
                        {
                            result = true;
                            break;
                        }
                    }
                }

                if (result)
                {
                    cri = new CardReaderInfo();
                    ParseInventory(Encoding.ASCII.GetString(reply, 4, reply.Length - 5), ref cri);
                    lock (ReadWriteOperationLock)
                    {
                        for (int attempt = 0; attempt < RETRY_MAX; attempt++)
                        {
                            reply = serialPort.SendCmd(DDM845_COMMAND.READER_DEVICE_SERIAL);
                            if (reply != null && reply.Length > 0x0a)
                            {
                                result = true;
                                cri.sn = Encoding.ASCII.GetString(reply, 4, reply.Length - 5);
                                cri.sn = cri.sn.Replace(".", "");
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
                cri = null;
            }
            return(cri);
        }