C\#Twain 프로 토 콜 기반 스캐너 호출,다 중 이미지 출력 모드 설정(Multi image output)

출처:https://www.cnblogs.com/SunSpring
Twain
스캐너,디지털 카메라 와 다른 이미지 수집 장치 가 도 입 됨 에 따라 사용 자 는 이미 지 를 그들의 문서 와 다른 작업 에 통합 시 키 는 가 치 를 열렬 히 발견 하 였 다.그러나 이러한 래 스 터 데 이 터 를 지원 하 는 디 스 플레이 와 작업 비용 이 매우 높 습 니 다.응용 프로그램 개발 자 는 사용자 인터페이스 를 만 들 고 장 치 를 내장 하여 다양한 사용 가능 한 이미지 장 치 를 제어 해 야 합 니 다.
프로그램 이 주어진 장 치 를 지원 할 준비 가 되면 그들 은 우울 한 현실 에 직면 하 게 될 것 이다.장치 가 새로운 기능 과 특성 을 계속 업그레이드 하 는 것 이다.응용 프로그램 개발 자 들 은 최신 이미지 수집 장치 와 소프트웨어 응용 프로그램 개발 자 들 이 이미지 장치 와 응용 프로그램 간 의 표준 통신 이 필요 하 다 는 것 을 인식 하기 위해 제품 을 계속 수정 하 는 것 을 발견 했다.하나의 기준 은 그들 제품 의 사용 에 유리 하 다.이 는 더 많은 응용 프로그램 이 설비 공급 업 체 의 제품 에 접근 할 수 있 도록 허용 할 것 이 며,응용 프로그램 공급 업 체 는 이러한 장치 에서 온 데 이 터 를 방문 할 수 있 으 며,이러한 데 이 터 를 제공 하 는 것 이 어떤 유형의 설비 나 특정한 장치 인지 에 관심 을 가 질 필요 가 없다.
TWAIN 의 개발 은 바로 일치 성과 간소화 에 대한 수요 에서 나 온 것 이다.
Twain 개발 안내
TWAIN 은 소프트웨어 응용 프로그램 과 이미지 수집 장치(데이터 의 원본)간 통신 에 사용 되 는 표준 소프트웨어 프로 토 콜 과 API(응용 프로그램 프로 그래 밍 인터페이스)를 정의 했다.
Twain 의 세 가지 핵심 요 소 는:
  • Application software
  • 프로그램 을 수정 해 야 TWAIN 을 사용 할 수 있 습 니 다.
  • Source Manager software
  • 이 소프트웨어 는 응용 프로그램 과 소스 프로그램 간 의 상호작용 을 관리한다.이 코드 는 TWAIN 개발 자의 공구 꾸러미 에서 제공 되 며,모든 TWAIN 응용 프로그램 과 소스 코드 는 무료 로 제공 되 어야 합 니 다.
  • Source software
  • 이 소프트웨어 는 이미지 수집 장 치 를 제어 하고 설비 개발 자가 TWAIN 규범 에 따라 작성 한다.전통 적 인 장치 드라이버 는 현재 원본 소프트웨어 에 포함 되 어 있 으 며 응용 프로그램 에서 제공 할 필요 가 없다.

    이 몇 가지 요소 에 관 해 서 는 어떤 관계 입 니까?쉽게 말 하면 Twain 은 하나의 협의 입 니 다.이 협 의 는 우리 가 직접 실현 하고 장치(여 기 는 스캐너)와 의 통신 을 필요 로 하지 않 습 니 다.이 통신 은 Data Source Manager 라 는 사람 이 제공 합 니 다.우리 의 응용 프로그램 은 Data Source Manager 가 대응 하 는 기능 만 호출 해 야 합 니 다.그리고 Data Source Manager 가 Twain 프로 토 콜 을 지원 하 는 장치 통신 을 책임 지고 지원 합 니 다.

    이 Data Source Manager 는 windows 에서 twain 입 니 다.32.dll 실현.

    Twain 프로 토 콜 PDFhttps://ask.qcloudimg.com/draft/7651952/jhzuki5dnp.pdf
    Twain 통신 과정
    TWAIN 요소 간 통신 은 두 개의 입구 점 을 통 해 이 루어 질 수 있다.그들 은 DSMEntry()와 DSEntry()。DSM 은 데이터 원본 관리자(즉,twain32.dll),DS 는 데이터 원본(드라이버)을 가리킨다.

    응용 프로그램의 목 표 는 원본 에서 데 이 터 를 가 져 오 는 것 입 니 다.그러나 응용 프로그램 은 원본 을 직접 호출 할 수 없습니다.데이터,기능 정보,오류 정보 등에 대한 모든 요청 은 원본 관리 자 를 통 해 처리 해 야 합 니 다.
    Twain 은 약 140 개의 조작 을 정의 했다.응용 프로그램 은 원본 관리자 에 전송 합 니 다.응용 프로그램 은 모든 요청 작업 의 최종 목적지 인 요소(원본 관리자 나 원본)를 지정 합 니 다.
    응용 프로그램 은 원본 관리 자 를 통 해 유일한 입구 점 DSMEntry()함수 가 원본 관리자 와 통신 합 니 다.DSM_Entry 함수 의 매개 변수 목록 포함:
  • 하나의 식별 자 구 조 는 함수 호출 프로그램 에 대한 정 보 를 제공 합 니 다.
  • 요청 한 목적지(원본 관리자 또는 원본).
  • 작업 을 요청 한 3 원 그룹(triplet)을 설명 합 니 다.삼원 조 손가락:
  • 조 작 된 데이터 그룹(DG)
    작 동 하 는 데이터 매개 변수 형식(DAT)
    조작 소식(MSG)
  • 함수 호출 은 값(반환 코드)을 되 돌려 줍 니 다.작업 의 성공 이나 실 패 를 표시 합 니 다.
  • 
    TW_UINT16 TW_CALLINGSTYLE DSM_Entry
     ( pTW_IDENTITY pOrigin, // source of message
      pTW_IDENTITY pDest, // destination of message
      TW_UINT32 DG, // data group ID: DG_xxxx
      TW_UINT16 DAT, // data argument type: DAT_xxxx
      TW_UINT16 MSG, // message ID: MSG_xxxx
      TW_MEMREF pData // pointer to data
     );
    Twain 상태
    응용 프로그램,소스 관리자,소스 는 데이터 획득 을 관리 하기 위해 통신 해 야 합 니 다.이 과정 은 반드시 특정한 순서 로 발생 해 야 한다.이것 은 논리 에 맞 는 것 이다.예 를 들 어 원본 관리 자 를 불 러 오고 요청 통신 을 준비 하기 전에 프로그램 은 원본 에서 온 데이터 전송 을 성공 적 으로 요청 할 수 없습니다.시퀀스 의 정확 한 실행 을 위해 TWAIN 프로 토 콜 은 TWAIN 세 션 에 존재 하 는 7 가지 상 태 를 정의 합 니 다.세 션 은 응용 프로그램 이 원본 관리 자 를 통 해 특정 원본 에 연결 하 는 시간 대 입 니 다.
    응용 프로그램 이 원본 관리자 에 연결 되 는 동안 유일한 세 션 입 니 다.Source Manager 와 Source 의 TWAIN 요 소 는 모두 특정한 상 태 를 차지 합 니 다.새로운 상태 로 전환 하 는 것 은 응용 프로그램 이나 소스 가 요청 한 작업 으로 인해 발생 합 니 다.전환 은 앞으로 또는 뒤로 진행 할 수 있 습 니 다.대부분의 전환 은 단일 상태 전환 이다.
    상태 전환 그림 은 다음 과 같 습 니 다.

    State 1 to 2-소스 관리자 불 러 오기 DSM엔트리 인터페이스
    State 2 to 3-소스 관리자 열기
    State 3-소스 선택
    State 3 to 4-소스 열기
    State 4-source 의 Capabilities 설정
    State 4 to 5-source 에서 데이터 가 져 오기 요청
    State 5 to 6-데 이 터 는 메 시 지 를 준비 할 수 있 습 니 다.
    State 6 to 7-데이터 전송 시작
    State 7 to 6 to 5-전송 완료
    State 5 to 1-연결 끊 기
    C\#호출
    응용 프로그램 은 Source Manager 를 호출 하여 NTwain 을 사용 하여 조작 하고 nuget 에 인용 을 추가 합 니 다.

    대응 하 는 github 주소 입 니 다.원본 코드 와 demo 가 있 습 니 다.https://github.com/soukoku/ntwain/tree/v3
    인용 을 추가 한 후 source manager 를 열 고 Source 를 선택 하거나 기본 Source 를 불 러 올 수 있 습 니 다.

    Source 를 열 면 상태 가 4 이면 장 치 를 설정 할 수 있 습 니 다.이 기능 들 은 여러 종류 에 존재 하지만 기본 값,현재 값,가능 한 값 이 있 습 니 다.
    다른 지원 가능 한 값 입 니 다.이런 종 류 는 협의 에서 찾 을 수 있 는데 그것 이 바로 구동 안에 대응 하 는 각종 설정 이다.Twain 프로 토 콜 에서 이러한 기능 을 Capabilities 라 고 부 르 고 이에 대응 하 는 NTwain 가방 에 도 패키지 되 어 있 습 니 다.예 를 들 어 스캐너 양면 스 캔 을 설정 하 는 것 입 니 다.
    
    _twain.CurrentSource.Capabilities.CapDuplexEnabled.SetValue(BoolType.True);

    후지 통 fujitsu 설정 이미지 모드:다 중 이미지 출력
    NTwain 설정 을 사용 할 때 CapPixelType 을 통 해 그림 모드 를 설정 하면 흑백 그 레이스 케 일 세 가지 만 설정 할 수 있 습 니 다.다음 코드 를 통 해:
    
    _twain.CurrentSource.Capabilities.ICapPixelType.SetValue(PixelType.RGB)
    다 중 그림 출력 을 설정 할 수 없습니다.구동 에서 그림 을 찾 으 면 이 몇 가지 방식 만 지원 합 니 다.그리고 저 는 제 가 어떤 기능 을 보 았 는 지 알 고 Twain 협 의 를 본 다음 에 인터넷 에서 이런 자 료 를 찾 지 못 했 습 니 다.대부분 간단 한 소개 로 일주일 동안 고민 을 했 습 니 다.그리고 vintasoft 라 는 사 이 트 를 찾 았 을 때 질문 을 보고 문득 깨 달 았 습 니 다.원래 이 설정 Twain 표준 협의 에는 이것 이 없 었 습 니 다.저 는 후지 통 공장 이 직접 만 든 것 이 라 고 생각 합 니 다.위 에 Twain 통신 과정 에서 여러 가지 조작 은 DSM 을 통 해서 만 가능 하 다 고 했 기 때 문 입 니 다.Entry()함수,그리고 당신 이 들 어 오 는 3 원 그룹의(TWUINT16 DAT,// data argument type: DAT_xxxx)Id 가 정확 하고 지지 하면 됩 니 다.

    다음 코드 new 의 다 중 이미지 출력 기능 대상 을 사용 하고 다른 것 처럼 설정 하면 됩 니 다.
    
    new CapWrapper<MutilImageOutPutType>(dataSource, (CapabilityId)0x80f2, ValueExtensions.ConvertToEnum<MutilImageOutPutType>,
         value => new TWOneValue
         {
          Item = (uint)value,
          ItemType = ItemType.UInt16
         });
    
    public enum MutilImageOutPutType : ushort
     {
      Disabled = 0,
      RGBAndBW = 1,
      BWAndRGB = 2,
      Enabled = 3,
      Auto = 4,
     }
    마지막 스 캔 으로 그림 가 져 오기

    이상 은 C\#Twain 프로 토 콜 을 기반 으로 스캐너 를 호출 하고 다 중 이미지 출력 모드(Multi image output)를 설정 하 는 상세 한 내용 입 니 다.C\#Twain 프로 토 콜 을 기반 으로 스캐너 를 호출 하 는 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기