public String[] ReadMagCard(int timeout) { bool error = true; try { ThePrinterConn.Open(); printer = ZebraPrinterFactory.GetInstance(ThePrinterConn); mcr = printer.GetMagCardReader(); PrinterStatus printerStatus = printer.GetCurrentStatus(); bool ready = printerStatus.IsReadyToPrint; if (ready == false) { return(null); } //MagCardReader mcr = printer.GetMagCardReader(); if (mcr != null) { //read String[] tracks = mcr.Read(timeout); if (tracks[0] != "" || tracks[1] != "" || tracks[2] != "") { ready = printerStatus.IsReadyToPrint; if (ready) { String header = "! 0 200 200 0 1"; ThePrinterConn.Write(Encoding.UTF8.GetBytes(header + "\r\nBEEP 1\r\nPRINT\r\n")); } } //SystemSounds.Beep.Play(); return(tracks); } //thePrinterConn.Close(); error = false; } catch (Exception e) { Logger.Logger.Log(e); error = true; } if (error) { return(null); } else { return(new String[3] { "", "", "" }); } }
/** * Thread for reading magnetic card swiped through printer * **/ private void doReadMagCard() { updateGuiFromWorkerThread("Waiting for swipe...", Color.Gold); if (printer != null) { MagCardReader mcr = printer.GetMagCardReader(); if (mcr != null) { String[] tracks = mcr.Read(10 * 1000); updateGuiTracks(tracks); updateGuiFromWorkerThread("Done", Color.Blue); } else { updateGuiFromWorkerThread("Failed to swipe", Color.Red); } } else { updateGuiFromWorkerThread("Connection error", Color.Red); } updateButtonFromWorkerThread(true); }