Files
2025-07-03 11:39:24 +02:00

2178 lines
77 KiB
C

#pragma once
/*
* Device List Option
*/
#define SMART70_DEVICELIST_USB 0x01
#define SMART70_DEVICELIST_NET 0x02
#define SMART70_DEVICELIST_ALL (SMART70_DEVICELIST_USB | SMART70_DEVICELIST_NET)
/*
* Device Name
*/
#define SMART70_OPENDEVICE_BYID 0
#define SMART70_OPENDEVICE_BYDESC 1
/*
* Page / Panel
*/
#define PAGE_P1FRONT 0
#define PAGE_P1BACK 1
#define PAGE_P2FRONT 2
#define PAGE_P2BACK 3
#define PAGE_MAX 4
#define PANEL_COLOR 1
#define PANEL_BLACK 2
#define PANEL_OVERLAY 4
#define PANEL_UV 8
/*
* Contactless-PCSC : Auth Side
*/
#define PCSC_MIFARE_AUTH1A 0x60 // authentication with Mifare key A
#define PCSC_MIFARE_AUTH1B 0x61 // authentication with Mifare key B
/*
* Contactless-DUALi : Mifare Side
*/
#define DUALI_MIFARE_SIDEA 0x00 // Mifare key A on DUALi
#define DUALI_MIFARE_SIDEB 0x04 // Mifare key B on DUALi
/*
* Device
*/
#define INTERNALDEV 1 // internal device (IC, RF)
#define EXTERNALDEV 2 // external device (SIM, RF)
/*
* Simple State Code Definition.
*/
// Action Result
#define SS_ACT_SUCCESS 0x00
#define SS_ACT_FAIL 0x01
#define SS_ACT_RESULT 0x01 // mask
// Action State
#define SS_ACT_IDLE 0x00
#define SS_ACT_RUN 0x02
#define SS_ACT_STATE 0x02 // mask
// Card State
#define SS_CARD_ABSENT 0x00
#define SS_CARD_EXIST 0x04
#define SS_CARD_STATE 0x04 // mask
#define SS_INIT 0x08
// Command State
#define SS_CMD_IDLE 0x00
#define SS_CMD_RUN 0x10
#define SS_CMD_STATE 0x10 // mask
// Command Result
#define SS_CMD_SUCCESS 0x00
#define SS_CMD_FAIL 0x20
#define SS_CMD_RESULT 0x20 // mask
/*
* SMART Printer Status Code Definition.
*/
// SMART-70 PRINTER STATUS
#define S7PS_M_SBSRUNNING 0x0000000000000001 // SBS(Step by Step) 명령 수행 중
#define S7PS_M_CARDMOVE 0x0000000000000002 // 인쇄위치 이동 중
#define S7PS_M_CARDIN 0x0000000000000004 // 카드 흡입 중
#define S7PS_M_CARDOUT 0x0000000000000008 // 카드 배출 중
#define S7PS_M_THEAD 0x0000000000000010 // 써멀 헤드 업/다운 중
#define S7PS_M_SEEKRIBBON 0x0000000000000020 // 리본 찾는 중
#define S7PS_M_MOVERIBBON 0x0000000000000040 // 리본 이동 중
#define S7PS_M_PRINT 0x0000000000000080 // 인쇄 중
#define S7PS_M_MAGRW 0x0000000000000100 // 마그네틱 읽기/쓰기 중
#define S7PS_M_RECVPRINTDATA 0x0000000000000200 // 인쇄 버퍼 받는 중
#define S7PS_M_INIT 0x0000000000000400 // 장치 초기화 중
#define S7PS_S_READY 0x0000000000000800 // 대기상태
#define S7PS_S_INSTALLINTENCODER 0x0000000000008000 // 내부 인코더 장착
#define S7PS_S_INSTALLEXTHOPPER 0x0000000000010000 // 외부 호퍼 장착
#define S7PS_S_INSTALLEXTSTACKER 0x0000000000020000 // 외부 스태커 장착
#define S7PS_S_INSTALLEXTENCODER 0x0000000000040000 // 외부 인코더 장착
#define S7PS_S_INSTALLEXTLAMINATOR 0x0000000000080000 // 외부 라미네이터 장착
#define S7PS_S_INSTALLEXTFLIPPER 0x0000000000100000 // 외부 플리퍼 장착
#define S7PS_S_INSTALLEXTETC 0x0000000000200000 // 외부 기타장치 장착
#define S7PS_S_CASEOPEN 0x0000000000400000 // 케이스 열림 상태
#define S7PS_S_SOFTLOCKED 0x0000000000800000 // 소프트 락 상태
#define S7PS_S_KEYLOCKED 0x0000000001000000 // 키 락 상태
#define S7PS_S_DETECTCARD 0x0000000002000000 // 내부 센서에 카드 감지 (In/Center/Out Sensor)
#define S7PS_S_DETECTFRONTDEVICE 0x0000000004000000 // 전방 장치(Front Device) 연결되어있음
#define S7PS_S_DETECTREARDEVICE 0x0000000008000000 // 후방 장치(Rear Device) 연결되어있음
#define S7PS_S_CLEANWARNING 0x0000000010000000 // 프린터 클리닝 경고
#define S7PS_S_HAVEPRINTDATA 0x0000000020000000 // 인쇄 데이터 버퍼 보유 중
#define S7PS_S_SBSMODE 0x0000000040000000 // SBS(Step by Step) 모드 상태
#define S7PS_S_TESTMODE 0x0000000080000000 // 테스트모드 상태
#define S7PS_M_MASK (S7PS_M_SBSRUNNING|S7PS_M_CARDMOVE|S7PS_M_CARDIN|S7PS_M_CARDOUT|S7PS_M_THEAD|S7PS_M_SEEKRIBBON|S7PS_M_MOVERIBBON|S7PS_M_PRINT|S7PS_M_MAGRW|S7PS_M_INIT)
#define S7PS_S_MASK (S7PS_S_INSTALLINTENCODER|S7PS_S_INSTALLEXTHOPPER|S7PS_S_INSTALLEXTSTACKER|S7PS_S_INSTALLEXTENCODER|S7PS_S_INSTALLEXTLAMINATOR|S7PS_S_INSTALLEXTFLIPPER|S7PS_S_INSTALLEXTETC|S7PS_S_CASEOPEN|S7PS_S_SOFTLOCKED|S7PS_S_KEYLOCKED|S7PS_S_DETECTCARD|S7PS_S_DETECTFRONTDEVICE|S7PS_S_DETECTREARDEVICE|S7PS_S_CLEANWARNING|S7PS_S_HAVEPRINTDATA|S7PS_S_SBSMODE|S7PS_S_TESTMODE)
#define S7PS_E_CARDIN 0x0000000100000000 // 카드-인 에러
#define S7PS_E_CARDMOVE 0x0000000200000000 // 카드 이동 에러
#define S7PS_E_CARDOUT 0x0000000400000000 // 카드 배출 에러
#define S7PS_E_THEADLIFT 0x0000000800000000 // 써멀 헤드 업/다운 에러 // S7PS_E_THEAD
#define S7PS_E_PRINT 0x0000004000000000 // 인쇄 중 에러
#define S7PS_E_MAGRW 0x0000008000000000 // (내부) 마그네틱 트랙 읽기/쓰기 에러
#define S7PS_E_MAGREADT1 0x0000010000000000 // (내부) 마그네틱 트랙 1 읽기 에러
#define S7PS_E_MAGREADT2 0x0000020000000000 // (내부) 마그네틱 트랙 2 읽기 에러
#define S7PS_E_MAGREADT3 0x0000040000000000 // (내부) 마그네틱 트랙 3 읽기 에러
#define S7PS_E_CONNECTEXTHOPPER 0x0000080000000000 // 외부 호퍼 연결 에러
#define S7PS_E_CONNECTEXTSTACKER 0x0000100000000000 // 외부 스태커 연결 에러
#define S7PS_E_CONNECTEXTENCODER 0x0000200000000000 // 외부 인코더 연결 에러
#define S7PS_E_CONNECTEXTLAMINATOR 0x0000400000000000 // 외부 라미네이터 연결 에러
#define S7PS_E_CONNECTEXTFLIPPER 0x0000800000000000 // 외부 플리퍼 연결 에러
#define S7PS_E_CONNECTEXTETC 0x0001000000000000 // 외부 기타장치 연결 에러
#define S7PS_E_EXTPRESETMATCH 0x0002000000000000 // 외부 프리셋 장치 연결 에러
#define S7PS_E_SCHEDULER 0x0020000000000000 // 스케쥴러 수행 에러
#define S7PS_E_RIBBONEMPTY 0x0040000000000000 // 리본 잔량 0
#define S7PS_E_RIBBONSEEK 0x0080000000000000 // 리본 서치 에러
#define S7PS_E_RIBBONMOVE 0x0100000000000000 // 리본 이동 에러
#define S7PS_F_THEADABSENT 0x0200000000000000 // 인쇄 헤드 미장착
#define S7PS_F_THEADOVERHEAT 0x0400000000000000 // 인쇄 헤드 과열
#define S7PS_F_RIBBONABSENT 0x0800000000000000 // 리본 없음
#define S7PS_F_PRINTDATA 0x1000000000000000 // 인쇄 데이터 오류
#define S7PS_F_INCORRECTPASSWORRD 0x2000000000000000 // 패스워드 틀림
#define S7PS_F_CONFIG 0x4000000000000000 // 설정 실패
#define S7PS_E_MASK (S7PS_E_CARDIN|S7PS_E_CARDMOVE|S7PS_E_CARDOUT|S7PS_E_THEADLIFT|S7PS_E_PRINT|S7PS_E_MAGRW|S7PS_E_MAGREADT1|S7PS_E_MAGREADT2|S7PS_E_MAGREADT3|S7PS_E_CONNECTEXTHOPPER|S7PS_E_CONNECTEXTSTACKER|S7PS_E_CONNECTEXTENCODER|S7PS_E_CONNECTEXTLAMINATOR|S7PS_E_CONNECTEXTFLIPPER|S7PS_E_CONNECTEXTETC|S7PS_E_EXTPRESETMATCH|S7PS_E_RIBBONSEEK|S7PS_E_RIBBONMOVE)
#define S7PS_F_MASK (S7PS_F_THEADABSENT|S7PS_F_THEADOVERHEAT|S7PS_F_RIBBONABSENT|S7PS_F_PRINTDATA|S7PS_F_INCORRECTPASSWORRD|S7PS_F_CONFIG)
// SMART-70 INPUT-HOPPER (HOPPER) STATUS
#define S7IS_M_CARDOUT 0x0000000000000002 // 카드 배출 중
#define S7IS_S_READY 0x0000000000010000 // 대기상태
#define S7IS_M_PROCESSING 0x0000000000020000 // 명령 수행 중
#define S7IS_S_CATRIDGENEAREMPTY 0x0000000002000000 // 카드리지 거의 비어있음 (카드 얼마 없음)
#define S7IS_S_CATRIDGEEMPTY 0x0000000004000000 // 카드리지 비어있음 (카드 없음)
#define S7IS_S_CATRIDGELOCK 0x0000000008000000 // 카드리지 락 센서 감지
#define S7IS_S_CATRIDGECONTACT 0x0000000010000000 // 카드리지 컨택 센서 감지
#define S7IS_S_CARDOUT 0x0000000020000000 // 카드 아웃 센서 감지
#define S7IS_S_REARHOOK 0x0000000040000000 // 후방 훅(Hook) 감지
#define S7IS_S_FRONTHOOK 0x0000000080000000 // 전방 훅(Hook) 감지
#define S7IS_M_MASK (S7IS_M_CARDOUT|S7IS_M_PROCESSING)
#define S7IS_S_MASK (S7IS_S_READY|S7IS_S_CATRIDGENEAREMPTY|S7IS_S_CATRIDGEEMPTY|S7IS_S_CATRIDGELOCK|S7IS_S_CATRIDGECONTACT|S7IS_S_CARDOUT|S7IS_S_REARHOOK|S7IS_S_FRONTHOOK)
#define S7IS_E_CARDOUT 0x0000000200000000 // 카드 배출 에러
#define S7IS_F_INIT 0x0001000000000000 // 초기화 에러
#define S7IS_E_MASK (S7IS_E_CARDOUT)
#define S7IS_F_MASK (S7IS_F_INIT)
// SMART-70 MULTI-HOPPER STATUS
#define S7MS_M_INIT 0x0000000000000001 // 초기화 중
#define S7MS_M_CARDOUT 0x0000000000000002 // 카드 배출 중
#define S7MS_S_READY 0x0000000000000004 // 대기상태
#define S7MS_M_PROCESSING 0x0000000000000008 // 명령 수행 중
#define S7MS_S_HOPPER1CONNECT 0x0000000000000010 // 1번 호퍼 연결 감지
#define S7MS_S_HOPPER2CONNECT 0x0000000000000020 // 2번 호퍼 연결 감지
#define S7MS_S_HOPPER3CONNECT 0x0000000000000040 // 3번 호퍼 연결 감지
#define S7MS_S_HOPPER4CONNECT 0x0000000000000080 // 4번 호퍼 연결 감지
#define S7MS_S_HOPPER5CONNECT 0x0000000000000100 // 5번 호퍼 연결 감지
#define S7MS_S_HOPPER6CONNECT 0x0000000000000200 // 6번 호퍼 연결 감지
#define S7MS_M_HOPPER1RUN 0x0000000000000400 // 1번 호퍼 동작 중
#define S7MS_M_HOPPER2RUN 0x0000000000000800 // 2번 호퍼 동작 중
#define S7MS_M_HOPPER3RUN 0x0000000000001000 // 3번 호퍼 동작 중
#define S7MS_M_HOPPER4RUN 0x0000000000002000 // 4번 호퍼 동작 중
#define S7MS_M_HOPPER5RUN 0x0000000000004000 // 5번 호퍼 동작 중
#define S7MS_M_HOPPER6RUN 0x0000000000008000 // 6번 호퍼 동작 중
#define S7MS_S_LEFTLSENSOR 0x0000000000040000 // 왼편 리밋 센서
#define S7MS_S_RIGHTLSENSOR 0x0000000000080000 // 오른편 리밋 센서
#define S7MS_S_SPSENSORA 0x0000000000100000 // 쉬프터 포지션 센서 A
#define S7MS_S_SPSENSORB 0x0000000000200000 // 쉬프터 포지션 센서 B
#define S7MS_S_SPSENSORC 0x0000000000400000 // 쉬프터 포지션 센서 C
#define S7MS_S_SPSENSORD 0x0000000000800000 // 쉬프터 포지션 센서 D
#define S7MS_S_CISENSORA0 0x0000000001000000 // 카드 인 센서 A0
#define S7MS_S_CISENSORA1 0x0000000002000000 // 카드 인 센서 A1
#define S7MS_S_CISENSORB0 0x0000000004000000 // 카드 인 센서 B0
#define S7MS_S_CISENSORB1 0x0000000008000000 // 카드 인 센서 B1
#define S7MS_S_CISENSORC0 0x0000000010000000 // 카드 인 센서 C0
#define S7MS_S_CISENSORC1 0x0000000020000000 // 카드 인 센서 C1
#define S7MS_S_CISENSORD0 0x0000000040000000 // 카드 인 센서 D0
#define S7MS_S_CISENSORD1 0x0000000080000000 // 카드 인 센서 D1
#define S7MS_M_MASK (S7MS_M_INIT|S7MS_M_CARDOUT|S7MS_M_PROCESSING|S7MS_M_HOPPER1RUN|S7MS_M_HOPPER2RUN|S7MS_M_HOPPER3RUN|S7MS_M_HOPPER4RUN|S7MS_M_HOPPER5RUN|S7MS_M_HOPPER6RUN)
#define S7MS_S_MASK (S7MS_S_READY|S7MS_S_HOPPER1CONNECT|S7MS_S_HOPPER2CONNECT|S7MS_S_HOPPER3CONNECT|S7MS_S_HOPPER4CONNECT|S7MS_S_HOPPER5CONNECT|S7MS_S_HOPPER6CONNECT|S7MS_S_LEFTLSENSOR|S7MS_S_RIGHTLSENSOR|S7MS_S_SPSENSORA|S7MS_S_SPSENSORB|S7MS_S_SPSENSORC|S7MS_S_SPSENSORD|S7MS_S_CISENSORA0|S7MS_S_CISENSORA1|S7MS_S_CISENSORB0|S7MS_S_CISENSORB1|S7MS_S_CISENSORC0|S7MS_S_CISENSORC1|S7MS_S_CISENSORD0|S7MS_S_CISENSORD1)
#define S7MS_F_INIT 0x0000000100000000 // 초기화 실패
#define S7MS_E_CARDOUT 0x0000000200000000 // 카드 배출 에러
#define S7MS_E_RUN 0x0000000800000000 // 명령 수행 에러
#define S7MS_E_HOPPER1CONTROL 0x0000001000000000 // 호퍼 1 컨트롤 에러
#define S7MS_E_HOPPER2CONTROL 0x0000002000000000 // 호퍼 2 컨트롤 에러
#define S7MS_E_HOPPER3CONTROL 0x0000004000000000 // 호퍼 3 컨트롤 에러
#define S7MS_E_HOPPER4CONTROL 0x0000008000000000 // 호퍼 4 컨트롤 에러
#define S7MS_E_HOPPER5CONTROL 0x0000010000000000 // 호퍼 5 컨트롤 에러
#define S7MS_E_HOPPER6CONTROL 0x0000020000000000 // 호퍼 6 컨트롤 에러
#define S7MS_E_HOPPER1EMPTY 0x0000040000000000 // 호퍼 1 카드 없음
#define S7MS_E_HOPPER2EMPTY 0x0000080000000000 // 호퍼 2 카드 없음
#define S7MS_E_HOPPER3EMPTY 0x0000100000000000 // 호퍼 3 카드 없음
#define S7MS_E_HOPPER4EMPTY 0x0000200000000000 // 호퍼 4 카드 없음
#define S7MS_E_HOPPER5EMPTY 0x0000400000000000 // 호퍼 5 카드 없음
#define S7MS_E_HOPPER6EMPTY 0x0000800000000000 // 호퍼 6 카드 없음
#define S7MS_E_HOPPER1 0x0001000000000000 // 호퍼 1 에러
#define S7MS_E_HOPPER2 0x0002000000000000 // 호퍼 2 에러
#define S7MS_E_HOPPER3 0x0004000000000000 // 호퍼 3 에러
#define S7MS_E_HOPPER4 0x0008000000000000 // 호퍼 4 에러
#define S7MS_E_HOPPER5 0x0010000000000000 // 호퍼 5 에러
#define S7MS_E_HOPPER6 0x0020000000000000 // 호퍼 6 에러
#define S7MS_E_MASK (S7MS_E_CARDOUT|S7MS_E_RUN|S7MS_E_HOPPER1CONTROL|S7MS_E_HOPPER2CONTROL|S7MS_E_HOPPER3CONTROL|S7MS_E_HOPPER4CONTROL|S7MS_E_HOPPER5CONTROL|S7MS_E_HOPPER6CONTROL|/*S7MS_E_HOPPER1EMPTY|S7MS_E_HOPPER2EMPTY|S7MS_E_HOPPER3EMPTY|S7MS_E_HOPPER4EMPTY|S7MS_E_HOPPER5EMPTY|S7MS_E_HOPPER6EMPTY|*/S7MS_E_HOPPER1|S7MS_E_HOPPER2|S7MS_E_HOPPER3|S7MS_E_HOPPER4|S7MS_E_HOPPER5|S7MS_E_HOPPER6)
#define S7MS_F_MASK (S7MS_F_INIT)
// SMART-70 OUTPUT-HOPPER (STACKER) STATUS
#define S7OS_M_CARDIN 0x0000000000000001 // 카드-인 중
#define S7OS_M_LIFTUP 0x0000000000000004 // 리프트-업 동작중
#define S7OS_M_LIFTDOWN 0x0000000000000008 // 리프트-다운 동작중
#define S7OS_S_READY 0x0000000000010000 // 대기상태
#define S7OS_M_PROCESSING 0x0000000000020000 // 명령 수행 중
#define S7OS_S_CARDSTANDBY 0x0000000002000000 // 카드 대기센서 감지
#define S7OS_S_CATRIDGEHAVESPACE 0x0000000004000000 // 카드리지 공간 여유 있음
#define S7OS_S_CATRIDGELOCK 0x0000000008000000 // 카드리지 락 센서 감지
#define S7OS_S_CATRIDGECONTACT 0x0000000010000000 // 카드리지 컨택 센서 감지 안됨
#define S7OS_S_CARDINENABLER 0x0000000020000000 // 카드 인 가능 센서 감지
#define S7OS_S_LIFTUP 0x0000000040000000 // 리프트 업 상태
#define S7OS_S_DETECTCARDIN 0x0000000080000000 // 카드인 센서에 카드 감지
#define S7OS_M_MASK (S7OS_M_CARDIN|S7OS_M_LIFTUP|S7OS_M_LIFTDOWN|S7OS_M_PROCESSING)
#define S7OS_S_MASK (S7OS_S_READY|S7OS_M_PROCESSING|S7OS_S_CARDSTANDBY|S7OS_S_CATRIDGEHAVESPACE|S7OS_S_CATRIDGELOCK|S7OS_S_CATRIDGECONTACT|S7OS_S_CARDINENABLER|S7OS_S_LIFTUP|S7OS_S_DETECTCARDIN)
#define S7OS_E_CARDIN 0x0000000100000000 // 카드-인 에러
#define S7OS_E_LIFTUP 0x0000000400000000 // 리프트-업 에러
#define S7OS_E_LIFTDOWN 0x0000000800000000 // 리프트-다운 에러
#define S7OS_F_INIT 0x0001000000000000 // 초기화 에러
#define S7OS_E_MASK (S7OS_E_CARDIN|S7OS_E_LIFTUP|S7OS_E_LIFTDOWN)
#define S7OS_F_MASK (S7OS_F_INIT)
// SMART-70 FLIPPER STATUS
#define S7FS_M_CARDIN 0x0000000000000001 // 카드-인 중
#define S7FS_M_CARDOUT 0x0000000000000002 // 카드 배출 중
#define S7FS_M_FLIPPING 0x0000000000000004 // 플리핑 중
#define S7FS_M_CARDMOVE 0x0000000000000008 // 카드 이동 중
#define S7FS_S_SMARTREADERDOWN 0x0000000000000010 // IC 리더 다운 상태. (Board Ver.2 에서 사용)
#define S7FS_S_SMARTREADERUP 0x0000000000000020 // IC 리더 업 상태. (Board Ver.2 에서 사용)
#define S7FS_S_EXTBOARDABSENT 0x0000000000000100 // 확장보드 연결 안되어있음. (Board Ver.2 에서 사용)
#define S7FS_S_DETECTCARDSCANIN 0x0000000000000200 // 스캔모듈 카드 인(하단) 센서 카드감지. (Board Ver.2 에서 사용)
#define S7FS_S_DETECTCARDSCANOUT 0x0000000000000400 // 스캔모듈 카드 아웃(상단) 센서 카드감지. (Board Ver.2 에서 사용)
#define S7FS_S_SMARTREADERCAMSENSOR 0x0000000000000800 // IC 리더 캠 센서. (Board Ver.2 에서 사용)
#define S7FS_S_NOTINSTALLSCANMOD 0x0000000000001000 // 스캔모듈 연결 안되어있음. (Board Ver.2 에서 사용)
#define S7FS_S_READY 0x0000000000010000 // 대기상태
#define S7FS_M_PROCESSING 0x0000000000020000 // 명령 수행 중
#define S7FS_S_V2BOARD 0x0000000000200000 // 보드 Ver. 2
#define S7FS_S_FLIPPERBOTTOM 0x0000000000400000 // 플리퍼 하향 상태
#define S7FS_S_FLIPPERTOP 0x0000000000800000 // 플리퍼 상향 상태
#define S7FS_S_CATRIDGELOCK 0x0000000001000000 // 카트리지 락 센서
#define S7FS_S_CASEOPENSENSOR 0x0000000002000000 // 케이스 열림 감지 센서. (Board Ver.2 에서 사용)
#define S7FS_S_CATRIDGEFULLSENSOR 0x0000000004000000 // 카트리지 꽉 참 센서
#define S7FS_S_PCSVERTICALSENSOR 0x0000000008000000 // 수직 플리퍼 위치 제어 센서
#define S7FS_S_PCSHORIZONTALSENSOR 0x0000000010000000 // 수평 플리퍼 위치 제어 센서
#define S7FS_S_DETECTCARDRIGHT 0x0000000020000000 // 우측 센서 카드감지
#define S7FS_S_DETECTCARDCENTER 0x0000000040000000 // 중앙 센서 카드감지
#define S7FS_S_DETECTCARDLEFT 0x0000000080000000 // 좌측 센서 카드감지
#define S7FS_M_MASK (S7FS_M_CARDIN|S7FS_M_CARDOUT|S7FS_M_FLIPPING|S7FS_M_PROCESSING)
#define S7FS_S_MASK (S7FS_S_READY|S7FS_S_CATRIDGELOCK|S7FS_S_CASEOPEN|S7FS_S_CATRIDGEFULL|S7FS_S_PCSVERTICAL|S7FS_S_PCSHORIZONTAL|S7FS_S_DETECTCARDRIGHT|S7FS_S_DETECTCARDCENTER|S7FS_S_DETECTCARDLEFT)
#define S7FS_WA_V2BOARDONLY (S7FS_S_SMARTREADERDOWN|S7FS_S_SMARTREADERUP|S7FS_S_EXTBOARDABSENT|S7FS_S_DETECTCARDSCANIN|S7FS_S_DETECTCARDSCANOUT|S7FS_S_SMARTREADERCAMSENSOR|S7FS_S_NOTINSTALLSCANMOD|S7FS_S_CASEOPENSENSOR)
#define S7FS_E_CARDIN 0x0000000100000000 // 카드-인 에러
#define S7FS_E_CARDOUT 0x0000000200000000 // 카드 배출 에러
#define S7FS_E_FLIP 0x0000000400000000 // 플립 에러
#define S7FS_E_CARDMOVE 0x0000000800000000 // 카드 이동 에러
#define S7FS_E_SMARTREADERDOWN 0x0000001000000000 // IC 리더 다운 에러 (Board Ver.2 에서 사용)
#define S7FS_E_SMARTREADERUP 0x0000002000000000 // IC 리더 업 에러 (Board Ver.2 에서 사용)
#define S7FS_F_INIT 0x0001000000000000 // 초기화 에러
#define S7FS_E_MASK (S7FS_E_CARDIN|S7FS_E_CARDOUT|S7FS_E_FLIP)
#define S7FS_F_MASK (S7FS_F_INIT)
#define S7FS_WF_V2BOARDONLY (S7FS_E_SMARTREADERDOWN|S7FS_E_SMARTREADERUP)
#define S7FS_WS_V2BOARDONLY (S7FS_WA_V2BOARDONLY|S7FS_WS_V2BOARDONLY)
// SMART-70 LAMINATOR STATUS
#define S7LS_M_CARDIN 0x0000000000000001 // 카드-인 중
#define S7LS_M_CARDMOVE 0x0000000000000002 // 카드 이동 중
#define S7LS_M_CARDOUT 0x0000000000000004 // 카드 배출 중
#define S7LS_M_THEADUP 0x0000000000000008 // 헤드 업 중
#define S7LS_M_THEADDOWN 0x0000000000000010 // 헤드 다운 중
#define S7LS_M_THEADHEAT 0x0000000000000020 // 헤드 가열 중
#define S7LS_M_LAMINATING 0x0000000000000040 // 라미네이팅 중
#define S7LS_S_INSTALLEXTHOPPER 0x0000000000000080 // 외부 호퍼 장착
#define S7LS_S_INSTALLEXTSTACKER 0x0000000000000100 // 외부 스태커 장착
#define S7LS_S_INSTALLEXTFLIPPER 0x0000000000000200 // 외부 플리퍼 장착
#define S7LS_S_READY 0x0000000000010000 // 대기상태
#define S7LS_M_PROCESSING 0x0000000000020000 // 명령 수행 중
#define S7LS_M_PROCESSUSBCMD 0x0000000000040000 // USB 명령 수행 중
#define S7LS_S_CASEOPEN 0x0000000000100000 // 케이스 열림 감지
#define S7LS_S_CATRIDGELOCK 0x0000000000200000 // 카트리지 락 센서 감지
#define S7LS_S_CARDOUT 0x0000000000400000 // 아웃 센서 카드감지
#define S7LS_S_CARDCENTERB 0x0000000000800000 // 센터 B 센서 카드 감지
#define S7LS_S_CARDCENTERA 0x0000000001000000 // 센터 A 센서 카드 감지
#define S7LS_S_CARDIN 0x0000000002000000 // 인 센서 카드 감지
#define S7LS_S_THEAD 0x0000000004000000 // 헤드 업/다운 센서
#define S7LS_S_CASEOPENSENSOR 0x0000000008000000 // 케이스 열림 감지 센서
#define S7LS_S_FILMMARKCHECKB 0x0000000010000000 // 필름 마크 체크 B 센서
#define S7LS_S_FILMMARKCHECKA 0x0000000020000000 // 필름 마크 체크 A 센서
#define S7LS_S_ENCODERB 0x0000000040000000 // 인코더 B 센서
#define S7LS_S_ENCODERA 0x0000000080000000 // 인코더 A 센서
#define S7LS_M_MASK (S7LS_M_CARDIN|S7LS_M_CARDMOVE|S7LS_M_CARDOUT|S7LS_M_THEADUP|S7LS_M_THEADDOWN|S7LS_M_THEADHEAT|S7LS_M_LAMINATING|S7LS_M_PROCESSING)
#define S7LS_S_MASK (S7LS_S_READY|S7LS_S_CASEOPEN|S7LS_S_CATRIDGELOCK|S7LS_S_CARDOUT|S7LS_S_CARDCENTERB|S7LS_S_CARDCENTERA|S7LS_S_CARDIN|S7LS_S_THEAD|/*S7LS_S_CASEOPENSENSOR|*/S7LS_S_FILMMARKCHECKB|S7LS_S_FILMMARKCHECKA|S7LS_S_ENCODERB|S7LS_S_ENCODERA)
#define S7LS_E_CARDIN 0x0000000100000000 // 카드-인 에러
#define S7LS_E_CARDMOVE 0x0000000200000000 // 카드 이동 에러
#define S7LS_E_CARDOUT 0x0000000400000000 // 카드 배출 에러
#define S7LS_E_THEADUP 0x0000000800000000 // 헤드 업 에러
#define S7LS_E_THEADDOWN 0x0000001000000000 // 헤드 다운 에러
#define S7LS_E_LAMINATING 0x0000002000000000 // 라미네이팅 중 에러
#define S7LS_E_INSTALLEXTHOPPER 0x0000008000000000 // 외부 플리퍼 연결 에러
#define S7LS_E_INSTALLEXTSTACKER 0x0000010000000000 // 외부 스태커 연결 에러
#define S7LS_E_INSTALLEXTFLIPPER 0x0000020000000000 // 외부 플리퍼 연결 에러
#define S7LS_F_INIT 0x0001000000000000 // 초기화 실패
#define S7LS_E_PROCESSING 0x0002000000000000 // 명령 수행 에러
#define S7LS_E_PROCESSUSBCMD 0x0004000000000000 // USB 명령 수행 에러
#define S7LS_F_FILMEMPTY 0x0010000000000000 // 필름 잔량 없음
#define S7LS_F_FILMSEEK 0x0020000000000000 // 필름 찾기 에러
#define S7LS_F_THEAD 0x0040000000000000 // 헤드 안전 에러 (과열 등)
#define S7LS_F_FILMABSENT 0x0080000000000000 // 필름 미장착
#define S7LS_E_MASK (S7LS_E_CARDIN|S7LS_E_CARDMOVE|S7LS_E_CARDOUT|S7LS_E_THEADUP|S7LS_E_THEADDOWN|S7LS_E_PROCESSING|S7LS_E_LAMINATING)
#define S7LS_F_MASK (S7LS_F_INIT|S7LS_F_FILMEMPTY|S7LS_F_FILMSEEK|S7LS_F_THEAD|S7LS_F_FILMABSENT)
// SMART-70X/LE LASER STATUS
#define S7XS_M_CARDIN 0x0000000000000001 // 카드 삽입중
#define S7XS_M_CARDOUT 0x0000000000000002 // 카드 배출중
#define S7XS_M_FLIPPING 0x0000000000000004 // 플리퍼 회전중
#define S7XS_M_CARDMOVE 0x0000000000000008 // 카드 이동
#define S7XS_M_ICHLIFT 0x0000000000000010 // IC 헤드 업/다운중
#define S7XS_M_MAGRW 0x0000000000000020 // Magnetic 동작중
#define S7XS_S_NOICCAM 0x0000000000000800 // IC Reader CAM Sensor 없음
#define S7XS_S_LE 0x0000000000008000 // SMART-70LE
#define S7XS_S_READY 0x0000000000010000 // 대기 상태
#define S7XS_M_PROCESSING 0x0000000000020000 // 명령 수행중
#define S7XS_S_AUTOCARDIN 0x0000000000040000 // 자동 카드 삽입 설정 상태
#define S7XS_S_RECOVERING 0x0000000000080000 // boot, case(door) close 후 복구중
#define S7XS_S_FLPBOTTOM 0x0000000000100000 // 플리퍼 하향 상태
#define S7XS_S_FLPTOP 0x0000000000200000 // 플리퍼 상향 상태
#define S7XS_S_CASEOPEN 0x0000000001000000 // 케이스 열림
#define S7XS_S_DETECTOPTOUT 0x0000000004000000 // 옵션 아웃 센서에서 카드 검출
#define S7XS_S_DETECTFLPREAR 0x0000000008000000 // 플리퍼 후방 센서에서 카드 검출
#define S7XS_S_DETECTOPTIN 0x0000000010000000 // 옵션 인 센서에서 카드 검출
#define S7XS_S_DETECTCARDOUT 0x0000000020000000 // 카드 아웃 센서에서 카드 검출
#define S7XS_S_DETECTFLPCENTER 0x0000000040000000 // 플리퍼 중앙 센서에서 카드 검출
#define S7XS_S_DETECTCARDIN 0x0000000080000000 // 카드 인 센서에서 카드 검출
//
// [ LASER-X DEVICE ]
// +------------------------+
// | | 1 : Card-In Sensor
// | Laser | 2 : Flipper-Center Sensor
// | | 3 : Flipper-Rear Sensor
// 1 [===2===] 3--4------5--6 4 : Option-In Sensor 옵션 장치들이 설치되는 공간의 시작 부분
// | | 5 : Option-Out Sensor 옵션 장치들이 설치되는 공간의 끝 부분
// | Flipper Options | 6 : Card-Out Sensor
// +------------------------+
#define S7XS_M_MASK (S7XS_M_CARDIN|S7XS_M_CARDOUT|S7XS_M_FLIPPING|S7XS_M_CARDMOVE|S7XS_M_ICHLIFT|S7XS_M_MAGRW|S7XS_M_PROCESSING)
#define S7XS_S_MASK (S7XS_S_READY|S7XS_S_AUTOCARDIN|S7XS_S_FLPBOTTOM|S7XS_S_FLPTOP|S7XS_S_FLP_SideNotSure|S7XS_S_CASEOPEN|S7XS_S_FLIPPCS_MissedLittle|S7XS_S_DETECTOPTOUT|S7XS_S_DETECTFLPREAR|S7XS_S_DETECTOPTIN|S7XS_S_DETECTCARDOUT|S7XS_S_DETECTFLPCENTER|S7XS_S_DETECTCARDIN)
#define S7XS_E_CARDIN 0x0000000100000000 // 카드-인 에러
#define S7XS_E_CARDOUT 0x0000000200000000 // 카드 배출 에러
#define S7XS_E_CARDFLIP 0x0000000400000000 // 카드 플립 에러
#define S7XS_E_CARDMOVE 0x0000000800000000 // 카드 이동 에러
#define S7XS_E_ICHLIFT 0x0000001000000000 // IC 헤드 업/다운 에러
#define S7XS_E_MAGRW 0x0000002000000000 // 마그네틱 RW 에러
#define S7XS_F_INIT 0x0001000000000000 // 초기화 에러
#define S7XS_E_MASK (S7XS_E_CARDIN|S7XS_E_CARDOUT|S7XS_E_CARDFLIP|S7XS_E_CARDMOVE|S7XS_E_ICHLIFT|S7XS_E_MAGRW)
#define S7XS_F_MASK (S7XS_F_INIT)
/*
* Configuration Item Definition.
*/
#define SM70EX_CFG_BLOKING 0x0006
#define SM70EX_CFG_PRINTMETHOD 0x000B
#define SM70EX_CFG_PRINTFILENAME 0x000C // .prn file name set/get
#define SM70EX_CFG_REVERSEOVERLAY 0x000E // overlay reverse
#define SM70EX_CFG_REVERSEUV 0x000F // uv reverse
#define SM70EX_CFG_IMAGEFLIP 0x0014 // no flip, h-flip, v-flip, rotate-180(h-flip & v-flip) for printing image. // 2018.05.10
#define SM70EX_CFG_LECARDINCARDSIDE 0x0015 // SMART-70LE : card side when card in
#define SM70EX_CFG_LECARDOUTCARDSIDE 0x0016 // SMART-70LE : card side when card out
#define SM70EX_CFG_ADJUSTCONTACTPOS 0x0018 // adjust contact smart card position.
#define SM70EX_CFG_ADJUSTCONTACTLESSPOS 0x0019 // adjust contactless smart card position.
/*
* Configuration Value Definition.
*/
// General Configuration
#define SM70EX_CFG_USE 0x01
#define SM70EX_CFG_NOTUSE 0x00
// SM70EX_CFG_PRINTMETHOD
#define SM70EX_CFG_PRINTONLY 0x00
#define SM70EX_CFG_PRINTNFILE 0x01 // only enabled at DCL mode printing.
#define SM70EX_CFG_FILEONLY 0x02
// SM70EX_CFG_IMAGEFLIP
#define SM70EX_CFG_NOFLIP 0x00 // no flip
#define SM70EX_CFG_VFLIP 0x01 // vertical flip
#define SM70EX_CFG_HFLIP 0x02 // horizontal flip
#define SM70EX_CFG_ROTATE180 (SM70EX_CFG_VFLIP|SM70EX_CFG_HFLIP) // rotate 180 (hflip + vflip)
// @Smart70_CardMovePosition
#define SM70_CARDPOS_MAG 1 // magnetic (write) position
#define SM70_CARDPOS_CONTACT 2 // contact smartcard position
#define SM70_CARDPOS_CONTACTLESS 3 // contactless smartcard position
#define SM70_CARDPOS_BASE 4 // flipper position in flipper module.
#define SM70_CARDPOS_LASER 5 // laser marking position
#define SM70_CARDPOS_MAGREAD 6 // magnetic read position. (in 70X, read position is different from write)
// @Smart70_Flip
#define SMART70_FLIP_360 0 // complete (360) flip.
#define SMART70_FLIP_TOTOP 1 // flip to top sided.
#define SMART70_FLIP_TOBOTTOM 2 // flip to bottom sided.
#define SMART70_FLIP_180 3 // 180 flip. no matter sided.
#define SMART70_FLIP_ANGLE 4 // any angle flip.
#define SMART70_PRINTER_MAX 32
typedef struct {
WCHAR name[128]; // printer name
WCHAR id[64]; // printer ID
WCHAR dev[64]; // device connection
WCHAR desc[256]; // description
int pid; // USB product ID
} SMART70_PRINTER_ITEM;
typedef struct {
int n;
SMART70_PRINTER_ITEM item[SMART70_PRINTER_MAX];
} SMART70_PRINTER_LIST;
typedef struct {
WCHAR port[64]; // usb port
WCHAR link[256]; // symbolic link of usb port
int is_bridge; // Network module bridge
} SMART70_PRINTER_PORT_USB;
typedef struct {
WCHAR ver[64]; // version of network protocol
WCHAR ip[64]; // ip address
int port; // tcp port
int is_ssl; // ssl protocol
} SMART70_PRINTER_PORT_NET;
typedef struct {
WCHAR name[128]; // printer name
WCHAR id[64]; // printer ID
WCHAR dev[64]; // device connection
int dev_type; // 1=USB, 2=NET
int pid; // USB product ID
SMART70_PRINTER_PORT_USB usb;
SMART70_PRINTER_PORT_NET net;
} SMART70_PRINTER_STANDARD;
typedef struct {
int is_dual; // dual printer
WCHAR ic1[64]; // internal contact encoder
WCHAR ic2[64]; // external contact SIM encoder
WCHAR rf1[64]; // internal contactless encoder
WCHAR rf2[64]; // external contactless encoder
} SMART70_PRINTER_OPTIONS;
typedef struct {
SMART70_PRINTER_STANDARD std;
SMART70_PRINTER_OPTIONS opt;
} SMART70_PRINTER_INFO;
#define SMART70_MAX_DEVICE 32
#define SMART70_DEV_INHOPPER 0x10
#define SMART70_DEV_MULINHOPPER 0x20
#define SMART70_DEV_ENCODER 0x30
#define SMART70_DEV_PRINTER 0x40
#define SMART70_DEV_LAMINATOR 0x50
#define SMART70_DEV_FLIPPER 0x60
#define SMART70_DEV_OUTHOPPER 0x70
#define SMART70_DEV_MULOUTHOPPER 0x80
#define SMART70_DEV_LASER 0x60
#define SMART70_DEV_INTENCODER 0x90 // internal encoder.
#define SMART70_DEV_OTHER 0xD0 // other devices
#define SMART70_DEV_ALL 0xF0
#define SMART70_DEV_IDX 0x0F
#define SMART70_DEV_MASK SMART70_DEV_ALL
#define SMART70_MOD_LASER (SMART70_DEV_LASER|2)
typedef struct {
BYTE id;
BYTE status;
} SMART70_DEVICE_STATUS;
typedef struct {
int n;
SMART70_DEVICE_STATUS dev[SMART70_MAX_DEVICE];
} SMART70_DEVCONNLIST;
typedef void* HSMART70;
#define SMART70_DEFAULT_LENGTH 1012
#define SMART70_DEFAULT_HEIGHT 636
/*
* Supply
*/
#define SMART70_SUPPLY_AUTO 0x00
#define SMART70_SUPPLY_HOPPER 0x01
/*
* Tray
*/
#define SMART70_TRAY_CR80 0x00
/*
* Ribbon Type
*/
#define SMART70_RIBBON_YMCKO 0
#define SMART70_RIBBON_YMCKOK 1
#define SMART70_RIBBON_hYMCKO 2
#define SMART70_RIBBON_KO 3
#define SMART70_RIBBON_K 4
#define SMART70_RIBBON_BO 5
#define SMART70_RIBBON_B 6
#define SMART70_RIBBON_YMC 7
#define SMART70_RIBBON_YMCKFO 8
#define SMART70_RIBBON_REWRITABLE 9
#define SMART70_RIBBON_hYMCKOKO 11
#define SMART70_RIBBON_YMCKOKR 12
/*
* Ribbon - Resin
*/
#define SMART70_RESIN_BLACKTEXT 0x00 // Extract Black Text to RESIN Panel
#define SMART70_RESIN_BLACKDOT 0x01 // Extract Black Dot(Pixel) to RESIN Panel
#define SMART70_RESIN_NOTUSE 0x02 // No Extraction.
#define SMART70_RESIN_DYNAMIC 0x03 // use DC's ExtEscape().
/*
* Ribbon Split
*/
#define SMART70_RIBBONSPLIT_NORMAL 0x00
#define SMART70_RIBBONSPLIT_FORBACK 0x01
/*
* Flip Option
*/
#define SMART70_FLIP_NORMAL 0
#define SMART70_FLIP_VERTICAL 1
#define SMART70_FLIP_HORIZONTAL 2
#define SMART70_FLIP_ALL 3
/*
* Color
*/
#define SMART70_COLOR_COLOR 0
#define SMART70_COLOR_BLACKNWHITE 1
/*
* Dithering
*/
#define SMART70_DITHER_THRESHOLD 0
#define SMART70_DITHER_RANDOM 1
#define SMART70_DITHER_DIFFUSION 2
#define SMART70_DITHER_HALFTONE 3
#define SMART70_DITHER_HALFTONE2 4
/*
* Print
*/
#define SMART70_PRINT_NOTUSE 0
#define SMART70_PRINT_USE 1
/*
* Print Side
*/
#define SMART70_PRINTSIDE_FRONT 0
#define SMART70_PRINTSIDE_BACK 1
#define SMART70_PRINTSIDE_BOTH 2
/*
* Print Side - Media
*/
#define SMART70_MEDIA_STANDARD 0
#define SMART70_MEDIA_SMART 1 // Exclude IC Chip Area
#define SMART70_MEDIA_SMARTRIGHT 2 // Exclude Left of IC Chip Area
#define SMART70_MEDIA_MSISO 3 // Exclude MS ISO Track Area
#define SMART70_MEDIA_MSJIS 4 // Exclude MS JIS Track Area
#define SMART70_MEDIA_SMARTMSJIS 5 // Exclude MS JIS Track and IC Chip Area
#define SMART70_MEDIA_NOOVERLAY 6 // No Overlay
#define SMART70_MEDIA_USERDEFINED 7 // Use User Defined Bitmap
#define SMART70_MEDIA_DYNAMIC 8 // use DC's ExtEscape().
#define SMART70_MEDIA_BITMAP L"cardprinter_mask_" // $SYSTEM32\cardprinter_mask_#.bmp
/*
* Eject
*/
#define SMART_EJECT_EJECT_CARD 0
#define SMART_EJECT_HOLD_CARD 1
/*
* SMART-70
*/
#define SMART70_PRINT_NOTUSE 0
#define SMART70_PRINT_USE 1
#define SMART70_PRINTSIDE_FRONT 0
#define SMART70_PRINTSIDE_BACK 1
#define SMART70_PRINTSIDE_BOTH 2
#define SMART70_QUALITY_STANDARD 0
#define SMART70_QUALITY_PARTIAL 1
#define SMART70_SPEED_NORMAL 1
#define SMART70_SPEED_HIGH 2
#define SMART70_LAMIN_NOTUSE 0
#define SMART70_LAMIN_USE 1
#define SMART70_LAMIN_TOP 0
#define SMART70_LAMIN_BOTTOM 1
#define SMART70_LAMIN_BOTH 2
#define SMART70_LAMIN_OVERLAY_NOTUSE 0
#define SMART70_LAMIN_OVERLAY_USE 1
#define SMART70_MODULE_INTERNAL 0
#define SMART70_MODULE_EXTERNAL 1
#define SMART70_MODULE_BOTH 2
#define SMART70_MAG_COER_AUTO 0
#define SMART70_MAG_COER_LO 1
#define SMART70_MAG_COER_HI 2
#define SMART70_MAG_OPTION_FORWARD 0
#define SMART70_MAG_OPTION_BACKWARD 1
#define SMART70_MAG_OPTION_BITMODE 2
#define SMART70_MAG_FLIP_NOTUSE 0
#define SMART70_MAG_FLIP_USE 1
#define SMART70_MAG_NOTUSE 0
#define SMART70_MAG_USE 1
//#define SMART70_MAG_INTERNAL 0 // ==> SMART70_MODULE_INTERNAL
//#define SMART70_MAG_EXTERNAL 1
//#define SMART70_MAG_BOTH 2
#define SMART70_MAG_ENCODING_ISO 0
#define SMART70_MAG_ENCODING_BALLYS 1
typedef struct _OEM_DMEXTRAHEADER {
DWORD dwSize;
DWORD dwSignature;
DWORD dwVersion;
} OEM_DMEXTRAHEADER, *POEM_DMEXTRAHEADER;
typedef struct tagOEMDEV
{
OEM_DMEXTRAHEADER dmOEMExtra;
//Color Correction
DWORD dwASMain;
DWORD dwASYellow;
DWORD dwASMagenta;
DWORD dwASCyan;
DWORD dwASBlack;
DWORD dwASOverlay;
//Resin Black(K) Processing
DWORD dwASBPText;
DWORD dwASBPDot;
DWORD dwASBPThreshold;
DWORD dwASBPDitherDegree;
DWORD dwASBPResin;
//RewritableControl
DWORD dwASErase;
//Wait Control
DWORD dwASWaitInRFUse;
DWORD dwASWaitInRFSide;
DWORD dwASWaitInRFPos;
DWORD dwASWaitInRFTime;
DWORD dwASWaitExRFUse;
DWORD dwASWaitExRFSide;
DWORD dwASWaitExRFPos;
DWORD dwASWaitExRFTime;
DWORD dwASWaitExICUse;
DWORD dwASWaitExICSide;
DWORD dwASWaitExICPos;
DWORD dwASWaitExICTime;
// INPUT / OUTPUT
DWORD dwIOSupply;
DWORD dwIOTray;
DWORD dwIOOutput;
// PRINTING 1
DWORD dwPrtUse;
DWORD dwPrtSide;
DWORD dwPrtColorFront;
DWORD dwPrtColorBack;
DWORD dwPrtMediaFront;
DWORD dwPrtMediaBack;
WCHAR strPrtMediaUserFront[1024];
WCHAR strPrtMediaUserBack[1024];
DWORD dwPrtRibbon;
DWORD dwPrtQuality;
DWORD dwPrtSpeed;
DWORD dwPrtHeatControl;
DWORD dwPrtFlipFront;
DWORD dwPrtFlipBack;
DWORD dwPrtDither;
DWORD dwPrtRibbonSplit;
// PRINTING 2
DWORD dwPrtUse2;
DWORD dwPrtSide2;
DWORD dwPrtColorFront2;
DWORD dwPrtColorBack2;
DWORD dwPrtMediaFront2;
DWORD dwPrtMediaBack2;
WCHAR strPrtMediaUserFront2[1024];
WCHAR strPrtMediaUserBack2[1024];
DWORD dwPrtRibbon2;
DWORD dwPrtQuality2;
DWORD dwPrtSpeed2;
DWORD dwPrtHeatControl2;
DWORD dwPrtFlipFront2;
DWORD dwPrtFlipBack2;
DWORD dwPrtDither2;
DWORD dwPrtRibbonSplit2;
// LAMINATING 1
DWORD dwLamUse;
DWORD dwLamSide;
DWORD dwLamOverlay;
// LAMINATING 2
DWORD dwLamUse2;
DWORD dwLamSide2;
DWORD dwLamReserved2;
// ENCODING
DWORD dwEncUse;
DWORD dwEncModule;
DWORD dwEncInCoer;
DWORD dwEncInOption;
DWORD dwEncInMagFlip;
DWORD dwEncInEncoding;
WCHAR strEncInTrack1[1024];
WCHAR strEncInTrack2[1024];
WCHAR strEncInTrack3[1024];
WCHAR strEncInJISTrack[1024];
DWORD dwEncExCoer;
DWORD dwEncExOption;
DWORD dwEncExMagFlip;
DWORD dwEncExEncoding;
WCHAR strEncExTrack1[1024];
WCHAR strEncExTrack2[1024];
WCHAR strEncExTrack3[1024];
WCHAR strEncExJISTrack[1024];
DWORD dwASCorrectColor;
DWORD dwASCorrectMono;
DWORD dwASCorrectOverlay;
DWORD dwEncInMagRepeat;
DWORD dwEncExMagRepeat;
DWORD dwOptSeparate;
DWORD dwASFastAlignment;
DWORD dwPrtAntiAliasing;
BYTE reserved[32];
} OEMDEV, *POEMDEV;
typedef struct {
DEVMODEW devmode;
#if defined(_MFC_VER) && (_MFC_VER <= 0x0600)
DWORD dummy1;
DWORD dummy2;
#endif
BYTE reserved[564];
OEMDEV oemdev;
} SMART70_DEVMODE;
#define SMART_DEVMODE SMART70_DEVMODE
#define SMART70_COUNTPARAM_VER_LATEST 0
typedef struct
{
int ver; // current version is 0.
// [ver == 0] -------------
int img; // image issue count
int mag; // magnetic issue count
int contact; // contact smart card issue count
int sim; // SIM card issue count
int contactless_ext; // contactless smart card (external) issue count
int contactless_int; // contactless smart card (internal) issue count
int cleanskip; // cleaning skip count
int cleaning; // cleaning count
} COUNTPARAM;
#define SMART70_SYSINFO_VER_0 0
#define SMART70_SYSINFO_VER_LASTEST SMART70_SYSINFO_VER_0
#define SMART70_MAX_VER_LEN 32
#define SMART70_MAX_SERIAL_LEN 24
typedef struct
{
int ver; // structure version (= SMART70_SYSINFO_VER_0)
// [ver == 0] -------------
struct {
WCHAR ver[SMART70_MAX_VER_LEN]; // printer f/w ver.
WCHAR serial[SMART70_MAX_SERIAL_LEN]; // printer serial number
WCHAR hserial[SMART70_MAX_SERIAL_LEN]; // thermal header serial number
BYTE reserved[32];
} printer;
struct {
BOOL installed; // flag for laminator installation
WCHAR ver[SMART70_MAX_VER_LEN]; // laminator f/w ver.
WCHAR serial[SMART70_MAX_SERIAL_LEN]; // laminator serial number
BYTE reserved[32];
} laminator;
} SMART_SYSINFO;
typedef enum
{
obj_rect,
obj_roundrect,
obj_oval,
obj_line,
obj_image,
obj_text,
obj_bar,
} S70ObjType;
#ifdef MAKE_LONIBBLE
# undef MAKE_LONIBBLE
#endif//
#ifdef MAKE_HINIBBLE
# undef MAKE_HINIBBLE
#endif//
#ifdef GET_LONIBBLE
# undef GET_LONIBBLE
#endif//
#ifdef GET_HINIBBLE
# undef GET_HINIBBLE
#endif//
#ifdef MAKE_ALIGN
# undef MAKE_ALIGN
#endif//
#ifdef GET_HALIGN
# undef GET_HALIGN
#endif//
#ifdef GET_VALIGN
# undef GET_VALIGN
#endif//
#ifdef SET_HALIGN
# undef SET_HALIGN
#endif//
#ifdef SET_VALIGN
# undef SET_VALIGN
#endif//
#define SMART70_OBJ_ALIGN_LEFT 0x00
#define SMART70_OBJ_ALIGN_CENTER 0x01
#define SMART70_OBJ_ALIGN_RIGHT 0x02
#define SMART70_OBJ_ALIGN_JUSTIFY 0x03 // text object only...
#define SMART70_OBJ_ALIGN_HNOALIGN 0x04
#define SMART70_OBJ_ALIGN_TOP 0x00
#define SMART70_OBJ_ALIGN_MIDDLE 0x10
#define SMART70_OBJ_ALIGN_BOTTOM 0x20
#define SMART70_OBJ_ALIGN_VNOALIGN 0x30
#define SMART70_OBJ_ALIGN_HORZMASK 0x0F
#define SMART70_OBJ_ALIGN_VERTMASK 0xF0
#define MAKE_LONIBBLE(nb) ( (nb) & 0x0F )
#define MAKE_HINIBBLE(nb) ( ((nb) & 0x0F) << 4 )
#define GET_LONIBBLE(bt) ( (bt) & 0x0F )
#define GET_HINIBBLE(bt) ( ((bt) & 0xF0 ) >> 4 )
#define MAKE_ALIGN(h,v) ( (h) | (v) )
#define SMART70_OBJ_ALIGN_NOALIGN (SMART70_OBJ_ALIGN_VNOALIGN|SMART70_OBJ_ALIGN_HNOALIGN)
#define GET_HALIGN(a) ((a)&SMART70_OBJ_ALIGN_HORZMASK) //GET_HINIBBLE(a)
#define GET_VALIGN(a) ((a)&SMART70_OBJ_ALIGN_VERTMASK) //GET_LONIBBLE(a)
#define SET_HALIGN(a,h) MAKE_ALIGN(h,GET_VALIGN(a))
#define SET_VALIGN(a,v) MAKE_ALIGN(GET_HALIGN(a),v)
#define SMART70_IMGSCALE_FITHORZ 0x00 // scale to fit to width of frame
#define SMART70_IMGSCALE_FITVERT 0x01 // scale to fit to height of frame
#define SMART70_IMGSCALE_FITFRAME 0x02 // scale to fit to frame.
#define SMART70_IMGSCALE_USER 0x03 // scale factor is user setted.
#define SMART70_IMGSCALE_BEST SMART70_IMGSCALE_FITHORZ
#define SMART70_IMGSCALE_BASEAMP 10000 // default amplyfiying value
#define SMART70_IMGEFFECT_CONTRASTMIN -100
#define SMART70_IMGEFFECT_CONTRASTMAX 100 //412
#define SMART70_IMGEFFECT_BRIGHTMIN -256
#define SMART70_IMGEFFECT_BRIGHTMAX 255
#define SMART70_IMGEFFECT_CONTRASTMIN -100
#define SMART70_IMGEFFECT_CONTRASTMAX 100 //412
#define SMART70_IMGEFFECT_BRIGHTMIN -256
#define SMART70_IMGEFFECT_BRIGHTMAX 255
#define SMART70_FONT_NORMAL 0x00
#define SMART70_FONT_BOLD 0x01
#define SMART70_FONT_ITALIC 0x02
#define SMART70_FONT_UNDERLINE 0x04
#define SMART70_TEXT_NOFIT 0 // use font size
#define SMART70_TEXT_FITHEIGHT 1 // font is sized to frame's height
#define SMART70_TEXT_FITWIDTH 2 // font is sized to frame's width
#define SMART70_TEXT_FITBOTH 3 // font is sized to frame's width and height
#define SMART70_TEXT_AUTOSIZE 4
#define SMART70_TEXT_SIZEMASK 0x000F
// border style
#define BS_NONE 5
#define BS_SOLID 0
#define BS_DASH 1
#define BS_DOT 2
#define BS_DASHDOT 3
#define BS_DASHDOTDOT 4
#define SMART70_OTB_NONE 0x0000
#define SMART70_OTB_FromEnum(e) (1 << (e))
#define SMART70_OTB_RECT SMART70_OTB_FromEnum(obj_rect)
#define SMART70_OTB_ROUNDRECT SMART70_OTB_FromEnum(obj_roundrect)
#define SMART70_OTB_OVAL SMART70_OTB_FromEnum(obj_oval)
#define SMART70_OTB_LINE SMART70_OTB_FromEnum(obj_line)
#define SMART70_OTB_IMAGE SMART70_OTB_FromEnum(obj_image)
#define SMART70_OTB_TEXT SMART70_OTB_FromEnum(obj_text)
#define SMART70_OTB_BAR SMART70_OTB_FromEnum(obj_bar)
#define SMART70_UNITTYPE_TEXT SMART70_OTB_TEXT
#define SMART70_UNITTYPE_IMAGE SMART70_OTB_IMAGE
#define SMART70_UNITTYPE_BARCODE SMART70_OTB_BAR
#define SMART70_UNITINFO_FIRST 0
#define SMART70_UNITINFO_NEXT 1
#define SMART70_MAX_FIELDNAMELEN 32
#define SMART70_MAX_FIELDVALUELEN 1024
#define SMART70_FIELD_PREFIX L'~'
#define SMART70_MAX_BARCODENAME 64
typedef struct _tagFontInfo
{
int size;
BYTE style;
COLORREF color;
WCHAR name[LF_FACESIZE];
} S70FontInfo;
typedef struct _tagFontInfo2
{
int size; // font size
int size2; // font width size (for slim or large sized text...)
BYTE style;
COLORREF color;
WCHAR name[LF_FACESIZE];
} FontInfo2;
typedef struct _tagBorder
{
USHORT type; // using PenStyle. PS_SOLID, ...
USHORT width; // mm type....
COLORREF color;
} S70Border;
typedef struct _tagBackGround
{
BOOL fill;
COLORREF color;
BYTE transparency; // % unit. (0:Opaque, 100:transparent)
} S70BackGround;
typedef struct _tagLaser
{
int power;
int speed;
int frequency;
int angle;
int reserved[16];
} S70Laser;
typedef struct
{
short leftMargin; // spaceLeft
short topMargin; // spaceTop
short rightMargin; // spaceRight
short bottomMargin; // spaceBottom
BYTE align;
S70FontInfo font;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
} S70UNITTEXT;
typedef struct
{
int widthZoom;
int heightZoom;
short contrast;
short brightness;
BOOL grayscale;
USHORT align;
POINT offset;
BYTE scaleMethod;
int round;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
} S70UNITIMAGE;
typedef struct
{
int type;
int size;
int option;
SIZE size2D;
COLORREF barColor;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
} S70UNITBAR;
typedef struct
{
int index;
int type;
BYTE page;
BYTE panel;
int left;
int top;
int width;
int height;
int rotate;
S70Border border;
S70BackGround back;
union
{
S70UNITTEXT txt;
S70UNITIMAGE img;
S70UNITBAR bar;
};
} S70UNITINFO;
#define SMART70_UNITINFO2_VER_1 1
#define SMART70_UNITINFO2_VER_2 2
#define SMART70_UNITINFO2_VER SMART70_UNITINFO2_VER_2
typedef struct
{
short leftMargin; // spaceLeft
short topMargin; // spaceTop
short rightMargin; // spaceRight
short bottomMargin; // spaceBottom
BYTE align;
S70FontInfo font;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
BYTE reserved[32]; // must be 0
} UNITTEXT2;
#define SMART70_UIMG2OPT_OFFSET_ORIGIN 0x0000 // UNITIMAGE2::offset value is original (before-rotating) offset point.
#define SMART70_UIMG2OPT_OFFSET_DRAW 0x0001 // UNITIMAGE2::offset value is drawing point (applied-rotation).
#define SMART70_UIMG2OPT_OFFSET_MASK 0x0001
typedef struct
{
int option;
int widthZoom;
int heightZoom;
short contrast;
short brightness;
BOOL grayscale;
USHORT align;
POINT offset;
BYTE scaleMethod;
int round;
BOOL autoportrait;
BOOL autoeffect;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
BYTE reserved[32];
} UNITIMAGE2;
typedef struct
{
int type;
int size;
int option;
SIZE size2D;
COLORREF barColor;
WCHAR field[SMART70_MAX_FIELDNAMELEN+1];
BYTE reserved[32];
} UNITBAR2;
typedef struct
{
int ver;
int index; // zero-based index from ElementList...
int type; // this is not EQUAL with CGObj's one.
// objType can have the value within SMART70_UNITTYPE_TEXT, SMART70_UNITTYPE_IMAGE and SMART70_UNITTYPE_BARCODE.
BYTE page;
BYTE panel;
int left; // offsetLeft
int top; // offsetTop
int width;
int height;
int rotate;
S70Border border;
S70BackGround back;
union
{
UNITTEXT2 txt;
UNITIMAGE2 img;
UNITBAR2 bar;
};
S70Laser laser;
} UNITINFO2;
typedef struct
{
DWORD oiSize; // entire struct size. struct size + extended data size
DWORD oiIndex; // object index
BYTE oiPage;
BYTE oiPanel;
int oiLeft;
int oiTop;
int oiWidth;
int oiHeight;
int oiRotate;
BOOL oiPrintable; // print or not ...
int oiType; // object type
S70Border oiBorder;
S70BackGround oiBack;
union
{
struct {
int oirrRound;
} oiRRect;
struct {
short oitLeftSpace;
short oitTopSpace;
short oitRightSpace;
short oitBottomSpace;
BYTE oitAlign;
int oitFitOn;
FontInfo2 oitFont;
int oitField;
DWORD oitTextPos; // offset position of wide-char string data..
DWORD oitTextLen; // data length..
/////////////////////////////////
// [ OBJ_INFO ]
// - base structure members 0 ~ ...
// - oiText strcuture members ... ~ sizeof(OBJ_INFO)
// -------------------------------
// +
// - text data additional data area...
/////////////////////////////////
} oiText;
struct {
int oiiWidth;
int oiiHeight;
DWORD oiiZoomWidth; // unit is permil. SMART70_IMGSCALE_BASEAMP: use origin size of image
DWORD oiiZoomHeight; // unit is permil. SMART70_IMGSCALE_BASEAMP: use origin size of image
short oiiContrast; // -100 ~ . default value is 0.
short oiiBrightness; // -256 ~ 255. default value is 0.
BOOL oiiGrayscaled;
USHORT oiiAlign;
POINT oiiOffset; // offset position in left-upper corner of frame
BYTE oiiScale; // image scaling method...
COLORREF oiiTransColor;
int oiiTransRange;
int oiiRound;
int oiiField;
DWORD oiiImgNamePos; // offset position of wide-char string data..
DWORD oiiImgNameLen; // data length..
/////////////////////////////////
// [ OBJ_INFO ]
// - base structure members 0 ~ ...
// - oiImage strcuture members ... ~ sizeof(OBJ_INFO)
// -------------------------------
// +
// - image url(file-path) data additional data area...
/////////////////////////////////
} oiImage;
struct {
WCHAR oibName[SMART70_MAX_BARCODENAME];
int oibSize;
int oibOpt;
short oib2DOpt1;
short oib2DOpt2;
COLORREF oibColor;
int oibField;
DWORD oibDataPos; // barcode-data position.
DWORD oibDataLen; // barcode-data length.
DWORD oibExDataPos; // zip-postal data. it is used only "MaxiCode" type.
DWORD oibExDataLen; // zip-postal data. it is used only "MaxiCode" type.
/////////////////////////////////
// [ OBJ_INFO ]
// - base structure members 0 ~ ...
// - oiBar strcuture members ... ~ sizeof(OBJ_INFO)
// -------------------------------
// +
// - barcode data additional data area...
// - zip-postal data (if necessary)
/////////////////////////////////
} oiBar;
};
} OBJ_INFO;
#define OBJINFO2_VER_2 2
#define OBJINFO2_VER OBJINFO2_VER_2
#define LINE_FLIP_HORZ 0x01
#define LINE_FLIP_VERT 0x02
typedef struct
{
DWORD oiVer; // OBJINFO_VER
DWORD oiSize; // base structure size. = sizeof(OBJ_INFO2)
DWORD oiWholeSize; // entire struct size. include datas. = sizeof(OBJ_INFO2) + extend data size
DWORD oiIndex; // object index
BYTE oiPage;
BYTE oiPanel;
int oiLeft;
int oiTop;
int oiWidth;
int oiHeight;
int oiRotate;
BOOL oiPrintable; // print or not ...
int oiType; // object type
S70Border oiBorder;
S70BackGround oiBack;
S70Laser oiLaser;
union
{
struct {
int oirrRound;
} oiRRect;
struct {
short oitLeftSpace;
short oitTopSpace;
short oitRightSpace;
short oitBottomSpace;
BYTE oitAlign;
int oitOption;
FontInfo2 oitFont;
int oitField;
DWORD oitTextPos; // offset position of wide-char string data..
DWORD oitTextLen; // data length..
} oiText;
struct {
int oiiWidth;
int oiiHeight;
DWORD oiiZoomWidth; // unit is permil. IMGSCALE_BASEAMP: use origin size of image
DWORD oiiZoomHeight; // unit is permil. IMGSCALE_BASEAMP: use origin size of image
short oiiContrast; // -100 ~ . default value is 0.
short oiiBrightness; // -256 ~ 255. default value is 0.
BOOL oiiGrayscaled;
USHORT oiiAlign;
POINT oiiOffset; // offset position in left-upper corner of frame
BYTE oiiScale; // image scaling method...
COLORREF oiiTransColor;
int oiiTransRange;
int oiiRound;
int oiiField;
DWORD oiiImgNamePos; // offset position of wide-char string data..
DWORD oiiImgNameLen; // data length..
} oiImage;
struct {
WCHAR oibName[SMART70_MAX_BARCODENAME];
int oibSize;
int oibOpt;
short oib2DOpt1;
short oib2DOpt2;
COLORREF oibColor;
int oibField;
DWORD oibDataPos;
DWORD oibDataLen;
DWORD oibExDataPos; // zip-postal data. it is used only "MaxiCode" type.
DWORD oibExDataLen; // zip-postal data. it is used only "MaxiCode" type.
} oiBar;
struct {
int oilFlip; // LINE_FLIP_HORZ | LINE_FLIP_VERT
} oiLine;
};
} OBJ_INFO2;
typedef struct
{
int x;
int y;
int cx;
int cy;
int rotate;
int align;
int fontHeight;
int fontWidth;
int style;
COLORREF color;
int option;
WCHAR szFaceName[LF_FACESIZE]; //LF_FACESIZE = 32
} DT2INFO;
#define SMART70_MAX_FIELDNAMELEN 32
#define SMART70_MAX_FIELDDATALEN 1024
typedef struct
{
DWORD fiIndex;
WCHAR fiName[SMART70_MAX_FIELDNAMELEN];
DWORD fiDataLen;
WCHAR fiData[SMART70_MAX_FIELDDATALEN];
} FIELD_INFO;
typedef int (WINAPI * Smart70_GetDeviceList)(SMART70_PRINTER_LIST* pDevList);
typedef int (WINAPI * Smart70_ExGetDeviceList)(SMART70_PRINTER_LIST* pDevList, int opt);
typedef int (WINAPI * Smart70_GetDeviceInfo)(SMART70_PRINTER_INFO* pDevInfo, WCHAR* szdev, int ndevtype );
typedef int (WINAPI * Smart70_OpenDevice)(HSMART70* pHandle, WCHAR* szdev, int ndevtype);
typedef int (WINAPI * Smart70_ExOpenDevice)(HSMART70* pHandle, WCHAR* szdev, int ndevtype);
typedef int (WINAPI * Smart70_CloseDevice)(HSMART70 hHandle);
typedef int (WINAPI * Smart70_GetRibbonInfo)(HSMART70 hHandle, BYTE mod, int* pnType, int* pnRemain, int* pnMax);
typedef int (WINAPI * Smart70_GetConnectedDevices)(HSMART70 hSC, SMART70_DEVCONNLIST* pConnList);
typedef int (WINAPI * Smart70_GetConnectedModules)(HSMART70 hSC, SMART70_DEVCONNLIST* pConnList);
typedef int (WINAPI * Smart70_ICHContact)(HSMART70 hHandle, BYTE mod);
typedef int (WINAPI * Smart70_ICHDiscontact)(HSMART70 hHandle, BYTE mod);
typedef int (WINAPI * Smart70_OpenDocument)(HSMART70 hHandle, const WCHAR* szCSDName);
typedef int (WINAPI * Smart70_CloseDocument)(HSMART70 hHandle);
typedef int (WINAPI * Smart70_ClearDocument)(HSMART70 hHandle, int page);
typedef int (WINAPI * Smart70_GetFieldCount)(HSMART70 hHandle, int* pnCount);
typedef int (WINAPI * Smart70_GetFieldName)(HSMART70 hHandle, int idx, WCHAR* szName, DWORD dwBufLen);
typedef int (WINAPI * Smart70_GetFieldValue)(HSMART70 hHandle, const WCHAR* szName, WCHAR* szValue);
typedef int (WINAPI * Smart70_SetFieldValue)(HSMART70 hHandle, const WCHAR* szName, const WCHAR* szValue);
typedef int (WINAPI * Smart70_DrawImage)(HSMART70 hHandle, BYTE page, BYTE panel, int x, int y, int cx, int cy, WCHAR* szImgPath, RECT* prcArea);
typedef int (WINAPI * Smart70_ExDrawImage)(HSMART70 hHandle, BYTE page, BYTE panel, int x, int y, int cx, int cy, int nScaleMethod, BYTE nAlign, WCHAR* szImgPath, RECT* prcArea);
typedef int (WINAPI * Smart70_DrawBitmap)(HSMART70 hSC, BYTE page, BYTE panel, int x, int y, int cx, int cy, HBITMAP hbmp, RECT* prcArea);
typedef int (WINAPI * Smart70_ExDrawBitmap)(HSMART70 hSC, BYTE page, BYTE panel, int x, int y, int cx, int cy, int nScaleMethod, BYTE nAlign, HBITMAP hbmp, RECT* prcArea);
typedef int (WINAPI * Smart70_DrawText)(HSMART70 hHandle, BYTE page, BYTE panel, int x, int y, WCHAR* szFontName, int nFontSize, BYTE nFontStyle, WCHAR* szText, RECT* prcArea);
typedef int (WINAPI * Smart70_DrawText2)(HSMART70 hHandle, BYTE page, BYTE panel, DT2INFO* pdt2info, WCHAR* szText);
typedef int (WINAPI * Smart70_DrawRect)(HSMART70 hHandle, BYTE page, BYTE panel, int x, int y, int cx, int cy, COLORREF col, RECT* prcArea);
typedef int (WINAPI * Smart70_DrawBarcode)(HSMART70 hHandle, BYTE page, BYTE panel, int x, int y, int cx, int cy, COLORREF col, RECT* prcArea, const WCHAR* szName, int nSize, const WCHAR* szData, const WCHAR* szPost);
typedef int (WINAPI * Smart70_GetBarcodeTypeCount)(HSMART70 hHandle, int* pnCount);
typedef int (WINAPI * Smart70_GetBarcodeTypeName)(HSMART70 hHandle, int idx, WCHAR* szName, int nBufLen);
typedef int (WINAPI * Smart70_GetPreviewBitmap)(HSMART70 hHandle, BYTE page, BITMAPINFO** const ppbi);
typedef int (WINAPI * Smart70_GetUnitInfo)(HSMART70 hHandle, S70UNITINFO* pUnit, int dir);
typedef int (WINAPI * Smart70_GetFieldLinkedUnitInfo)(HSMART70 hHandle, WCHAR* szField, S70UNITINFO* pUnit, int dir);
typedef int (WINAPI * Smart70_SetUnitInfo)(HSMART70 hHandle, S70UNITINFO* pUnit);
typedef int (WINAPI * Smart70_GetUnitInfo2)(HSMART70 hHandle, UNITINFO2* pUnit, int dir);
typedef int (WINAPI * Smart70_GetFieldLinkedUnitInfo2)(HSMART70 hHandle, WCHAR* szField, UNITINFO2* pUnit, int dir);
typedef int (WINAPI * Smart70_SetUnitInfo2)(HSMART70 hHandle, UNITINFO2* pUnit);
typedef int (WINAPI * Smart70_GetUnitInfo2Direct)(HSMART70 hHandle, UNITINFO2* pUnit);
typedef int (WINAPI * Smart70_GetICG)(HSMART70 hHandle, int page, int *pnICG);
typedef int (WINAPI * Smart70_SetICG)(HSMART70 hHandle, int page, int nICG);
typedef int (WINAPI * Smart70_GetVersion)(HSMART70 hSC, WCHAR* szBuf, int* pnBufLen);
typedef int (WINAPI * Smart70_IsBackEnable)(HSMART70 hHandle, BOOL* pbEnabled);
typedef int (WINAPI * Smart70_GetCountParam)(HSMART70 hHandle, COUNTPARAM* pParam);
typedef int (WINAPI * Smart70_GetCountParamEx)(HSMART70 hHandle, COUNTPARAM * pParams);
typedef int (WINAPI * Smart70_GetDisplayInfo)(HSMART70 hHandle, int* pnType, int* pnLang);
typedef int (WINAPI * Smart70_GetSystemInfo)(HSMART70 hHandle, SMART_SYSINFO* pSysInfo);
typedef int (WINAPI * Smart70_ReadUserMemory)(HSMART70 hHandle, WCHAR* szPW, int addr, BYTE* btdata);
typedef int (WINAPI * Smart70_WriteUserMemory)(HSMART70 hHandle, WCHAR* szPW, int addr, BYTE* btdata);
typedef int (WINAPI * Smart70_RFPowerOn)(HSMART70 hHandle, int nDev, int* pnCardType, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_RFPowerOn2)(HSMART70 hHandle, BYTE mod, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_RFPowerOff)(HSMART70 hHandle, int nDev);
typedef int (WINAPI * Smart70_RFPowerOff2)(HSMART70 hHandle, BYTE mod);
typedef int (WINAPI * Smart70_RFTransmit)(HSMART70 hHandle, int nDev, DWORD dwInLen, BYTE* pInBuf, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_RFTransmit2)(HSMART70 hHandle, BYTE mod, DWORD dwInLen, BYTE* pInBuf, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_ExRFPCSC_GetReaderName)(HSMART70 hHandle, int nWhich, WCHAR* szName);
typedef int (WINAPI * Smart70_ICPowerOn)(HSMART70 hHandle, int nDev, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_ICPowerOn2)(HSMART70 hHandle, BYTE mod, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_ICPowerOff)(HSMART70 hHandle, int nDev);
typedef int (WINAPI * Smart70_ICPowerOff2)(HSMART70 hHandle, BYTE mod);
typedef int (WINAPI * Smart70_ICTransmit)(HSMART70 hHandle, int nDev, DWORD dwInLen, BYTE* pInBuf, DWORD* pdwOutLen, BYTE* pOutBuf);
typedef int (WINAPI * Smart70_ICTransmit2)(HSMART70 hHandle, BYTE mod, DWORD dwInLen, BYTE* pInBuf, DWORD* pdwOutLen, BYTE* pOutBuf);
#ifdef _WIN64
typedef int (WINAPI * Smart70_ExSetConfig)(HSMART70 hHandle, int nID, __int64 nValue);
typedef int (WINAPI * Smart70_ExGetConfig)(HSMART70 hHandle, int nID, __int64* pnValue);
#else//_WIN64
typedef int (WINAPI * Smart70_ExSetConfig)(HSMART70 hHandle, int nID, int nValue);
typedef int (WINAPI * Smart70_ExGetConfig)(HSMART70 hHandle, int nID, int* pnValue);
#endif//_WIN64
typedef struct {
DWORD side;
DWORD orientation;
DWORD ribbon;
DWORD ribbon_type;
DWORD width;
DWORD height;
} SMART70_SURFACE_PROPERTIES;
typedef struct {
HDC hdcColor;
HDC hdcResin;
HDC hdcFluorescent;
HDC hdcOverlay;
HBITMAP hBmpColor;
HBITMAP hBmpResin;
HBITMAP hBmpFluorescent;
HBITMAP hBmpOverlay;
BYTE * lpPRN;
} SMART70_SURFACE_BITMAPS;
typedef int (WINAPI * Smart70DCL_OpenDevice)(HSMART70 *phHandle, WCHAR* szdev, int ndevtype, int nOrientation);
typedef int (WINAPI * Smart70DCL_OpenDevice3)(HSMART70 *phHandle, WCHAR* szDev, int port, BOOL bSSL, int nOrientation);
typedef int (WINAPI * Smart70DCL_CloseDevice)(HSMART70 hHandle);
typedef int (WINAPI * Smart70DCL_ExOpenDevice)(HSMART70 *phHandle, WCHAR* szdev, int ndevtype, int nOrientation);
typedef int (WINAPI * Smart70DCL_Print)(HSMART70 hHandle, int nPrintSide);
typedef int (WINAPI * Smart70_GetVersion)(HSMART70 hSC, WCHAR* szBuf, int* pnBufLen);
#define SMART70_MAX_MODULES 10
#define SMART70_COMMAND_WAITFINISH 0x00
#define SMART70_COMMAND_ONLY 0x01
#define SMART70_PRINT_EJECT 0x00
#define SMART70_PRINT_HOLD 0x10
#define SMART70_PRINT_PRNONLY 0x20 // for internal use only. you cannot use SMART70_PRINT_PRNONLY and SMART70_PRINT_HOLD both.
#define SMART70_LEFTSIDE 0 // left : front
#define SMART70_RIGHTSIDE 1 // right : rear
// @Smart70_CardMove2
#define SMART70_MHOP_AUTO 0
#define SMART70_MHOP_HOP1 0x10
#define SMART70_MHOP_HOP2 0x20
#define SMART70_MHOP_HOP3 0x30
#define SMART70_MHOP_HOP4 0x40
#define SMART70_MHOP_HOP5 0x50
#define SMART70_MHOP_HOP6 0x60
// @Smart70_CardEject2
#define SMART70_EJECT_MHOP_LEFT 0x00000000 // eject option : multi-hopper eject to left side
#define SMART70_EJECT_MHOP_RIGHT 0x00000001 // eject option : multi-hopper eject to right side
#define SMART70_EJECT_MHOP_SIDE 0x00000001 // eject option : multi-hopper side mask
#define SMART70_EJECT_MHOP_HOP1 0x00010000 // eject option : multi-hopper hopper #1
#define SMART70_EJECT_MHOP_HOP2 0x00020000 // eject option : multi-hopper hopper #2
#define SMART70_EJECT_MHOP_HOP3 0x00030000 // eject option : multi-hopper hopper #3
#define SMART70_EJECT_MHOP_HOP4 0x00040000 // eject option : multi-hopper hopper #4
#define SMART70_EJECT_MHOP_HOPPER 0x00070000 // eject option : multi-hopper hopper mask
typedef struct {
BYTE from;
BYTE to;
int res;
} MOVECARD;
typedef struct {
int n;
MOVECARD card[SMART70_MAX_MODULES];
} CARDMOVELIST;
// Encoder Config
#define SMART70_ENCCFG_MAG_COER 0 // [set] set magnetic coercivity.
#define SMART70_ENCCFG_MIRU_IMAGE 10 // [get/set] miru image config (set:volatile)
#define SMART70_ENCCFG_MIRU 11 // [get] get MIRU config.
#define SMART70_ENCCFG_MIRU_GAIN 12 // [set]
#define SMART70_ENCCFG_MIRU_OFFSET 13 // [set]
#define SMART70_ENCCFG_MIRU_SPEED 14 // [set]
#define SMART70_ENCCFG_MIRU_SHADING 15 // [set]
// Encoder Specific Command - MIRU
#define SMART70_ENC_MIRU_VERSION 10 // [get] get version of miru
#define SMART70_ENC_MIRU_IMAGESAVE 11 // [set] miru image config save
#define SMART70_ENC_MIRU_IMAGEREAD 12 // [get +bulk] read and get image
#define SMART70_ENC_MIRU_READTOPBAR 13 // [get] get top side bar-codes
#define SMART70_ENC_MIRU_READBOTBAR 14 // [get] get bottom side bar-codes
#define SMART70_ENC_MIRU_SCANAREA 15 // [set] set the scanning area.
#define SMART70_ENC_MIRU_RESET 16 // [set] reset the scanner.
#define SMART70_ENC_MIRU_DOSHADING 17 // [get] do shading and get the result.
#define SMART70_ENC_MIRU_RESTORE 18 // [get] restore defaults and get the result.
// when SMART70_ENC_MIRU_IMAGEREAD, buffer is SMART70_MIRU_SAVEFILENAME [out].
typedef struct {
WCHAR * sztop;
WCHAR * szbottom;
} SMART70_MIRU_SAVEFILENAME;
#define MIRU_STATUS_DPI_300 300
#define MIRU_STATUS_DPI_600 600
#define MIRU_STATUS_MODE_GRAY 1
#define MIRU_STATUS_MODE_COLOR 3
#define MIRU_STATUS_SIDE_SINGLE 1
#define MIRU_STATUS_SIDE_DUAL 2
#define MIRU_STATUS_FACE_TOP 0
#define MIRU_STATUS_FACE_BOTTOM 1
#define MIRU_STATUS_DROP_NONE 0
#define MIRU_STATUS_DROP_BLUE 1
#define MIRU_STATUS_DROP_GREEN 2
#define MIRU_STATUS_DROP_RED 3
#define MIRU_STATUS_DROP_IR 4
#define MIRU_STATUS_GAIN_MIN 0
#define MIRU_STATUS_GAIN_MAX 63
#define MIRU_STATUS_OFFSET_MIN 0
#define MIRU_STATUS_OFFSET_MAX 511
#define MIRU_STATUS_SPEED_MIN 7400
#define MIRU_STATUS_SPEED_MAX 59200
#define MIRU_SHADING_OFF 0
#define MIRU_SHADING_ON 1
typedef struct {
int dpi;
int mode;
int side;
int face;
int drop;
} MIRU_IMAGE_CONFIG;
typedef struct {
int dpi;
int mode;
int side;
int face;
int drop;
int width;
int height;
int gain;
int offset;
int speed;
int state;
int cline;
int sline;
int b_trigger;
int b_shading;
int b_monitoring;
} MIRU_CONFIG;
// Encoder Track
#define SMART70_ENC_TRACK_MS1 0x01
#define SMART70_ENC_TRACK_MS2 0x02
#define SMART70_ENC_TRACK_MS3 0x04
#define SMART70_ENC_TRACK_JIS 0x08
#define SMART70_ENC_TRACK_BAR 0x10
// Encoder Option
#define SMART70_ENC_OPTION_NORMAL 0x00
#define SMART70_ENC_OPTION_BACKWARD 0x40
#define SMART70_ENC_OPTION_BITMODE 0x80
// Magnetic Coercivity
#define SMART70_ENC_MAGCOERCIVITY_LOCO 200
#define SMART70_ENC_MAGCOERCIVITY_HICO 600
#define SMART70_ENC_MAGCOERCIVITY_SPCO 800
#define SMART70_ENC_TRACK_MS1_MAX 76
#define SMART70_ENC_TRACK_MS2_MAX 37
#define SMART70_ENC_TRACK_MS3_MAX 104
#define SMART70_ENC_TRACK_JIS_MAX 69
#define SMART70_ENC_CL_DIR 1
#define JOB_WAIT 0
#define JOB_MOVE 1
#define JOB_PRINT 2
#define JOB_FLIP 3
#define JOB_LAMINATE 4
#define JOB_ERROR 5
#define JOB_LASER 6
#pragma pack(push,1)
typedef struct
{
int jobid; // job-id for request information, and you must fill this before request.
int work; // job's current working info. JOB_WAIT, ...
BYTE module; // module-id where the card is.
int remain; // the number of remain jobs in job pool, EXCEPT jobid.
// when the 'jobid' value is 0 'work' and 'module' does not have any information and
// 'remain' is ENTIRE jobs count.
} JOBINFO;
#pragma pack(pop)
#pragma pack(push,1)
typedef struct
{
int jobid; // job-id for request information, and you must fill this before request.
int work; // job's current working info. JOB_WAIT, ...
int opt; // print option
BYTE module; // module-id where the card is.
void* hsmart;
BOOL cancel; // user requests cancel.
int remain; // the number of remain jobs in job pool, EXCEPT jobid.
// when the 'jobid' value is 0 'work' and 'module' does not have any information and
// 'remain' is ENTIRE jobs count.
} JOBINFO_EX;
#pragma pack(pop)
typedef struct
{
int jobid;
int res;
BYTE module; // 0xFF : when success, other : res is error and module is errored module-id.
} S70CBParam;
typedef LRESULT (CALLBACK * S70CBPROC)(S70CBParam* pcbres);
typedef int (WINAPI * Smart70_RequestPreemption)(HSMART70 handle, WORD * pwPrmt);
typedef int (WINAPI * Smart70_ReleasePreemption)(HSMART70 handle, WORD wPrmt);
typedef int (WINAPI * Smart70_GetModuleState)(HSMART70 handle, BYTE mod, BYTE * pstate);
typedef int (WINAPI * Smart70_UpdateModuleState)(HSMART70 handle, BYTE mod);
typedef int (WINAPI * Smart70_GetStatus)(HSMART70 handle, BYTE mod, __int64 *pstatus);
typedef int (WINAPI * Smart70_IsModuleReady)(HSMART70 handle, BYTE mod, int *pnReady);
typedef int (WINAPI * Smart70_IsReadyInsertJob)(HSMART70 handle, int *pnReady);
typedef int (WINAPI * Smart70_ToggleManualMode)(HSMART70 handle);
typedef int (WINAPI * Smart70_UpdateCurrPrintJob)(HSMART70 handle, BYTE mod);
typedef int (WINAPI * Smart70_GetCurrPrintJob)(HSMART70 handle, BYTE mod, WORD* pjobid);
typedef int (WINAPI * Smart70_DeleteCurrPrintJob)(HSMART70 handle, BYTE mod);
typedef int (WINAPI * Smart70_CardIn)(HSMART70 handle, BYTE module, int dir, int opt);
typedef int (WINAPI * Smart70_CardOut)(HSMART70 handle, BYTE module, int dir, int opt);
typedef int (WINAPI * Smart70_CardMove)(HSMART70 handle, BYTE fromModule, BYTE toModule, int opt);
typedef int (WINAPI * Smart70_CardMove2)(HSMART70 handle, BYTE fromModule, BYTE fromOpt, BYTE toModule, BYTE toOpt, int cmdopt);
typedef int (WINAPI * Smart70_CardListMove)(HSMART70 handle, CARDMOVELIST * plist);
typedef int (WINAPI * Smart70_CardMoveQuick)(HSMART70 handle, BYTE mod, BYTE opt, int cmdopt);
typedef int (WINAPI * Smart70_CardPass)(HSMART70 handle, BYTE mod, BYTE opt, int cmdopt);
typedef int (WINAPI * Smart70_CardFlipPass)(HSMART70 handle, BYTE mod, BYTE opt, int cmdopt);
typedef int (WINAPI * Smart70_CardFlip)(HSMART70 handle, BYTE modfrom, BYTE modflip, BYTE modto);
typedef int (WINAPI * Smart70_CardFlip2)(HSMART70 handle, BYTE modfrom, BYTE modflip, BYTE modto);
typedef int (WINAPI * Smart70_CardFlipStay)(HSMART70 handle, BYTE modfrom, BYTE modflip);
typedef int (WINAPI * Smart70_Flip)(HSMART70 handle, BYTE mod, int opt, int value);
typedef int (WINAPI * Smart70_CardMoveSensor)(HSMART70 handle, BYTE module, int opt1, int valule, int opt2);
typedef int (WINAPI * Smart70_CardMovePosition)(HSMART70 handle, BYTE mod, int pos);
typedef int (WINAPI * Smart70_CardEject)(HSMART70 handle, BYTE mod);
typedef int (WINAPI * Smart70_CardEjectBin)(HSMART70 handle, BYTE mod, BYTE modbin);
typedef int (WINAPI * Smart70_CardEject2)(HSMART70 handle, BYTE mod, int opt, BYTE modout, int optout);
typedef int (WINAPI * Smart70_SetEncConfig)(HSMART70 handle, BYTE module, int config, int value);
typedef int (WINAPI * Smart70_GetEncConfig2)(HSMART70 handle, BYTE module, int config, void* pvalue, int* plen);
typedef int (WINAPI * Smart70_SetEncConfig2)(HSMART70 handle, BYTE module, int config, void* pvalue, int len);
typedef int (WINAPI * Smart70_SetEncBuffer)(HSMART70 handle, BYTE module, BYTE track, int nbuflen, WCHAR* szbuf);
typedef int (WINAPI * Smart70_WriteEncoder)(HSMART70 handle, BYTE module, BYTE track, BYTE opt);
typedef int (WINAPI * Smart70_ReadEncoder)(HSMART70 handle, BYTE module, BYTE track, BYTE opt);
typedef int (WINAPI * Smart70_FetchEncoder)(HSMART70 handle, BYTE module, BYTE track);
typedef int (WINAPI * Smart70_GetEncBuffer)(HSMART70 handle, BYTE module, BYTE track, int * pnbufsize, WCHAR* szbuf);
typedef int (WINAPI * Smart70_RunEncoder)(HSMART70 handle, BYTE module, BYTE track, int run, void* pbuf, int* pbuflen);
typedef int (WINAPI * Smart70_GetPrinterSettings)(HSMART70 handle, BYTE module, SMART70_DEVMODE* pdm);
typedef int (WINAPI * Smart70_SetPrinterSettings)(HSMART70 handle, BYTE module, SMART70_DEVMODE* pdm);
typedef int (WINAPI * Smart70_PrintDocument)(HSMART70 handle, int opt, int * pjobid);
typedef int (WINAPI * Smart70_SetJobCallback)(HSMART70 handle, S70CBPROC pfnCB);
// @Smart70_PrintStart( opt )
#define SMART70_PRINT_IMMEDIATE 0x00
#define SMART70_PRINT_WITHCARDIN 0x01
#define SMART70_LAMINATE_IMMEDIATE SMART70_PRINT_IMMEDIATE
#define SMART70_LAMINATE_WITHCARDIN SMART70_PRINT_WITHCARDIN
#define SMART70_LAMINATE_SIDETOP 0x00
#define SMART70_LAMINATE_SIDEBOTTOM 0x02
//typedef int (WINAPI * Smart70_PrintStart)(HSMART70 handle, BYTE mod, BOOL bCardIn, int cmdopt);
typedef int (WINAPI * Smart70_PrintStart)(HSMART70 handle, BYTE mod, int opt, int cmdopt);
typedef int (WINAPI * Smart70_GetJobInfo)(HSMART70 handle, JOBINFO* pjobinf);
typedef int (WINAPI * Smart70_GetJobInfoEx)(HSMART70 handle, JOBINFO_EX * pjobinf);
/*
* Job Descriptor Callback Functions
*/
// error callback
typedef int /*LRESULT*/ (CALLBACK * SM70CB_ERROR)(HSMART70 handle, int jobid, BYTE mid, int nres);
// magnetic encoding callback
typedef int (CALLBACK * SM70CB_MAGNETIC)(HSMART70 handle, int jobid, BYTE mid);
// contact smart card encoding callback
typedef int (CALLBACK * SM70CB_CONTACT)(HSMART70 handle, int jobid, BYTE mid, BYTE *pATR, int nATRLen);
// contactless smart card encoding callback
typedef int (CALLBACK * SM70CB_CONTACTLESS)(HSMART70 handle, int jobid, BYTE mid, BYTE *pATR, int nATRLen);
// scan image callback
typedef struct {
int bpp;
int width;
int height;
} IMAGE_INFO;
typedef struct {
BYTE * ptop;
int ntoplen;
BYTE * pbottom;
int nbottomlen;
IMAGE_INFO topinf;
IMAGE_INFO bottominf;
} SCANIMAGE_RESULT;
typedef int (CALLBACK * SM70CB_SCANIMAGE)(HSMART70 handle, int jobid, BYTE mid, SCANIMAGE_RESULT * presult);
// scan barcode callback
typedef struct {
WCHAR * msztop; // multi null-terminated string of barcode text in top side.
WCHAR * mszbottom; // multi null-terminated string of barcode text in bottom side.
} SCANBARCODE_RESULT;
typedef int (CALLBACK * SM70CB_SCANBARCODE)(HSMART70 handle, int jobid, BYTE mid, SCANBARCODE_RESULT * presult);
// print a page callback
typedef int (CALLBACK * SM70CB_PRINT)(HSMART70 handle, int jobid, BYTE mid, int page);
// laminate a page callback
typedef int (CALLBACK * SM70CB_LAMINATE)(HSMART70 handle, int jobid, BYTE mid, int page);
// user callback
typedef int (CALLBACK * SM70CB_USER)(HSMART70 handle, int jobid, BYTE mid, int opt);
/*
* Job Descriptor Item
*/
// card insert, move, eject.
#define S7JD_MOVE 1
typedef struct {
BYTE from_mid; // source module-id to move
BYTE from_opt; // option for from_mid
BYTE to_mid; // target module-id to move
BYTE to_opt; // optio nfor to_mid
BYTE reserved[8];
} S7JD_PARAM_MOVE;
#define S7JD_MOVE_OPT_MIHAUTO 0x0F // Multi-Input-Hopper Auto
#define S7JD_MOVE_OPT_MOHAUTO 0x0F // Multi-Output-Hopper Auto
#define S7JD_MOVE_OPT_EJECT 0xFF
// card flip
#define S7JD_FLIP 2
typedef struct {
BYTE from_mid; // source module-id to move for flip
BYTE flip_mid; // module-id of flipper
BYTE to_mid; // target module-id to move after flip
BYTE opt; // flip option
BYTE reserved[8];
} S7JD_PARAM_FLIP;
// magnetic encoding
#define S7JD_MAGNETIC 3
typedef struct {
BYTE mid; // module-id of magnetic encoder
int coer; // coercivity value
BYTE reserved[8];
SM70CB_MAGNETIC pfncb; // callback function for magnetic encoding.
// SDK move the card to magnetic position, configure coercivity and
// calls this callback function.
} S7JD_PARAM_MAGNETIC;
// contact smart card encoding
#define S7JD_CONTACT 4
typedef struct {
BYTE mid; // module-id of contact smart card encoder
BYTE reserved[8];
SM70CB_CONTACT pfncb; // callback function for contact smart card encoding.
// SDK move the card to contact position, contact header down, power on and
// calls this callback function.
// after callback function SDK power off and detach contact header.
} S7JD_PARAM_CONTACT;
// contactless smart card encoding
#define S7JD_CONTACTLESS 5
typedef struct {
BYTE mid; // module-id of contactless smart card encoder
BYTE reserved[8];
SM70CB_CONTACTLESS pfncb; // callback function for contactless smart card encoding.
// SDK move the card to contactless position, power on and
// calls this callback function.
// after callback function SDK power off.
} S7JD_PARAM_CONTACTLESS;
// scan the image
#define S7JD_SCANIMAGE 6
typedef struct {
BYTE mid; // module-id of scanner
int dpi; // scanning dpi
int mode; // scanning color mode
int side; // scanning side
int opt; // option for scan
BYTE reserved[8];
SM70CB_SCANIMAGE pfncb; // callback function for scan the image.
// SDK configure scanner, scan image and calls this callback function.
} S7JD_PARAM_SCANIMAGE;
#define SCANIMAGE_OPT_TOP 0 // acquire top side result only
#define SCANIMAGE_OPT_BOTTOM 1 // acquire bottom side result only
#define SCANIMAGE_OPT_BOTH 2 // acquire both side results
// scan the barcode
#define S7JD_SCANBARCODE 7
typedef struct {
BYTE mid; // module-id of scanner
int dpi; // scanning dpi
int mode; // scanning color mode
int side; // scanning side
int opt; // option for scan
BYTE reserved[8];
SM70CB_SCANBARCODE pfncb; // callback function for scan the barcode.
// SDK configure scanner, scan barcodes and calls this callback function.
} S7JD_PARAM_SCANBARCODE;
#define SCANBARCODE_OPT_TOP 0 // acquire top side result only
#define SCANBARCODE_OPT_BOTTOM 1 // acquire bottom side result only
#define SCANBARCODE_OPT_BOTH 2 // acquire both side results
// print
#define S7JD_PRINT 8
typedef struct {
BYTE mid; // module-id of printer
int page; // printing page
BYTE reserved[8];
SM70CB_PRINT pfncb; // callback function for print a page.
// SDK move card to print position if necessary and calls this callback function.
// In print callback function, draw, make print data and send print data to printer.
// After callback function, SDK starts printing.
} S7JD_PARAM_PRINT;
// laminate
#define S7JD_LAMINATE 9
typedef struct {
BYTE mid; // module-id of laminator
int page; // laminating page
BYTE reserved[8];
SM70CB_LAMINATE pfncb; // callback function for laminate a page.
// SDK laminates page and calls this callback function.
} S7JD_PARAM_LAMINATE;
// laminate
#define S7JD_USER 10
typedef struct {
BYTE mid; // module-id of user-defined work
int opt; // option
BYTE reserved[8];
SM70CB_USER pfncb; // callback function for user-defined work.
} S7JD_PARAM_USER;
typedef void * HJOBD;
typedef int (WINAPI * Smart70_NewJobDescriptor)(HSMART70 handle, HJOBD * phjd, SM70CB_ERROR pfncbErr);
typedef int (WINAPI * Smart70_FreeJobDescriptor)(HSMART70 handle, HJOBD hjd);
typedef int (WINAPI * Smart70_AddJobItem)(HSMART70 handle, HJOBD hjd, int ji_type, void * ji_param);
typedef int (WINAPI * Smart70_AddJobItemMove)(HSMART70 handle, HJOBD hjd, BYTE from_mid, BYTE from_opt, BYTE to_mid, BYTE to_opt);
typedef int (WINAPI * Smart70_AddJobItemFlip)(HSMART70 handle, HJOBD hjd, BYTE from_mid, BYTE flip_mid, BYTE to_mid, BYTE opt);
typedef int (WINAPI * Smart70_AddJobItemMagnetic)(HSMART70 handle, HJOBD hjd, BYTE mid, int coer, SM70CB_MAGNETIC pfncb);
typedef int (WINAPI * Smart70_AddJobItemContact)(HSMART70 handle, HJOBD hjd, BYTE mid, SM70CB_CONTACT pfncb);
typedef int (WINAPI * Smart70_AddJobItemContactless)(HSMART70 handle, HJOBD hjd, BYTE mid, SM70CB_CONTACTLESS pfncb);
typedef int (WINAPI * Smart70_AddJobItemScanImage)(HSMART70 handle, HJOBD hjd, BYTE mid, int dpi, int mode, int side, int opt, SM70CB_SCANIMAGE pfncb);
typedef int (WINAPI * Smart70_AddJobItemScanBarcode)(HSMART70 handle, HJOBD hjd, BYTE mid, int dpi, int mode, int side, int opt, SM70CB_SCANBARCODE pfncb);
typedef int (WINAPI * Smart70_AddJobItemPrint)(HSMART70 handle, HJOBD hjd, BYTE mid, int page, SM70CB_PRINT pfncb);
typedef int (WINAPI * Smart70_AddJobItemLaminate)(HSMART70 handle, HJOBD hjd, BYTE mid, int page, SM70CB_LAMINATE pfncb);
typedef int (WINAPI * Smart70_AddJobItemUser)(HSMART70 handle, HJOBD hjd, BYTE mid, int opt, SM70CB_USER pfncb);
typedef int (WINAPI * Smart70_InsertJob)(HSMART70 handle, HJOBD hjd, int * pjobid);
typedef int (WINAPI * Smart70_ExGetDevParam2)(HSMART70 handle, BYTE mod, WCHAR* pw, int slot, int* pvalue, int nParams);
typedef int (WINAPI * Smart70_ExSetDevParam2)(HSMART70 handle, BYTE mod, WCHAR* pw, int slot, int* pvalue, int nParams);
typedef int (WINAPI * Smart70_MagWrite)(HSMART70 handle, BYTE mod, BOOL bT1, WCHAR* szT1, BOOL bT2, WCHAR* szT2, BOOL bT3, WCHAR* szT3, BOOL bJIS, WCHAR* szJIS);
typedef int (WINAPI * Smart70_MagRead)(HSMART70 handle, BYTE mod, BOOL bT1, WCHAR* szT1, int nT1, BOOL bT2, WCHAR* szT2, int nT2, BOOL bT3, WCHAR* szT3, int nT3, BOOL bJIS, WCHAR* szJIS, int nJIS);
// laser device manager
typedef int (WINAPI * Smart70_LaserConnect)();
typedef int (WINAPI * Smart70_LaserDisconnect)();
typedef int (WINAPI * Smart70_LaserCheckPort)();
// draw function for support laser
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
} LLINE, LRECT, LOVAL;
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
int round;
} LRRECT;
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
S70FontInfo font;
int align;
WCHAR* szText;
} LTEXT;
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
WCHAR* szBarName;
int nSize;
COLORREF rgbBar;
WCHAR* szData;
WCHAR* szPost;
bool showString;
int opt1;
int opt2;
} LBAR;
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
WCHAR* szFile;
BYTE scale;
BYTE align;
} LIMG;
typedef struct {
BYTE page;
BYTE panel;
int x;
int y;
int cx;
int cy;
S70Border border;
S70BackGround back;
HBITMAP hbmp;
BYTE scale;
BYTE align;
} LBMP;
typedef int (WINAPI * Smart70_LDrawLine )(HSMART70 handle, LLINE *pline, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawRect )(HSMART70 handle, LRECT *prect, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawOval )(HSMART70 handle, LOVAL *poval, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawRRect )(HSMART70 handle, LRRECT *prrc, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawText )(HSMART70 handle, LTEXT *ptext, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawBarcode )(HSMART70 handle, LBAR *pbar, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawImage )(HSMART70 handle, LIMG *pimg, S70Laser *plaser, RECT* prc);
typedef int (WINAPI * Smart70_LDrawBitmap )(HSMART70 handle, LBMP *pbmp, S70Laser *plaser, RECT* prc);