회사일을 하면서 알게된 스케너에 관한 내용을 적어보고자 합니다.
필요한 정보를 바코드로 표현하는 바코드 폰트가 필요합니다. 폰트에는 1D바코드, 2D바코드로 구분됩니다.
1D 바코드를 표현하기 위해서는 텍스트 공간을 1D 바코드 폰트( ADVC128A.TTF ) 를 지정하고 변환하고자 하는 정보를 폰트로 표시될수 있도록 변환해 주는 작업이 필요합니다.
1D 바코드는 코드128 타입으로 변환하는 작업을 합니다.
2D 바코드는 PDF417 폰트로 지정해서 변환해 주면 됩니다.
이렇게 해서 출력된 바코드 정보를 읽어 주는 스케너가 필요합니다.
1D 바코드를 읽을수 있는 1D 스케너, 2D 바코드를 읽을 수 있는 2D 스케너로 나누어 집니다.
가격은 2D 스케너가 더 비쌉니다.
스케너를 구매에서 설치까지 주의해야 될게 있습니다.
정보를 읽어들이는 프로그램이 키보드 입력을 원하는지 아니면 통신방식을 원하는지에 따라서 달라집니다.
키보드 웨지 타입 과 RS232C 타입으로 나누어 집니다.
키보드 웨지 타입은 키보드출력 단자에 스케너를 연결해 주면 설치가 완료됩니다.
RS232C 타입을 DLL 파일( MSCOMCTL.OCX, MSCOMM32.OCX) 을 설치해 줘야 합니다.
시리얼 통신으로 프로그램 실행하는 방법
1. 실행파일로 환경을 구축한다.
path = c:\windows\system32
regsvr32 c:\kdac\mpms_gather\MSCOMM32.OCX
2. OLE Customer Control Object을 생성한다.
3. 생성된 Object의 속성을 설정한다.
If ole_ComScanner.object.PortOpen = True Then
ole_ComScanner.object.PortOpen = False
End If
ole_ComScanner.object.CommPort = 1
ole_ComScanner.object.Settings = "9600,n,8,1"
ole_ComScanner.object.RThreshold = 1
ole_ComScanner.object.PortOpen = True
4. oncomm event에서 비지니스 로직을 수행한다.
string barcode
GraphicObject which_control
sleep(0.5) // 정보를 이벤트에서 받아들일수 있는 시간
barcode = ole_comscanner.object.input
Choose case gi_page_index
case 3
// 실적조회
//w_mpsg090i.TriggerEvent("ue_line_select")
case 4
// 작업일보
//w_mpsg080i.TriggerEvent("ue_line_select")
case else
// 간판 입력창에 Focus
IF IsValid(w_mpsg030i) THEN
// 실적등록화면 최상위로
w_mpsg030i.BringToTop = TRUE
// 실적등록의 LINE선택 이벤트
w_mpsg030i.TriggerEvent("ue_line_select")
// 간판번호 입력창의 초기화및 FOCUS
w_mpsg030i.em_kb_no.text = ''
w_mpsg030i.em_kb_no.SetFocus()
ELSE
// 실적등록 Open
Open(w_mpsg030i)
END IF
which_control = GetFocus()
IF TypeOf(which_control) = EditMask! THEN
w_mpsg030i.em_kb_no.text = barcode
IF w_mpsg030i.wf_transaction_select() THEN
// 해당간판 등록
Open(w_mpsg050u)
ELSE
// 해당간판 오류 표시
OpenWithParm(w_mpsg013b,"작업장을 확인하십시요"
// 갱신
w_mpsg030i.em_kb_no.text = ''
w_mpsg030i.em_kb_no.SetFocus()
END IF
END IF
end choose