This project has moved. For the latest updates, please go here.

На .NET 4 не видит сканер

Jul 11, 2014 at 1:23 PM
Добрый день! Использовал вашу библиотеку в своей программе на .NET 3.5 и все работало нормально. Вот пример выбора сканера из списка:
Image
Переделываю на .NET 4, перестал видеть "старый" сканер:
Image
Ниже приведен код:
private int _sourceIndex = -1;
private BitmapImage bitmapImage = new BitmapImage();
private readonly Twain32 _twain32 = new Twain32();

        public void InitializeScan()
        {
            _twain32.OpenDSM();
            _twain32.ShowUI = false;
            _twain32.AcquireCompleted += new EventHandler(DrawImage);
        }

        public BitmapImage Scan()
        {
            _twain32.CloseDataSource();
            if (_sourceIndex == -1)
            {
                _twain32.SelectSource();
                _sourceIndex = _twain32.SourceIndex;
            }
            else
            {
                _twain32.SourceIndex = _sourceIndex;
            }
            try
            {
                _twain32.OpenDataSource();
                _twain32.Capabilities.XResolution.Set(300f);
                _twain32.Capabilities.YResolution.Set(300f);
                _twain32.Acquire();
            }
            catch (TwainException exception)
            {
                MessageBox.Show(exception.Message);
                _twain32.CloseDataSource();
            }
            return bitmapImage;
        }

        private void DrawImage(object sender, EventArgs e)
        {
            System.Drawing.Image img = null;
            Twain32 twain32 = sender as Twain32;
            if (twain32 != null)
            {
                img = twain32.GetImage(0);
            }
            byte[] src;
            using (MemoryStream ms = new MemoryStream())
            {
                if (img != null) img.Save(ms, ImageFormat.Jpeg);
                src = ms.GetBuffer();
            }
            using (MemoryStream m2 = new MemoryStream(src))
            {
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = m2;
                bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                bitmapImage.EndInit();
            }
        }
Coordinator
Jul 11, 2014 at 4:34 PM
Добрый день, DyGer!
Мне кажется, что проблема не связана с версией .net framework. Скорее всего, дело в версии DSM, т.е. в первом случае использовался TWAIN 1.x, а во втором 2.x (свойство Twain32.IsTwain2Enable Use TWAIN 2.x). Если моё предположение верно, то данный вопрос следует задать на форуме twain.org
Marked as answer by DyGer on 7/11/2014 at 10:29 AM
Jul 11, 2014 at 6:29 PM
Кажется решил проблему, поставил в сборке проекта компилировать для версий x86 и поставил флаг IsTwain2Enable в false. Все заработало. Большое спасибо.