/// <summary> /// Rangers the scanner_ transport item in pocket. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> private void rangerScanner_TransportItemInPocket(object sender, AxRANGERLib._DRangerEvents_TransportItemInPocketEvent e) { BitmapImage bitImageFront = GetCheckImage(Sides.TransportFront); BitmapImage bitImageBack = GetCheckImage(Sides.TransportRear); string checkMicr = rangerScanner.GetMicrText(1).Replace("-", string.Empty).Replace("!", string.Empty).Trim(); string fileName = checkMicr.Replace(" ", "_"); string[] micrParts = checkMicr.Split(new char[] { 'c', 'd', ' ' }, StringSplitOptions.RemoveEmptyEntries); string routingNumber = micrParts.Length > 0 ? micrParts[0] : "??"; string accountNumber = micrParts.Length > 1 ? micrParts[1] : "??"; string checkNumber = micrParts.Length > 2 ? micrParts[2] : "??"; ScannedCheckInfo scannedCheck = new ScannedCheckInfo(); scannedCheck.FrontImageData = (bitImageFront.StreamSource as MemoryStream).ToArray(); scannedCheck.BackImageData = (bitImageBack.StreamSource as MemoryStream).ToArray(); scannedCheck.RoutingNumber = routingNumber; scannedCheck.AccountNumber = accountNumber; scannedCheck.CheckNumber = checkNumber; ScanningPage.ShowCheckInformation(scannedCheck); if ((micrParts.Length < 3) || routingNumber.Length != 9) { ScanningPage.lblScanWarning.Visibility = Visibility.Visible; rangerScanner.StopFeeding(); } else { ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed; ScannedCheckList.Enqueue(scannedCheck); } }
/// <summary> /// Shows the check information. /// </summary> /// <param name="scannedCheckInfo">The scanned check info.</param> public void ShowCheckInformation(ScannedCheckInfo scannedCheckInfo) { if (scannedCheckInfo.FrontImageData != null) { BitmapImage bitmapImageFront = new BitmapImage(); bitmapImageFront.BeginInit(); bitmapImageFront.StreamSource = new MemoryStream(scannedCheckInfo.FrontImageData); bitmapImageFront.EndInit(); imgFront.Source = bitmapImageFront; } else { imgFront.Source = null; } if (scannedCheckInfo.BackImageData != null) { BitmapImage bitmapImageBack = new BitmapImage(); bitmapImageBack.BeginInit(); bitmapImageBack.StreamSource = new MemoryStream(scannedCheckInfo.BackImageData); bitmapImageBack.EndInit(); imgBack.Source = bitmapImageBack; } else { imgBack.Source = null; } lblScanInstructions.Visibility = Visibility.Collapsed; ExpectingMagTekBackScan = false; if ((imgFront.Source == null) && (imgBack.Source == null)) { lblScanInstructions.Content = "INFO: Insert the check into the scanner to begin."; lblScanInstructions.Visibility = Visibility.Visible; } // If we have the front image and valid routing number, but not the back (and it's a MagTek). Inform them to scan the back; if (RockConfig.Load().ScannerInterfaceType == RockConfig.InterfaceType.MICRImageRS232) { if ((imgFront.Source != null) && (imgBack.Source == null)) { if (scannedCheckInfo.RoutingNumber.Length.Equals(9)) { ExpectingMagTekBackScan = true; lblScanInstructions.Content = "INFO: Insert the check again facing the other direction to get an image of the back of the check."; lblScanInstructions.Visibility = Visibility.Visible; } } } lblRoutingNumber.Content = scannedCheckInfo.RoutingNumber ?? "--"; lblAccountNumber.Content = scannedCheckInfo.AccountNumber ?? "--"; lblCheckNumber.Content = scannedCheckInfo.CheckNumber ?? "--"; }
/// <summary> /// Shows the check information. /// </summary> /// <param name="scannedCheckInfo">The scanned check info.</param> public void ShowCheckInformation( ScannedCheckInfo scannedCheckInfo ) { if ( scannedCheckInfo.FrontImageData != null ) { BitmapImage bitmapImageFront = new BitmapImage(); bitmapImageFront.BeginInit(); bitmapImageFront.StreamSource = new MemoryStream( scannedCheckInfo.FrontImageData ); bitmapImageFront.EndInit(); imgFront.Source = bitmapImageFront; } else { imgFront.Source = null; } if ( scannedCheckInfo.BackImageData != null ) { BitmapImage bitmapImageBack = new BitmapImage(); bitmapImageBack.BeginInit(); bitmapImageBack.StreamSource = new MemoryStream( scannedCheckInfo.BackImageData ); bitmapImageBack.EndInit(); imgBack.Source = bitmapImageBack; } else { imgBack.Source = null; } lblScanInstructions.Visibility = Visibility.Collapsed; ExpectingMagTekBackScan = false; if ((imgFront.Source == null) && (imgBack.Source == null)) { lblScanInstructions.Content = "INFO: Insert the check into the scanner to begin."; lblScanInstructions.Visibility = Visibility.Visible; } // If we have the front image and valid routing number, but not the back (and it's a MagTek). Inform them to scan the back; if ( RockConfig.Load().ScannerInterfaceType == RockConfig.InterfaceType.MICRImageRS232 ) { if ( ( imgFront.Source != null ) && ( imgBack.Source == null ) ) { if ( scannedCheckInfo.RoutingNumber.Length.Equals(9) ) { ExpectingMagTekBackScan = true; lblScanInstructions.Content = "INFO: Insert the check again facing the other direction to get an image of the back of the check."; lblScanInstructions.Visibility = Visibility.Visible; } } } lblRoutingNumber.Content = scannedCheckInfo.RoutingNumber ?? "--"; lblAccountNumber.Content = scannedCheckInfo.AccountNumber ?? "--"; lblCheckNumber.Content = scannedCheckInfo.CheckNumber ?? "--"; }
/// <summary> /// Handles the MicrDataReceived event of the micrImage control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void micrImage_MicrDataReceived( object sender, System.EventArgs e ) { object dummy = null; string imagePath = string.Empty; string imageIndex = string.Empty; string statusMsg = string.Empty; ScannedCheckInfo scannedCheck = null; if ( ScanningPage.ExpectingMagTekBackScan ) { scannedCheck = ScannedCheckList.Last(); } else { scannedCheck = new ScannedCheckInfo(); // from MagTek Sample Code scannedCheck.RoutingNumber = micrImage.FindElement( 0, "T", 0, "TT", ref dummy ); scannedCheck.AccountNumber = micrImage.FindElement( 0, "TT", 0, "A", ref dummy ); scannedCheck.CheckNumber = micrImage.FindElement( 0, "A", 0, "12", ref dummy ); } imagePath = Path.GetTempPath(); string checkImageFileName = Path.Combine( imagePath, string.Format( "check_{0}_{1}_{2}.tif", scannedCheck.RoutingNumber, scannedCheck.AccountNumber, scannedCheck.CheckNumber ).Replace('?', 'X')); if ( File.Exists( checkImageFileName ) ) { File.Delete( checkImageFileName ); } try { micrImage.TransmitCurrentImage( checkImageFileName, ref statusMsg ); if ( !File.Exists( checkImageFileName ) ) { throw new Exception( "Unable to retrieve image" ); } else { if ( ScanningPage.ExpectingMagTekBackScan ) { scannedCheck.BackImageData = File.ReadAllBytes( checkImageFileName ); } else { scannedCheck.FrontImageData = File.ReadAllBytes( checkImageFileName ); } ScanningPage.ShowCheckInformation( scannedCheck ); if ( scannedCheck.RoutingNumber.Length != 9 ) { ScanningPage.lblScanWarning.Visibility = Visibility.Visible; } else { ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed; ScannedCheckList.Enqueue( scannedCheck ); } File.Delete( checkImageFileName ); } } finally { micrImage.ClearBuffer(); } }
/// <summary> /// Rangers the scanner_ transport item in pocket. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> private void rangerScanner_TransportItemInPocket( object sender, AxRANGERLib._DRangerEvents_TransportItemInPocketEvent e ) { BitmapImage bitImageFront = GetCheckImage( Sides.TransportFront ); BitmapImage bitImageBack = GetCheckImage( Sides.TransportRear ); string checkMicr = rangerScanner.GetMicrText( 1 ).Replace( "-", string.Empty ).Replace( "!", string.Empty ).Trim(); string fileName = checkMicr.Replace( " ", "_" ); string[] micrParts = checkMicr.Split( new char[] { 'c', 'd', ' ' }, StringSplitOptions.RemoveEmptyEntries ); string routingNumber = micrParts.Length > 0 ? micrParts[0] : "??"; string accountNumber = micrParts.Length > 1 ? micrParts[1] : "??"; string checkNumber = micrParts.Length > 2 ? micrParts[2] : "??"; ScannedCheckInfo scannedCheck = new ScannedCheckInfo(); scannedCheck.FrontImageData = ( bitImageFront.StreamSource as MemoryStream ).ToArray(); scannedCheck.BackImageData = ( bitImageBack.StreamSource as MemoryStream ).ToArray(); scannedCheck.RoutingNumber = routingNumber; scannedCheck.AccountNumber = accountNumber; scannedCheck.CheckNumber = checkNumber; ScanningPage.ShowCheckInformation( scannedCheck ); if ( ( micrParts.Length < 3 ) || routingNumber.Length != 9 ) { ScanningPage.lblScanWarning.Visibility = Visibility.Visible; rangerScanner.StopFeeding(); } else { ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed; ScannedCheckList.Enqueue( scannedCheck ); } }
/// <summary> /// Handles the MicrDataReceived event of the micrImage control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void micrImage_MicrDataReceived(object sender, System.EventArgs e) { object dummy = null; string imagePath = string.Empty; string imageIndex = string.Empty; string statusMsg = string.Empty; ScannedCheckInfo scannedCheck = null; if (ScanningPage.ExpectingMagTekBackScan) { scannedCheck = ScannedCheckList.Last(); } else { scannedCheck = new ScannedCheckInfo(); // from MagTek Sample Code scannedCheck.RoutingNumber = micrImage.FindElement(0, "T", 0, "TT", ref dummy); scannedCheck.AccountNumber = micrImage.FindElement(0, "TT", 0, "A", ref dummy); scannedCheck.CheckNumber = micrImage.FindElement(0, "A", 0, "12", ref dummy); } imagePath = Path.GetTempPath(); string checkImageFileName = Path.Combine(imagePath, string.Format("check_{0}_{1}_{2}.tif", scannedCheck.RoutingNumber, scannedCheck.AccountNumber, scannedCheck.CheckNumber).Replace('?', 'X')); if (File.Exists(checkImageFileName)) { File.Delete(checkImageFileName); } try { micrImage.TransmitCurrentImage(checkImageFileName, ref statusMsg); if (!File.Exists(checkImageFileName)) { throw new Exception("Unable to retrieve image"); } else { if (ScanningPage.ExpectingMagTekBackScan) { scannedCheck.BackImageData = File.ReadAllBytes(checkImageFileName); } else { scannedCheck.FrontImageData = File.ReadAllBytes(checkImageFileName); } ScanningPage.ShowCheckInformation(scannedCheck); if (scannedCheck.RoutingNumber.Length != 9) { ScanningPage.lblScanWarning.Visibility = Visibility.Visible; } else { ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed; ScannedCheckList.Enqueue(scannedCheck); } File.Delete(checkImageFileName); } } finally { micrImage.ClearBuffer(); } }