Esempio n. 1
0
        public BasicCapabilityResult GetBasicValue()
        {
            var oneValue        = new CapabilityOneValue(_twainType, 0);
            var twainCapability = TwainCapability.From(_capability, oneValue);

            var result = Twain32Native.DsCapability(
                _applicationId,
                _sourceId,
                DataGroup.Control,
                DataArgumentType.Capability,
                Message.Get,
                twainCapability);

            if (result != TwainResult.Success)
            {
                var conditionCode = GetStatus();

                log.Debug(string.Format("Failed to get capability:{0} reason: {1}",
                                        _capability, conditionCode));

                return(new BasicCapabilityResult()
                {
                    ConditionCode = conditionCode,
                    ErrorCode = result
                });
            }

            twainCapability.ReadBackValue();

            return(new BasicCapabilityResult()
            {
                RawBasicValue = oneValue.Value
            });
        }
Esempio n. 2
0
        protected void SetValue <T>(T value)
        {
            var rawValue        = Convert.ToInt32(value);
            var oneValue        = new CapabilityOneValue(_twainType, rawValue);
            var twainCapability = TwainCapability.From(_capability, oneValue);

            var result = Twain32Native.DsCapability(
                _applicationId,
                _sourceId,
                DataGroup.Control,
                DataArgumentType.Capability,
                Message.Set,
                twainCapability);

            if (result == TwainResult.Success)
            {
                return;
            }
            if (result == TwainResult.Failure)
            {
                throw new TwainException("Failed to set capability.", result, GetStatus());
            }
            if (result != TwainResult.CheckStatus)
            {
                throw new TwainException("Failed to set capability.", result);
            }
        }
Esempio n. 3
0
        public List <object> GetValue()
        {
            var twainCapability = TwainCapability.From(_capability);

            var result = Twain32Native.DsCapability(
                _applicationId,
                _sourceId,
                DataGroup.Control,
                DataArgumentType.Capability,
                Message.Get,
                twainCapability);

            if (result != TwainResult.Success)
            {
                var conditionCode = GetStatus();

                log.Debug(string.Format("Failed to get capability:{0} reason: {1}",
                                        _capability, conditionCode));

                return(null);

                /*return new BasicCapabilityResult()
                 * {
                 *      ConditionCode = conditionCode,
                 *      ErrorCode = result
                 * };*/
            }


            var ojbts = new List <object>();

            CapabilityReader.ReadValue(twainCapability).PopulateFromCapValues(ojbts);

            return(ojbts);
        }
Esempio n. 4
0
        private void _rdTransferFile_CheckedChanged(object sender, System.EventArgs e)
        {
            int    format;
            string fileName;

            _transferMode           = TwainTransferMode.File;
            _cmbFileFormats.Enabled = true;
            _btnBrowse.Enabled      = true;

            fileName       = this._txtFileName.Text;
            _btnOK.Enabled = (fileName != "");

            // disable other options
            _cbUseBufferSize.Enabled = false;
            _txtBufferSize.Enabled   = false;
            _btnLEADFormats.Enabled  = false;

            try
            {
                TwainCapability twnCap = _session.GetCapability(TwainCapabilityType.ImageImageFileFormat, TwainGetCapabilityMode.GetValues);

                switch (twnCap.Information.ContainerType)
                {
                case TwainContainerType.Enumeration:
                {
                    _cmbFileFormats.Items.Clear();
                    int count = twnCap.EnumerationCapability.Count;
                    _format = new RasterImageFormat[count];
                    for (int i = 0; i < count; i++)
                    {
                        if (twnCap.EnumerationCapability.ItemType == TwainItemType.Uint16)
                        {
                            format = Convert.ToUInt16(twnCap.EnumerationCapability.GetValue(i));
                            AddScannerFormats(format, i);
                        }
                    }
                    break;
                }

                case TwainContainerType.OneValue:
                {
                    _cmbFileFormats.Items.Clear();
                    if (twnCap.OneValueCapability.ItemType == TwainItemType.Uint16)
                    {
                        _format = new RasterImageFormat[1];
                        format  = Convert.ToUInt16(twnCap.OneValueCapability.Value);
                        AddScannerFormats(format, 0);
                    }
                    break;
                }
                }

                _cmbFileFormats.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                Messager.ShowError(this, ex);
            }
        }
            /// <summary>
            /// Reads the value from a <see cref="TwainCapability" /> that was returned
            /// from a TWAIN source.
            /// </summary>
            /// <param name="capability">The capability.</param>
            /// <returns></returns>
            /// <exception cref="System.ArgumentNullException">
            /// capability
            /// or
            /// memoryManager
            /// </exception>
            /// <exception cref="System.ArgumentException">capability</exception>
            public static CapabilityReader ReadValue(TwainCapability capability)
            {
                if (capability == null)
                {
                    throw new ArgumentNullException("capability");
                }

                if (capability.Handle != IntPtr.Zero)
                {
                    IntPtr baseAddr = IntPtr.Zero;
                    try
                    {
                        baseAddr = Kernel32Native.GlobalLock(capability.Handle);
                        switch (capability.ContainerType)
                        {
                        case ContainerType.Array:
                            return(new CapabilityReader
                            {
                                ContainerType = capability.ContainerType,
                            }.ReadArrayValue(baseAddr));

                        case ContainerType.Enum:
                            return(new CapabilityReader
                            {
                                ContainerType = capability.ContainerType,
                            }.ReadEnumValue(baseAddr));

                        case ContainerType.One:
                            return(new CapabilityReader
                            {
                                ContainerType = capability.ContainerType,
                            }.ReadOneValue(baseAddr));

                        case ContainerType.Range:
                            return(new CapabilityReader
                            {
                                ContainerType = capability.ContainerType,
                            }.ReadRangeValue(baseAddr));

                        default:
                            throw new ArgumentException("Capability has bad format");
                        }
                    }
                    finally
                    {
                        if (baseAddr != IntPtr.Zero)
                        {
                            //memoryManager.Unlock(baseAddr);
                            Kernel32Native.GlobalUnlock(capability.Handle);
                        }
                    }
                }

                return(new CapabilityReader());
            }
Esempio n. 6
0
			/// <summary>
			/// Reads the value from a <see cref="TwainCapability" /> that was returned
			/// from a TWAIN source.
			/// </summary>
			/// <param name="capability">The capability.</param>
			/// <returns></returns>
			/// <exception cref="System.ArgumentNullException">
			/// capability
			/// or
			/// memoryManager
			/// </exception>
			/// <exception cref="System.ArgumentException">capability</exception>
			public static CapabilityReader ReadValue(TwainCapability capability)
			{
				if (capability == null) { throw new ArgumentNullException("capability"); }
				
				if (capability.Handle != IntPtr.Zero)
				{
					IntPtr baseAddr = IntPtr.Zero;
					try
					{
						baseAddr = Kernel32Native.GlobalLock(capability.Handle); 
						switch (capability.ContainerType)
						{
							case ContainerType.Array:
								return new CapabilityReader
								{
									ContainerType = capability.ContainerType,
								}.ReadArrayValue(baseAddr);
							case ContainerType.Enum:
								return new CapabilityReader
								{
									ContainerType = capability.ContainerType,
								}.ReadEnumValue(baseAddr);
							case ContainerType.One:
								return new CapabilityReader
								{
									ContainerType = capability.ContainerType,
								}.ReadOneValue(baseAddr);
							case ContainerType.Range:
								return new CapabilityReader
								{
									ContainerType = capability.ContainerType,
								}.ReadRangeValue(baseAddr);
							default:
								throw new ArgumentException("Capability has bad format");
						}
					}
					finally
					{
						if (baseAddr != IntPtr.Zero)
						{
							//memoryManager.Unlock(baseAddr);
							Kernel32Native.GlobalUnlock(capability.Handle);
						
						}
					}
				}

				return new CapabilityReader();
				
			}
Esempio n. 7
0
        protected void SetValue <T>(T value)
        {
            /*log.Debug(string.Format("Attempting to set capabilities:{0}, value:{1}, type:{1}",
             *  _capability, value, _twainType));*/
            Logger.WriteLog(LOG_LEVEL.LL_NORMAL_LOG, string.Format("Attempting to set capabilities:{0}, value:{1}, type:{2}",
                                                                   _capability, value, _twainType.ToString()));

            int rawValue        = Convert.ToInt32(value);
            var oneValue        = new CapabilityOneValue(_twainType, rawValue);
            var twainCapability = TwainCapability.From(_capability, oneValue);

            TwainResult result = Twain32Native.DsCapability(
                _applicationId,
                _sourceId,
                DataGroup.Control,
                DataArgumentType.Capability,
                Message.Set,
                twainCapability);

            if (result != TwainResult.Success)
            {
                Logger.WriteLog(LOG_LEVEL.LL_SUB_FUNC, string.Format("Failed to set capabilities:{0}, value:{1}, type:{2}, result:{3}",
                                                                     _capability, value, _twainType, result));

                if (result == TwainResult.Failure)
                {
                    var conditionCode = GetStatus();

                    Logger.WriteLog(LOG_LEVEL.LL_SERIOUS_ERROR, string.Format("Failed to set capabilites:{0} reason: {1}",
                                                                              _capability, conditionCode));

                    throw new TwainException("Failed to set capability.", result, conditionCode);
                }
                else if (result == TwainResult.CheckStatus)
                {
                    Logger.WriteLog(LOG_LEVEL.LL_SUB_FUNC, "Value changed but not to requested value");
                }
                else
                {
                    throw new TwainException("Failed to set capability.", result);
                }
            }
            else
            {
                Logger.WriteLog(LOG_LEVEL.LL_NORMAL_LOG, "Set capabilities:" + _capability + " successfully");
            }
        }
Esempio n. 8
0
        protected void SetValue <T>(T value)
        {
            log.Debug(string.Format("Attempting to set capabilities:{0}, value:{1}, type:{1}",
                                    _capability, value, _twainType));

            int rawValue        = Convert.ToInt32(value);
            var oneValue        = new CapabilityOneValue(_twainType, rawValue);
            var twainCapability = TwainCapability.From(_capability, oneValue);

            TwainResult result = Twain32Native.DsCapability(
                _applicationId,
                _sourceId,
                DataGroup.Control,
                DataArgumentType.Capability,
                Message.Set,
                twainCapability);

            if (result != TwainResult.Success)
            {
                log.Debug(string.Format("Failed to set capabilities:{0}, value:{1}, type:{1}, result:{2}",
                                        _capability, value, _twainType, result));

                if (result == TwainResult.Failure)
                {
                    var conditionCode = GetStatus();

                    log.Error(string.Format("Failed to set capabilites:{0} reason: {1}",
                                            _capability, conditionCode));

                    throw new TwainException("Failed to set capability.", result, conditionCode);
                }
                else if (result == TwainResult.CheckStatus)
                {
                    log.Debug("Value changed but not to requested value");
                }
                else
                {
                    throw new TwainException("Failed to set capability.", result);
                }
            }
            else
            {
                log.Debug("Set capabilities successfully");
            }
        }
Esempio n. 9
0
        private void SetTransferMode()
        {
            using (TwainCapability twnCap = new TwainCapability())
            {
                try
                {
                    twnCap.Information.Type          = TwainCapabilityType.ImageTransferMechanism;
                    twnCap.Information.ContainerType = TwainContainerType.OneValue;

                    twnCap.OneValueCapability.ItemType = TwainItemType.Uint16;
                    twnCap.OneValueCapability.Value    = (UInt16)TwainTransferMode.File;

                    // Set the value of ICAP_XFERMECH (Image Transfer Mechanism) capability
                    twainSession.SetCapability(twnCap, TwainSetCapabilityMode.Set);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Esempio n. 10
0
        private void SetTransferMode()
        {
            using (TwainCapability twnCap = new TwainCapability())
            {
                try
                {
                    twnCap.Information.Type          = TwainCapabilityType.ImageTransferMechanism;
                    twnCap.Information.ContainerType = TwainContainerType.OneValue;

                    twnCap.OneValueCapability.ItemType = TwainItemType.Uint16;
                    twnCap.OneValueCapability.Value    = (UInt16)_twaintransferMode;

                    // Set the value of ICAP_XFERMECH (Image Transfer Mechanism) capability
                    _twainSession.SetCapability(twnCap, TwainSetCapabilityMode.Set);
                }
                catch (Exception ex)
                {
                    string errorMsg = string.Format("Error set TwainCapabilityType.ImageTranserMechanism is {0}", ex.Message);
                    AddErrorToErrorList(errorMsg);
                }
            }
        }
Esempio n. 11
0
        private void listCapabilities_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.listCapabilities.SelectedIndex == -1)
            {
                return;
            }
            DeviceCapability cap = (DeviceCapability)this.listCapabilities.SelectedItem;

            this.listValues.Items.Clear();

            this.lblCapType.Text = _device.Controller.GetCapabilityTwainType(cap).ToString();

            QueryOperation operations = _device.GetQueryOperations(cap);

            FillOperationList(operations);

            if ((operations & QueryOperation.TWQC_GET) == QueryOperation.TWQC_GET)
            {
                TwainCapability capability = new TwainCapability(cap, TwainContainer.TWON_DONTCARE16, IntPtr.Zero);
                if (_device.Controller.SendCommand(TwainTriplet.CapabilityGet, _device.Identity, capability) == TwainReturnCode.TWRC_SUCCESS)
                {
                    this.lblGetContainer.Text = capability.ContainerType.ToString();

                    // Always use a TwainMemory object when working with memory returned from a driver.
                    TwainMemory memory = _device.Controller.CreateTwainMemory(capability.Data);
                    try
                    {
                        object vals = _device.Controller.ReadTwainContainerData(capability.ContainerType, memory);

                        FillValueList(vals, cap);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("ReadTwainContainerData failed for " + cap.ToString() + "\r\n\r\n" + ex.Message + "\r\n" + ex.StackTrace);
                    }
                    finally
                    {
                        memory.Dispose();
                    }
                }
                else
                {
                    this.lblGetContainer.Text = "Unknown";
                }
            }
            else
            {
                this.lblGetContainer.Text = "Not Supported";
            }

            if ((operations & QueryOperation.TWQC_GETCURRENT) == QueryOperation.TWQC_GETCURRENT)
            {
                TwainCapability capability = new TwainCapability(cap, TwainContainer.TWON_DONTCARE16, IntPtr.Zero);
                if (_device.Controller.SendCommand(TwainTriplet.CapabilityGet, _device.Identity, capability) == TwainReturnCode.TWRC_SUCCESS)
                {
                    this.lblGetCurrentContainer.Text = capability.ContainerType.ToString();

                    // Don't forget to free the memory allocated by the driver.
                    _device.Controller.FreeTwainMemory(capability.Data);
                }
                else
                {
                    this.lblGetContainer.Text = "Unknown";
                }
            }
            else
            {
                this.lblGetCurrentContainer.Text = "Not Supported";
            }
        }
Esempio n. 12
0
        private void CheckTransferMode(object sender, System.EventArgs e)
        {
            bool            fileMode = false, memoryMode = false, nativeMode = false;
            int             xfer   = 0;
            TwainCapability twnCap = null;

            try
            {
                twnCap = _session.GetCapability(TwainCapabilityType.ImageTransferMechanism, TwainGetCapabilityMode.GetValues);

                switch (twnCap.Information.ContainerType)
                {
                case TwainContainerType.OneValue:
                {
                    if (twnCap.OneValueCapability.ItemType == TwainItemType.Uint16)
                    {
                        xfer = Convert.ToUInt16(twnCap.OneValueCapability.Value);

                        if (xfer == (int)TwainCapabilityValue.TransferMechanismFile)
                        {
                            fileMode = true;
                        }
                        if (xfer == (int)TwainCapabilityValue.TransferMechanismMemory)
                        {
                            memoryMode = true;
                        }
                        if (xfer == (int)TwainCapabilityValue.TransferMechanismNative)
                        {
                            nativeMode = true;
                        }
                    }
                    break;
                }

                case TwainContainerType.Enumeration:
                {
                    int count = twnCap.EnumerationCapability.Count;
                    for (int i = 0; i < count; i++)
                    {
                        if (twnCap.EnumerationCapability.ItemType == TwainItemType.Uint16)
                        {
                            xfer = Convert.ToUInt16(twnCap.EnumerationCapability.GetValue(i));

                            if (xfer == (int)TwainCapabilityValue.TransferMechanismFile)
                            {
                                fileMode = true;
                            }
                            if (xfer == (int)TwainCapabilityValue.TransferMechanismMemory)
                            {
                                memoryMode = true;
                            }
                            if (xfer == (int)TwainCapabilityValue.TransferMechanismNative)
                            {
                                nativeMode = true;
                            }
                        }
                    }

                    break;
                }
                }
            }
            catch (Exception ex)
            {
                Messager.ShowError(this, ex);
                return;
            }

            _rdTransferFile.Enabled   = fileMode;
            _rdTransferMemory.Enabled = memoryMode;
            _rdTransferNative.Enabled = nativeMode;

            if (memoryMode)
            {
                _rdTransferMemory.Checked = true;
                _rdTransferMemory_CheckedChanged(sender, e);
            }

            if (fileMode)
            {
                _rdTransferFile.Checked = true;
                _rdTransferFile_CheckedChanged(sender, e);
            }

            if (nativeMode)
            {
                _rdTransferNative.Checked = true;
                _rdTransferNative_CheckedChanged(sender, e);
            }

            _txtFileName_TextChanged(sender, e);
        }
      private bool Open()
      {
        if(fTwain.OpenDataSource(fIdent))
        {
          fState = StateType.Idle;

          fCapabilitySupportedTypes = new TwainCapability(fTwain, fIdent, TwCap.SupportedCapabilities);
          fCapabilityPixelType = new TwainCapability(fTwain, fIdent, TwCap.IPixelType);
          fCapabilityPageSize = new TwainCapability(fTwain, fIdent, TwCap.SupportedSizes);
          fCapabilityResolutionX = new TwainCapability(fTwain, fIdent, TwCap.XResolution);
          fCapabilityResolutionY = new TwainCapability(fTwain, fIdent, TwCap.YResolution);
          fCapabilityFeederEnabled = new TwainCapability(fTwain, fIdent, TwCap.FeederEnabled);
          fCapabilityFeederLoaded = new TwainCapability(fTwain, fIdent, TwCap.FeederLoaded);
          fCapabilityBitDepthReduction = new TwainCapability(fTwain, fIdent, TwCap.BitDepthReduction);
          fCapabilityThreshold = new TwainCapability(fTwain, fIdent, TwCap.Threshold);
          fCapabilityBrightness = new TwainCapability(fTwain, fIdent, TwCap.Brightness);
          fCapabilityContrast = new TwainCapability(fTwain, fIdent, TwCap.Contrast);
        }
        return IsOpen;
      }