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] { "", "", "" }); } }
private void ReadMagCard() { Connection connection = null; Task t = Task.Run(() => { try { connection = connectionSelector.GetConnection(); connection.Open(); ZebraPrinter printer = ZebraPrinterFactory.GetInstance(connection); MagCardReader magCardReader = MagCardReaderFactory.Create(printer); if (magCardReader != null) { UpdateMagCardOutput(""); SetButtonText("Swipe Card Now"); string[] trackData = magCardReader.Read(30000); if (trackData[0].Equals("") && trackData[1].Equals("") && trackData[2].Equals("")) { MessageBoxCreator.ShowError("Connection timed out", "Mag Card Error"); } else { UpdateMagCardOutput(trackData[0] + "\r\n" + trackData[1] + "\r\n" + trackData[2]); } } else { MessageBoxCreator.ShowError("Printer does not have a mag card reader", "Mag Card Error"); } } catch (ConnectionException e) { MessageBoxCreator.ShowError(e.Message, "Connection Error"); } catch (ZebraPrinterLanguageUnknownException e) { MessageBoxCreator.ShowError(e.Message, "Connection Error"); } finally { if (connection != null) { try { connection.Close(); } catch (ConnectionException) { } } SetButtonText("Read Mag Card"); SetButtonState(true); } }); }
/** * 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); }