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); }
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); }
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); }