20-0721 Vintasoft Troubleshooting

opzerg·2020년 7월 21일
0

Troubleshooting

목록 보기
1/1

project를 32bit에서 64bit로 변경하는 과정

장애상황 발견

  • 암호화 라이브러리가 32bit 버전이라 project를 32bit 버전으로 사용하고 있었다.

  • 20-0720 암호화 라이브러리를 64bit release, debug 버전 빌드를 완료함

  • HyperBridge 빌드버전을 WIN32 → x64로 번경 후 build

  • build는 성공했으나 debug 모드로 실행시 DeviceManager 초기화 하는 부분에서 오류발견

    DeviceManager deviceManager = new DeviceManager();
    deviceManager.Open(); //exception. Cannot initialize the device manager.

문제

  • anycpu Vintasoft.Twain.dll 내부에서 오류

예상되는 원인

  • dll 버전
  • DeviceManager property setting

해결 시도

  • 32, 64 버전의 Vintasoft.Twain.dll을 import

    • 32 bit 버전은 여전히 잘되나 64 bit 버전은 같은 오류를 발생
    • 기존에 사용하던 anycpu 버전으로 변경
  • vintasoft 11 sdk 방문

    • Issue 발견

    TWAIN device manager

    • 64bit application은 twain 2.x를 사용해야한다.

      • twain 2.x → twaindsm.dll
      • dll 별도 다운로드 후 가이드 대로 "C:\Windows\System32"로 이동
      • 64bit project debug 모드로 DeviceManager.Open이 됨.
      • 이미 설치되어 있던 스캐너 드라이버를 찾지 못하는 이슈가 확인됨.
    • 샘플코드로 테스트 코드를 작성

      • DeviceManager.Use32BitDevices() 함수를 이용
      • 갖고있는 Vintasoft.Twain.dll이 9.0 버전으로 Use32BitDevices를 사용할 수 없음.
      • 10 이상부터 쓸 수 있는 것을 확인함.
    • 이미 설치되어 있던 스캐너 드라이버를 찾지 못하는 이슈가 확인됨.

      • twaindsm을 사용하는 scanner driver가 한정적인 것으로 확인됨.

        EPSON DS-1630, Cannon DG-1130 32, 64 bit driver 설치

        32 bit

        64 bit

      • Canon DR-1130 64 bit driver가 twaindsm을 통해 감지되지 않는 것을 확인 함.

해결방안

  1. Vintasoft SDK 10버전 이상으로 사용

    /// <summary>
    /// Shows a list of 32-bit TWAIN drivers in 64-bit application.
    /// </summary>
    /// <remarks>
    /// This code must be used in 64-bit application.
    /// </remarks>
    void Use32BitTwainDriversIn64BitApplication()
    {
        // create the device manager
        using (DeviceManager deviceManager = new DeviceManager())
        {
            // specify that TWAIN device manager 2.x must be used
            deviceManager.IsTwain2Compatible = true;
            // specify that 64-bit TWAIN device manager 2.x must use 32-bit devices
            deviceManager.Use32BitDevices();
    
            // open the device manager
            deviceManager.Open();
    
            // show a dialog for selecting 32-bit TWAIN driver
            deviceManager.ShowDefaultDeviceSelectionDialog();
        }
    }

    출처:

    TWAIN device manager

  2. 64bit 버전에서 스캐너 드라이버 제한

  3. Leadtools.dll 사용

profile
코딩합시다.

0개의 댓글