private void Session_TransferReady(object sender, TransferReadyEventArgs e) { var transferMechanism = Session.CurrentSource.Capabilities.ICapXferMech.GetCurrent(); if (transferMechanism == XferMech.File) { var formats = Session.CurrentSource.Capabilities.ICapImageFileFormat.GetValues(); var scannerImageFormat = formats.Contains(FileFormat.Tiff) ? FileFormat.Tiff : FileFormat.Bmp; var fileSetup = new TWSetupFileXfer { Format = scannerImageFormat, FileName = GetUniqueName(Path.GetTempPath(), "twain-test", "." + scannerImageFormat) }; } }
void Session_TransferReady(object sender, TransferReadyEventArgs e) { var mech = session.CurrentSource.Capabilities.ICapXferMech.GetCurrent(); if (mech == XferMech.File) { var formats = session.CurrentSource.Capabilities.ICapImageFileFormat.GetValues(); var wantFormat = formats.Contains(FileFormat.Tiff) ? FileFormat.Tiff : FileFormat.Bmp; var fileSetup = new TWSetupFileXfer { Format = wantFormat, FileName = GetUniqueName(Path.GetTempPath(), "twain-test", "." + wantFormat) }; session.CurrentSource.DGControl.SetupFileXfer.Set(fileSetup); } }
private void OnTransferReady(object sender, TransferReadyEventArgs e) { _dataSource.Capabilities.CapFeederEnabled.SetValue(BoolType.False); _dataSource.Capabilities.CapDuplexEnabled.SetValue(BoolType.False); _dataSource.Capabilities.ICapPixelType.SetValue(PixelType.RGB); _dataSource.Capabilities.ICapUnits.SetValue(Unit.Inches); TWImageLayout imageLayout; _dataSource.DGImage.ImageLayout.Get(out imageLayout); imageLayout.Frame = new TWFrame { Left = 0, Right = 210 * 0.393701f, Top = 0, Bottom = 297 * 0.393701f }; _dataSource.DGImage.ImageLayout.Set(imageLayout); _dataSource.Capabilities.ICapXResolution.SetValue(150); _dataSource.Capabilities.ICapYResolution.SetValue(150); if (_cancel) { e.CancelAll = true; } }
private void Session_TransferReady(object sender, TransferReadyEventArgs e) { }
void session_TransferReady(object sender, TransferReadyEventArgs e) { }
/// <summary> /// Performs the TWAIN transfer routine at state 6. /// </summary> public static void DoTransferRoutine(ITwainSessionInternal session) { #region get xfer types bool xferImage = true; // default to always xfer image bool xferAudio = false; DataGroups xferGroup = DataGroups.None; XferMech imgXferMech = XferMech.Native; XferMech audXferMech = XferMech.Native; if (session.DGControl.XferGroup.Get(ref xferGroup) == ReturnCode.Success) { xferAudio = (xferGroup & DataGroups.Audio) == DataGroups.Audio; // check for Plustek OpticSlim 2680H, this scanner returns wrong xferGroup after first scanning if (session.CurrentSource.Identity.ProductName.IndexOf("Plustek", StringComparison.OrdinalIgnoreCase) > -1 && session.CurrentSource.Identity.ProductName.IndexOf("OpticSlim", StringComparison.OrdinalIgnoreCase) > -1 && session.CurrentSource.Identity.ProductName.IndexOf("2680H", StringComparison.OrdinalIgnoreCase) > -1) { xferImage = true; } else { xferImage = xferGroup == DataGroups.None || (xferGroup & DataGroups.Image) == DataGroups.Image; } } // some DS end up getting none but we will assume it's image if (xferImage) { imgXferMech = session.CurrentSource.Capabilities.ICapXferMech.GetCurrent(); } if (xferAudio) { var mech = session.CurrentSource.Capabilities.ACapXferMech.GetCurrent(); } #endregion var pending = new TWPendingXfers(); var rc = session.DGControl.PendingXfers.Get(pending); if (rc == ReturnCode.Success) { do { #region raise xfer ready var preXferArgs = new TransferReadyEventArgs(session.CurrentSource, pending.Count, pending.EndOfJob);; session.SafeSyncableRaiseEvent(preXferArgs); #endregion #region actually handle xfer if (preXferArgs.CancelAll || session.CloseDSRequested) { rc = session.DGControl.PendingXfers.Reset(pending); } else { if (!preXferArgs.CancelCurrent) { if (xferImage) { switch (imgXferMech) { case XferMech.Memory: rc = DoImageMemoryXfer(session); break; case XferMech.File: rc = DoImageFileXfer(session); break; case XferMech.MemFile: rc = DoImageMemoryFileXfer(session); break; case XferMech.Native: default: // always assume native rc = DoImageNativeXfer(session); break; } } if (xferAudio) { switch (audXferMech) { case XferMech.File: rc = DoAudioFileXfer(session); break; case XferMech.Native: default: // always assume native rc = DoAudioNativeXfer(session); break; } } } if (rc != ReturnCode.Success && session.StopOnTransferError) { // end xfer without setting rc to exit (good/bad?) session.DGControl.PendingXfers.Reset(pending); } else { rc = session.DGControl.PendingXfers.EndXfer(pending); } } #endregion } while (rc == ReturnCode.Success && pending.Count != 0 && !session.CloseDSRequested); } else { HandleReturnCode(session, rc); } // some poorly written scanner drivers return failure on EndXfer so also check for pending count now. // this may break with other sources but we'll see if (//pending.Count == 0 && session.State > 5) { session.ChangeState(5, true); session.DisableSource(); } }