private async Task ReadMagEncodeData() { MessageDialog insertCardDialog = null; viewModel.Track1Data = ""; viewModel.Track2Data = ""; viewModel.Track3Data = ""; JobStatusControl.ClearLog(); Console.SetOut(new TextBoxTextWriter(JobStatusControl.JobStatusLog)); await printerManager.PerformAction("Reading mag encode data...", (zebraCardPrinter, connection) => { if (printerManager.IsPrinterReady(zebraCardPrinter, JobStatusControl)) { Console.WriteLine(); // Start logging on new line after printer ready check CardSource cardSource = (CardSource)Enum.Parse(typeof(CardSource), viewModel.SelectedSource); Dictionary <string, string> jobSettings = new Dictionary <string, string>(); jobSettings.Add(ZebraCardJobSettingNames.CARD_SOURCE, cardSource.ToString()); jobSettings.Add(ZebraCardJobSettingNames.CARD_DESTINATION, viewModel.SelectedDestination.ToString()); zebraCardPrinter.SetJobSettings(jobSettings); if (cardSource == CardSource.ATM) { insertCardDialog = DialogHelper.ShowInsertCardDialog(); } MagTrackData magTrackData = zebraCardPrinter.ReadMagData(DataSource.Track1 | DataSource.Track2 | DataSource.Track3, true); if (string.IsNullOrEmpty(magTrackData.Track1) && string.IsNullOrEmpty(magTrackData.Track2) && string.IsNullOrEmpty(magTrackData.Track3)) { Console.WriteLine("No data read from card."); } Application.Current.Dispatcher.Invoke(() => { viewModel.Track1Data = magTrackData.Track1; viewModel.Track2Data = magTrackData.Track2; viewModel.Track3Data = magTrackData.Track3; }); } }, (exception) => { string errorMessage = $"Error reading mag encode data: {exception.Message}"; MessageBoxHelper.ShowError(errorMessage); Console.WriteLine(errorMessage); }); if (insertCardDialog != null) { insertCardDialog.Close(); } StreamWriter streamWriter = new StreamWriter(Console.OpenStandardOutput()); streamWriter.AutoFlush = true; Console.SetOut(streamWriter); }
public ZebraMagData(MagTrackData trackData) { var track1Bytes = Encoding.UTF8.GetBytes(trackData.Track1); var track2Bytes = Encoding.UTF8.GetBytes(trackData.Track2); var track3Bytes = Encoding.UTF8.GetBytes(trackData.Track3); TrackData = new byte[][] { track1Bytes, track2Bytes, track3Bytes }; }