KR20100037670A - 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법 - Google Patents

업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법 Download PDF

Info

Publication number
KR20100037670A
KR20100037670A KR1020080096875A KR20080096875A KR20100037670A KR 20100037670 A KR20100037670 A KR 20100037670A KR 1020080096875 A KR1020080096875 A KR 1020080096875A KR 20080096875 A KR20080096875 A KR 20080096875A KR 20100037670 A KR20100037670 A KR 20100037670A
Authority
KR
South Korea
Prior art keywords
program
usb
information
hub
usb device
Prior art date
Application number
KR1020080096875A
Other languages
English (en)
Other versions
KR101033177B1 (ko
Inventor
이석로
김계동
Original Assignee
(주)인터넷커머스코리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)인터넷커머스코리아 filed Critical (주)인터넷커머스코리아
Priority to KR1020080096875A priority Critical patent/KR101033177B1/ko
Publication of KR20100037670A publication Critical patent/KR20100037670A/ko
Application granted granted Critical
Publication of KR101033177B1 publication Critical patent/KR101033177B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1218Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
    • G06F3/122Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to computing resources, e.g. memory, CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/077Constructional details, e.g. mounting of circuits in the carrier
    • G06K19/0772Physical layout of the record carrier
    • G06K19/07732Physical layout of the record carrier the record carrier having a housing or construction similar to well-known portable memory devices, such as SD cards, USB or memory sticks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 업무 프로그램의 자동 테스트 과정 동안 USB 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법에 관한 것으로서, 에뮬레이터는, 슬레이브 컨트롤러, 네트워크 인터페이스 장치, 호스트 컨트롤러, 메모리, 및 CPU를 포함한다. 슬레이브 컨트롤러는 업무 프로그램이 설치된 PC에 접속되고, 네트워크 인터페이스 장치는 외부의 통신망에 접속된다. 호스트 컨트롤러는 USB 허브에 접속한 USB 장치로부터 장치 정보 및 상세 정보를 수신한다. 메모리는 제어 프로그램들을 저장한다. CPU는 제어 프로그램들 중 일부를 실행시키고, 장치 정보 및 상세 정보에 기초하여 USB 장치를 인식한다. CPU는 슬레이브 컨트롤러를 통하여 PC로부터 USB 장치에 대한 동작 요청 데이터를 수신할 때, 네트워크 인터페이스 장치로부터 재현 명령을 수신하였는지의 여부에 따라, USB 장치의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작, 또는 PC와 USB 장치간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 선택적으로 실행한다. 본 발명에 따르면, 사람에 의한 USB 장치의 조작이 필요 없는 업무 프로그램의 완전한 자동 테스트가 실현될 수 있고, 업무 프로그램의 테스트 시간이 단축될 수 있다.
Figure P1020080096875
USB 장치, USB 허브, 업무 프로그램, 자동 테스트 프로그램

Description

업무 프로그램의 자동 테스트 과정 동안 USB 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법{Emulator substituting for universal serial bus devices by virtual operation of the emulator, during automation test process of work program, and operation method thereof}
본 발명은 PC(personal computer)에 연결되는 보조 장치에 관한 것으로서, 더욱 상세하게는, USB(universal serial bus) 장치의 동작을 대행하는 에뮬레이터(emulator) 및 그 동작 방법에 관한 것이다.
일반적으로, PC에는 다양한 종류의 USB 장치들이 연결될 수 있다. 예를 들어, 은행이나 증권회사와 같은 금융 기관 내에서 사용되는 금융 업무용 PC에는, 각종 금융 업무의 전산화를 위한 주변기기로서, 핀 패드(pin pad), 직불카드 발급기, IC 리더기(integrated circuit reader), 통장 프린터(printer), 및 통장 리더기 등과 같은 USB 장치들이 연결될 수 있다.
사용자는 금융 업무용 PC를 통하여 금융 업무를 실행하면서, 금융 업무에 필요한 해당 USB 장치를 선택적으로 조작할 수 있다. 예를 들어, 자금 이체 업무와 같이 통장 계좌의 비밀번호를 입력해야 하는 금융 업무를 실행할 때, 사용자는 핀 패드에 비밀번호를 입력할 수 있다. 또, 거래 내역을 통장에 인쇄하는 통장 인자 업무를 실행할 때, 사용자는 통장 프린터에 통장을 삽입하는 조작을 할 수 있다.
한편, 금융 업무용 PC에는 각종 금융 업무를 처리하는 금융 업무 프로그램이 설치된다. 새로운 금융 업무의 실행 기능을 추가하거나, 또는 특정 금융 업무의 실행 기능을 개선하기 위해, 프로그램 개발자에 의해, 좀 더 강화된 기능의 금융 업무 프로그램이 지속적으로 개발되고 있다. 새로 개발된 금융 업무 프로그램은 금융 기관의 금융 시스템에 적용되기 전에 테스트 되고, 이 테스트 과정에서 금융 업무 프로그램이 정상적으로 동작하는지의 여부가 검증된다.
종래의 테스트 과정은 테스트 담당자의 수작업에 의해 이루어져 왔다. 즉, 테스트 담당자가 금융 업무용 PC와 USB 장치들을 각각의 금융 거래 업무별로 직접 조작한 후, 금융 업무용 PC에 표시된 금융 거래 업무의 처리 결과 화면을 보고, 금융 업무 프로그램이 정상적으로 동작하는지의 여부를 판단한다. 테스트 담당자의 수작업에 의한 테스트의 경우, 테스트 시간 및 비용이 증가하는 문제점이 있다.
최근에는 테스트 시간 및 비용을 줄이기 위해, 금융 업무 프로그램을 자동으로 테스트하는 테스트 프로그램들이 개발되고 있다. 하지만 테스트 프로그램이 금융 업무 프로그램을 자동으로 테스트하는 동안에도, USB 장치(즉, 주변기기)의 동작이 필요한 금융 업무가 테스트 될 때에는, 테스트 담당자가 직접 해당 USB 장치를 조작해야만 한다.
이처럼 USB 장치의 동작과 관련한 업무를 처리하는 업무 프로그램에 대한 테스트에 있어서는, 사람의 조작이 필요없는 완전한 자동 테스트의 실현이 어렵다. 따라서 업무 프로그램의 완전한 자동 테스트를 위해서는, 테스트 프로그램이 업무 프로그램을 자동으로 테스트하는 동안, 사람이 직접 조작하지 않더라도 USB 장치의 동작을 자동으로 대행할 수 있는 장치가 필요하다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 자동 테스트 프로그램이 업무 프로그램을 자동으로 실행시켜 테스트하는 동안, 업무 프로그램의 실행 과정에 필요한 USB 장치의 동작을 가상적으로 대행함으로써, 사람에 의한 USB 장치의 조작이 필요 없는 업무 프로그램의 완전한 자동 테스트를 실현할 수 있는 에뮬레이터를 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 자동 테스트 프로그램이 업무 프로그램을 자동으로 실행시켜 테스트하는 동안, 업무 프로그램의 실행 과정에 필요한 USB 장치의 동작을 가상적으로 대행함으로써, 사람에 의한 USB 장치의 조작이 필요 없는 업무 프로그램의 완전한 자동 테스트를 실현할 수 있는 에뮬레이터의 동작 방법을 제공하는 데 있다.
상기한 기술적 과제를 달성하기 위한 본 발명에 따른 에뮬레이터는, 슬레이브 컨트롤러, 네트워크 인터페이스 장치, 호스트 컨트롤러, 메모리, 및 CPU(central processor unit)를 포함한다. 슬레이브 컨트롤러는 제1 USB(universal serial bus) 포트(port)를 통하여, 업무 프로그램이 설치된 PC(personal computer)에 접속된다. 네트워크 인터페이스 장치는 통신 포트를 통하여, 외부의 통신망에 접속된다. 호스트 컨트롤러는 제2 USB 포트를 통하여, 외부의 USB 허브(hub)에 접속되고, USB 허브에 접속한 적어도 하나의 USB 장치에 주소를 할당하고, 적어도 하 나의 USB 장치로부터 장치 정보 및 상세 정보를 수신한다. 메모리는 적어도 하나의 USB 장치의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작, 또는 PC와 적어도 하나의 USB 장치 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행하기 위한 제어 프로그램들을 저장한다. CPU는 제어 프로그램들 중 일부를 실행시키고, 호스트 컨트롤러로부터 수신되는 장치 정보 및 상세 정보에 기초하여 적어도 하나의 USB 장치를 인식한다.
CPU는 슬레이브 컨트롤러를 통하여 장치 정보 및 상세 정보를 PC에 전송함으로써 적어도 하나의 USB 장치의 접속 상태를 PC에 통보한다. CPU는 슬레이브 컨트롤러를 통하여 PC로부터 적어도 하나의 USB 장치에 대한 동작 요청 데이터를 수신할 때, 네트워크 인터페이스 장치로부터 재현 명령을 수신하였는지의 여부에 따라, 제1 또는 제2 가상의 USB 허브 동작을 선택적으로 실행한다.
CPU가 제1 가상의 USB 허브 동작을 실행하는 동안 적어도 하나의 USB 장치는 동작을 정지하고, PC는 CPU의 제1 가상의 USB 허브 동작에 의해 적어도 하나의 USB 장치가 동작하는 것으로 인식한다. 업무 프로그램이 PC에서 실행될 때, 업무 프로그램에 의해 처리되는 업무들 중 일부는 적어도 하나의 USB 장치의 동작과 관련한 업무를 포함한다.
상기한 다른 기술적 과제를 달성하기 위한 본 발명에 따른 에뮬레이터의 동작 방법은, 업무 프로그램이 설치된 PC(personal computer)에 접속되는 단계; USB 포트를 통하여 접속된 외부의 USB 허브에 USB 장치가 접속될 때, 상기 USB 장치를 인식하는 단계; 상기 PC에 상기 USB 장치의 접속 상태를 통보하는 단계; 상기 PC로 부터 상기 USB 장치에 대한 동작 요청 신호를 수신하는 단계; 외부의 통신망을 통하여 재현 명령을 수신하였는지의 여부를 판단하는 단계; 상기 재현 명령을 수신한 경우, 테스트용 입력 정보를 상기 PC에 출력함으로써, 상기 USB 장치의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작을 실행하는 단계; 및 상기 재현 명령을 수신하지 않은 경우, 동작 제어 신호를 상기 USB 장치에 출력하고, 상기 USB 장치의 동작에 따른 입력 정보를 상기 PC에 출력함으로써, 상기 PC와 상기 USB 장치간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행하는 단계를 포함한다. 상기 업무 프로그램이 상기 PC에서 실행될 때, 상기 업무 프로그램에 의해 처리되는 업무들 중 일부는 상기 USB 장치의 동작과 관련한 업무를 포함한다.
상술한 것과 같이, 본 발명에 따른 에뮬레이터 및 그 동작 방법은, 자동 테스트 프로그램이 업무 프로그램을 자동으로 실행시켜 테스트하는 동안, 업무 프로그램의 실행 과정에 필요한 USB 장치의 동작을 가상적으로 대행할 수 있으므로, 사람에 의한 USB 장치의 조작이 필요 없는 업무 프로그램의 완전한 자동 테스트를 실현할 수 있다. 그 결과, 업무 프로그램의 테스트 시간이 단축될 수 있다.
또한, 본 발명에 따른 에뮬레이터는 가상의 USB 허브 기능을 포함하므로, 하나의 에뮬레이터가 복수의 USB 장치의 동작을 대행할 수 있다. 따라서, 업무 프로그램의 자동 테스트를 위해, 업무 프로그램이 설치된 PC에, 복수의 USB 장치의 동작을 각각 대행하는 복수의 에뮬레이터가 접속될 필요가 없고, 하나의 에뮬레이터만 접속되면 되므로, 복수의 에뮬레이터의 제작에 따른 비용이 절감될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 일 실시예에 따른 에뮬레이터의 개략적인 구성과, 에뮬레이터에 연결된 PC, USB 허브 및 USB 장치들을 나타내는 도면이다. 도 1에는, 도면의 간략화를 위해, 본 발명과 관련된 부분들만이 도시되고, 각 구성 요소들 간의 송수신 신호들에 대한 도시가 생략된다. 에뮬레이터(emulator)(100)는 슬레이브 컨트롤러(slave controller)(110), 네트워크 인터페이스(network interface) 장치(120), 메모리(memory)(130), CPU(central processor unit)(140), 호스트 컨트롤러(host controller)(150), 및 전원 공급부(160)를 포함한다.
슬레이브 컨트롤러(110)는 USB(universal serial bus) 포트(port)(101)를 통하여, PC(personal computer)(200)에 접속된다. 즉, 에뮬레이터(100)의 USB 포트(101)가 PC(200)의 USB 포트(201)에 접속된다. 이 후, 슬레이브 컨트롤러(110)는 PC(200)의 호스트 컨트롤러(210)와 통신한다. 네트워크 인터페이스 장치(120)는 통신 포트(102)를 통하여 외부의 통신망(300)에 접속된다. 네트워크 인터페이스 장치(120)는 통신망(300)에 접속한 PC(200)의 네트워크 인터페이스 장치(220)와 통신할 수 있고, 통신망(300)에 접속한 외부의 제어 장치(미도시)와 통신할 수 있다.
메모리(130)는 논리 허브(hub) 프로그램(141), 주제어 프로그램(142), 운영체제 프로그램(143), 및 가상 드라이버(virtual driver) 프로그램들(VD1∼VDK)(K는 정수)을 포함하는 제어 프로그램들을 저장한다. 상기 제어 프로그램들은 USB 장치(U1∼UK 중 적어도 하나)의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작, 또는 PC(200)와 USB 장치(U1∼UK 중 적어도 하나) 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행하기 위한 프로그램들이다. 에뮬레이터(100)는 입력 장치(170)를 더 포함할 수 있다. 입력 장치(170)는 사용자의 조작에 따라, CPU(140)가 추가의 가상 드라이버 프로그램을 메모리(130)에 저장하도록, CPU(140)에 상기 추가의 가상 드라이버 프로그램을 입력한다.
CPU(140)는 전원 공급부(160)로부터 내부 전원(IPWR)을 공급받으면 이를 인식하고, 논리 허브 프로그램(141), 주제어 프로그램(142), 및 운영체제 프로그램(143)을 실행시킨다. CPU(140)는 호스트 컨트롤러(150)로부터 수신되는 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)에 기초하여 해당 USB 장치를 인식한다. 장치 정보들(DVF1∼DVFK) 각각은 USB 장치들(U1∼UK) 각각에 대한, USB 장치의 이름, USB 스펙 버전(spec version) 정보, 및 USB 장치에 전송되는 통신 패킷(packet)의 최대 길이 정보를 포함한다. 상세 정보들(DSF1∼DSFK) 각각은 USB 장치들(U1∼UK) 각각에 대한, 제조회사 ID(identification), 제품번호, 펌웨어(firm ware) 버전 정보, 및 제조회사 이름을 포함한다.
CPU(140)는 슬레이브 컨트롤러(110)를 통하여 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)를 PC(200)에 전송함으로써, 해당 USB 장 치(U1∼UK 중 하나)의 접속 상태를 PC(200)에 통보한다(즉, 해당 USB 장치(U1∼UK 중 하나)가 에뮬레이터(100)에 접속되었음을 PC(200)에 알린다). CPU(140)는 슬레이브 컨트롤러(110)를 통하여 PC(200)로부터 USB 장치(U1∼UK 중 하나)에 대한 동작 요청 데이터(RQD1∼RQDK 중 하나)를 수신할 때, 네트워크 인터페이스 장치(120)로부터 재현 명령(RPCMD)을 수신하였는지의 여부를 판단한다.
이 후, CPU(140)는 재현 명령(RPCMD)의 수신 여부에 따라, USB 장치(U1∼UK 중 적어도 하나)의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작, 또는 PC(200)와 USB 장치(U1∼UK 중 적어도 하나) 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 선택적으로 실행한다. CPU(140)가 상기 제1 가상의 USB 허브 동작을 실행하는 동안 해당 USB 장치(U1∼UK 중 하나)는 동작을 정지하고, PC(200)는 CPU(140)의 상기 제1 가상의 USB 허브 동작에 의해 해당 USB 장치(U1∼UK 중 하나)가 동작하는 것으로 인식한다.
호스트 컨트롤러(150)는 USB 포트(103)를 통하여, 외부의 USB 허브(400)에 접속된다. 즉, 에뮬레이터(100)의 USB 포트(101)가 USB 허브(400)의 USB 포트(401)에 접속된다. 호스트 컨트롤러(150)는 USB 허브(400)에 접속한 USB 장치(U1∼UK 중 적어도 하나)에 주소(AD1∼ADK 중 적어도 하나)를 할당한다. 호스트 컨트롤러(150)는 USB 장치(U1∼UK 중 적어도 하나)로부터 장치 정보(DVF1∼DVFK 중 적어도 하나) 및 상세 정보(DSF1∼DSFK 중 적어도 하나)를 수신한다. 호스트 컨트롤러(150)는 USB 장치(U1∼UK 중 적어도 하나)에 할당한 주소(AD1∼ADK 중 적어도 하나)와 함께 장치 정보(DVF1∼DVFK 중 적어도 하나) 및 상세 정보(DSF1∼DSFK 중 적어도 하나) 를 저장한다. 호스트 컨트롤러(150)는 CPU(140)가 상기 제2 가상의 USB 허브 동작을 실행할 때, CPU(140)와 USB 장치(U1∼UK 중 적어도 하나) 간의 통신을 인터페이스 한다. 이때, 호스트 컨트롤러(150)는 주소(AD1∼ADK 중 적어도 하나)를 이용하여 USB 장치(U1∼UK 중 적어도 하나)를 식별한다.
외부 전원(EPWR)이 전원 공급부(160)에 입력될 때, 전원 공급부(160)는 외부 전원(EPWR)에 기초하여 내부 전원(IPWR)을 생성하고, 내부 전원(IPWR)을 에뮬레이터(100) 내의 각 장치들, 즉, 슬레이브 컨트롤러(110), 네트워크 인터페이스 장치(120), 메모리(130), CPU(140), 호스트 컨트롤러(150), 입력 장치(170)에 공급한다.
PC(200)는 호스트 컨트롤러(210), 네트워크 인터페이스 장치(220), 메모리(230), CPU(240), 및 주변 장치부(250)를 포함한다. 메모리(230)에는 업무 프로그램(241), 자동 테스트 프로그램(242), 운영체제 프로그램(243), 및 드라이버 프로그램들(D1∼DK)이 저장될 수 있다. 주변 장치부(250)에 포함된 입력부(미도시)를 통한 사용자의 입력에 따라, CPU(240)가 업무 프로그램(241)과 자동 테스트 프로그램(242)을 실행시킬 수 있다.
CPU(240)에서 자동 테스트 프로그램(242)이 실행될 때, 자동 테스트 프로그램(242)은 업무 프로그램(241)이 실행되는 동안 발생하는 이벤트들을 기록한다. 이 후, 자동 테스트 프로그램(242)은 기록한 상기 이벤트들을 업무 프로그램(241)에서 재현함으로써, 업무 프로그램(241)을 자동으로 실행시켜 테스트한다. 여기에서, 이벤트는 업무 프로그램(241)의 각 업무 처리 화면을 이루는 구성 요소들(예를 들어, 버튼(button), 콤보 박스(combo box), 텍스트(text) 입력란, 레이블(label) 등)에서 발생하는 이벤트를 의미한다. 예를 들어, 사용자가 특정 업무 처리 화면에서 특정 업무를 실행하기 위해 특정 버튼을 클릭(click)한 경우, 해당 버튼에서 "클릭"의 이벤트가 발생한 것이다. 또, 사용자가 특정 업무 처리 화면에서 텍스트 입력란에 특정 텍스트를 입력한 경우, 해당 텍스트 입력란에서 "텍스트 입력"의 이벤트가 발생한 것이다.
한편, 자동 테스트 프로그램(242)은 업무 프로그램(241)의 이벤트들을 기록할 때, 네트워크 인터페이스 장치(220)를 통하여 기록 명령(RCCMD)을 에뮬레이터(100)에 전송할 수 있다. 자동 테스트 프로그램(242)이 상기 이벤트들을 업무 프로그램(241)에서 재현할 때, 네트워크 인터페이스 장치(220)를 통하여 재현 명령(RPCMD)을 에뮬레이터(100)에 전송할 수 있다. 선택적으로, 자동 테스트 프로그램(242)은 통신망(300)에 접속한 외부의 제어 장치(미도시)에 설치될 수도 있다. 이 경우, 에뮬레이터(100)는 상기 제어 장치로부터 기록 명령(RCCMD) 또는 재현 명령(RPCMD)을 수신한다.
업무 프로그램(241)이 CPU(240)에서 실행될 때, 업무 프로그램(241)에 의해 처리되는 업무들 중 일부는 USB 장치(U1∼UK 중 적어도 하나)의 동작과 관련한 업무를 포함한다. 예를 들어, 업무 프로그램(241)이 은행이나 증권회사와 같은 금융 기관에서 사용되는 금융 업무 프로그램인 경우, USB 장치(U1∼UK)는 핀 패드(pin pad), 직불카드 발급기, IC 리더기(integrated circuit reader), 통장 프린터(printer), 및 통장 리더기 등을 포함할 수 있다. 이 경우, 금융 업무 프로그램 에 의해 실행되는 자금 이체 업무는, 핀 패드에 해당 계좌의 비밀번호가 입력되어야만 처리될 수 있는 업무로서, USB 장치의 동작과 관련된 업무에 해당한다. 또, 금융 업무 프로그램에 의해 실행되는 통장 인자 업무는, 통장 프린터에 통장이 삽입되어야만 처리될 수 있는 업무로서, USB 장치의 동작과 관련된 업무에 해당한다.
다음으로, 도 2 내지 도 8을 참고하여, 에뮬레이터(200)의 동작 과정을 좀 더 상세히 설명한다. 도 2에는 도면의 간략화를 위해 일부 장치들의 도시가 생략된다. 한편, 도 3에 도시되지 않았지만, 외부 전원(EPWR)이 에뮬레이터(100)에 공급되면, 전원 공급부(160)가 외부 전원(EPWR)에 기초하여, 내부 전원(IPWR)을 생성하고, 내부 전원(IPWR)을 에뮬레이터(100)내의 각 장치들에 공급한다. 그 결과, CPU(140)가 내부 전원(IPWR)의 공급을 인식하고, 메모리(130)에 저장된 제어 프로그램들 중 일부인, 논리 허브 프로그램(141), 주제어 프로그램(142), 및 운영체제 프로그램(143)을 실행한다. 설명의 편의상, 에뮬레이터(100)에 외부 전원(EPWR)이 공급되어, CPU(140)에서 논리 허브 프로그램(141), 주제어 프로그램(142), 및 운영체제 프로그램(143)이 실행되고 있는 것으로 가정하여, 에뮬레이터(200)의 동작 과정을 설명하기로 한다.
먼저, 도 3을 참고하면, 에뮬레이터(100)가 업무 프로그램(241)이 설치된 PC(200)에 접속된다(단계 1001). 에뮬레이터(100)는 USB 포트(103)를 통하여 접속된 외부의 USB 허브(400)에 USB 장치(U1∼UK 중 하나)가 접속되는지의 여부를 판단한다(단계 1002). 에뮬레이터(100)는 USB 허브(400)에 USB 장치(U1∼UK 중 하나)가 접속될 때, USB 허브(400)에 접속된 USB 장치(U1∼UK 중 하나)를 인식한다(단계 1003). 에뮬레이터(100)는 PC(200)에 USB 장치(U1∼UK 중 하나)의 접속 상태를 통보한다(단계 1004).
이 후, 에뮬레이터(100)는 USB 허브(400)에 추가의 USB 장치(U1∼UK 중 다른 하나)가 접속되는지의 여부를 판단한다(단계 1005). USB 허브(400)에 추가의 USB 장치(U1∼UK 중 다른 하나)가 접속될 경우, 에뮬레이터(100)는 상기 단계 1003 내지 단계 1005의 동작을 반복한다. USB 허브(400)에 추가의 USB 장치(U1∼UK 중 다른 하나)가 접속되지 않을 때, 에뮬레이터(100)는 USB 포트(101)를 통하여 PC(200)로부터 USB 장치(U1∼UK 중 하나)에 대한 동작 요청 신호(RQS1∼RQSK 중 하나)를 수신한다(단계 1006).
에뮬레이터(100)는 외부의 통신망(300)을 통하여 재현 명령(RPCMD)을 수신하였는지의 여부를 판단한다(단계 1007). 재현 명령(RPCMD)을 수신한 경우, 에뮬레이터(100)는 테스트용 입력 정보(TSF1∼TSFK 중 하나)를 PC(200)에 출력함으로써, USB 장치(U1∼UK 중 하나)의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작을 실행한다(단계 1008). 에뮬레이터(100)는 가상의 USB 허브 기능을 포함하므로, 복수의 USB 장치의 동작을 대행할 수 있다. 따라서, PC(200)에는 하나의 에뮬레이터(100)만 접속되어도, 업무 프로그램(241)의 자동 테스트가 가능해진다. 만약, 에뮬레이터(100)가 가상의 USB 허브 기능을 포함하지 않는다면, 복수의 USB 장치의 동작을 각각 대행하는 복수의 에뮬레이터가 PC(200)에 접속되어야 하고, 이 경우, 복수의 에뮬레이터의 제작에 따른 비용이 발생된다.
재현 명령(RPCMD)을 수신하지 않은 경우, 에뮬레이터(100)는 동작 제어 신 호(CTL1∼CTLK 중 하나)를 USB 장치(U1∼UK 중 하나)에 출력하고, USB 장치(U1∼UK 중 하나)의 동작에 따른 입력 정보(FIF1∼FIFK 중 하나, 또는 SIF1∼SIFK 중 하나)를 PC(200)에 출력함으로써, PC(200)와 USB 장치(U1∼UK 중 하나) 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행한다(단계 1009).
에뮬레이터(100)는 USB 포트(101)를 통하여 PC(200)로부터 추가의 동작 요청 신호(RQS1∼RQSK 중 다른 하나)가 수신되는지의 여부를 판단한다(단계 1010). 추가의 동작 요청 신호(RQS1∼RQSK 중 다른 하나)가 수신될 때, 에뮬레이터(100)는 상기 단계 1007 내지 단계 1010의 동작을 반복한다. 추가의 동작 요청 신호(RQS1∼RQSK 중 다른 하나)가 수신되지 않을 때, 에뮬레이터(100)는 동작을 정지한다.
도 4는 도 3에 도시된 PC에 접속하는 과정을 좀 더 상세히 나타낸 흐름도이다.
먼저, 에뮬레이터(100)의 USB 포트(101)가 PC(200)의 USB 포트(201)에 연결된다(단계 1101). 이때, 호스트 컨트롤러(210)는 PC(200)에 어떤 장치가 접속되었는지를 인식하기 위해, 제1 요청 신호(FRQS1)를 슬레이브 컨트롤러(110)에 전송한다. 슬레이브 컨트롤러(110)가 설정된 통신 프로토콜(protocol) 형식의 통신 신호인, 제1 요청 신호(FRQS1)를 논리 데이터 형식의 제1 요청 데이터(FRQD1)로 변환하여 CPU(140)에 출력한다. 그 결과, CPU(140)가 제1 요청 데이터(FRQD1)를 수신한다(단계 1102).
CPU(140)에서 실행되는 논리 허브 프로그램(141)은 제1 요청 데이터(FRQD1)에 대한 응답으로서, 논리 허브 프로그램(141)에 의해 구현되는 가상의 USB 허브에 대한 장치 정보 데이터(HDVF)를 생성한다(단계 1103).
CPU(140)는 슬레이브 컨트롤러(110)를 통하여 장치 정보 데이터(HDVF)를 호스트 컨트롤러(210)에 전송한다(단계 1104). 이를 좀 더 상세히 설명하면, 슬레이브 컨트롤러(110)가 논리 데이터 형식의 장치 정보 데이터(HDVF)를 설정된 통신 프로토콜 형식의 통신 신호인, 장치 정보 신호(HDVFS)로 변환하여 호스트 컨트롤러(210)에 전송한다. 상술한 것과 같이, 슬레이브 컨트롤러(110)는 호스트 컨트롤러(210)로부터 수신되는 설정된 통신 프로토콜 형식의 모든 통신 신호를 논리 데이터 형식의 데이터로 변환하여 CPU(140)에 출력한다. 또, 슬레이브 컨트롤러(110)는 CPU(140)로부터 수신되는 논리 데이터 형식의 모든 데이터를 설정된 통신 프로토콜 형식의 통신 신호로 변환하여 호스트 컨트롤러(210)에 전송한다.
호스트 컨트롤러(210)는 장치 정보 신호(HDVFS)를 수신하고, 논리 허브 프로그램(141)에 의해 구현되는 가상의 USB 허브에 허브 주소(HBAD)를 할당하고, 허브 주소(HBAD)를 슬레이브 컨트롤러(110)에 전송한다. 그 결과, CPU(140)가 슬레이브 컨트롤러(110)를 통하여 허브 주소(HBAD)를 수신한다(단계 1105). 허브 주소(HBAD)는 CPU(140)에서 실행되는 논리 허브 프로그램(141)에 전달된다.
논리 허브 프로그램(141)은 허브 주소(HBAD)를 기록한다(단계 1106). 이 후, 논리 허브 프로그램(141)은 슬레이브 컨트롤러(110)로부터 수신되는 데이터들 중에서 허브 주소(HBAD)를 포함하지 않는 데이터들만을 주제어 프로그램(142)에 전달한다.
이 후, 호스트 컨트롤러(210)는 제2 요청 신호(FRQS2)를 슬레이브 컨트롤 러(110)에 전송한다. 슬레이브 컨트롤러(110)는 제2 요청 신호(FRQS2)를 논리 데이터 형식의 제2 요청 데이터(FRQD2)로 변환하여 CPU(140)에 출력한다. 그 결과, CPU(140)가 제2 요청 데이터(FRQD2)를 수신한다(단계 1107).
논리 허브 프로그램(141)은 제2 요청 데이터(FRQD2)에 대한 응답으로서, 논리 허브 프로그램(141)에 의해 구현되는 가상의 USB 허브에 대한 상세 정보 데이터(HDSF)를 생성한다(단계 1108). CPU(140)는 슬레이브 컨트롤러(110)를 통하여 상세 정보 데이터(HDSF)를 호스트 컨트롤러(210)에 전송한다(단계 1109).
호스트 컨트롤러(210)는 장치 정보 데이터(HDVF)와 상세 정보 데이터(HDSF)에 기초하여, 에뮬레이터(100)를 상기 가상의 USB 허브로 인식한다. 호스트 컨트롤러(210)는 허브 주소(HBAD)와 함께 장치 정보 데이터(HDVF)와 상세 정보 데이터(HDSF)를 저장한다.
호스트 컨트롤러(210)는 제3 요청 신호(FRQS3)를 슬레이브 컨트롤러(110)에 전송한다. 슬레이브 컨트롤러(110)는 제3 요청 신호(FRQS3)를 논리 데이터 형식의 제3 요청 데이터(FRQD3)로 변환하여 CPU(140)에 출력한다. 그 결과, CPU(140)가 제3 요청 데이터(FRQD3)를 수신한다(단계 1110).
논리 허브 프로그램(141)은 제3 요청 데이터(FRQD3)에 대한 응답으로서, 논리 허브 프로그램(141)에 의해 구현되는 가상의 USB 허브에 대한 허브 정보 데이터(HDHF)를 생성한다(단계 1111). CPU(140)는 슬레이브 컨트롤러(110)를 통하여 허브 정보 데이터(HDHF)를 호스트 컨트롤러(210)에 전송한다(단계 1112). 여기에서, 허브 정보 데이터(HDHF)는 상기 가상의 USB 허브의 포트 개수와 전원 공급 방식에 대한 정보를 포함한다.
호스트 컨트롤러(210)는 허브 정보 데이터(HDHF)에 기초하여, 상기 가상의 USB 허브의 포트 개수를 인식하고, 허브 포트 초기화 명령(ICMD)을 슬레이브 컨트롤러(110)에 전송한다. 그 결과, CPU(140)가 슬레이브 컨트롤러(110)를 통하여 허브 포트 초기화 명령(ICMD)을 수신한다(단계 1113).
논리 허브 프로그램(141)은 허브 포트 초기화 명령(ICMD)에 대한 응답으로서, 초기화 완료 데이터(IEND)를 생성한다(단계 1114). CPU(140)는 슬레이브 컨트롤러(110)를 통하여 초기화 완료 데이터(IEND)를 호스트 컨트롤러(210)에 전송한다(단계 1115).
도 5는 도 3에 도시된 USB 장치를 인식하는 과정을 좀 더 상세히 나타낸 흐름도이다.
호스트 컨트롤러(150)는 USB 허브(400)에 어떤 USB 장치가 접속되었는지를 인식하기 위해, 제1 정보 요청 신호(DREQS1)를 USB 허브(400)에 접속된 USB 장치(U1∼UK 중 하나)에 전송한다(단계 1201). 호스트 컨트롤러(150)는 USB 장치(U1∼UK 중 하나)로부터 장치 정보(DVF1∼DVFK 중 하나)를 수신한다(단계 1202). 호스트 컨트롤러(150)는 USB 장치(U1∼UK 중 하나)에 대한 주소(AD1∼ADK 중 하나)를 할당한다(단계 1203). 호스트 컨트롤러(150)는 주소(AD1∼ADK 중 하나)를 USB 장치(U1∼UK 중 하나)에 전송한다(단계 1204).
이 후, 호스트 컨트롤러(150)는 제2 정보 요청 신호(DREQS2)를 USB 허브(400)에 접속된 USB 장치(U1∼UK 중 하나)에 전송한다(단계 1205). 호스트 컨트 롤러(150)는 USB 장치(U1∼UK 중 하나)로부터 상세 정보(DSF1∼DSFK 중 하나)를 수신한다(단계 1206). 호스트 컨트롤러(150)는 주소(AD1∼ADK 중 하나), 장치 정보(DVF1∼DVFK 중 하나), 및 상세 정보(DSF1∼DSFK 중 하나)를 저장한다(단계 1207).
호스트 컨트롤러(150)는 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)를 CPU(140)에 출력한다(단계 1208). CPU(140)에서 실행되는 운영체제 프로그램(143)은 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)에 기초하여, USB 허브(400)에 접속된 USB 장치(U1∼UK 중 하나)를 인식한다. 또, 운영체제 프로그램(143)은 USB 장치(U1∼UK 중 하나)에 대응하는 가상 드라이버 프로그램(VD1∼VDK 중 하나)을 메모리(130)에서 검색한다(단계 1209).
운영체제 프로그램(143)은 상기 단계 1209에서의 검색 결과에 따라, USB 장치(U1∼UK 중 하나)에 대응하는 가상 드라이버 프로그램(VD1∼VDK 중 하나)이 존재하는지의 여부를 판단한다(단계 1210). USB 장치(U1∼UK 중 하나)에 대응하는 가상 드라이버 프로그램(VD1∼VDK 중 하나)이 존재할 때, 운영체제 프로그램(143)은 검색된 가상 드라이버 프로그램(VD1∼VDK 중 하나)을 실행시킨다(단계 1211). USB 장치(U1∼UK 중 하나)에 대응하는 가상 드라이버 프로그램(VD1∼VDK 중 하나)이 존재하지 않을 때, 에뮬레이터(100)는 USB 장치의 인식 동작을 종료한다.
도 6은 도 3에 도시된 USB 장치의 접속 상태를 통보하는 과정을 좀 더 상세히 나타낸 흐름도이다.
CPU(140)에서 실행되는 주제어 프로그램(142)은 가상 드라이버 프로그램(VD1 ∼VDK 중 하나)의 실행이 완료되었는지의 여부를 판단한다(단계 1301). 주제어 프로그램(142)은 가상 드라이버 프로그램(VD1∼VDK 중 하나)으로부터 해당 USB 장치(U1∼UK 중 하나)에 대한 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)를 수신하면, 가상 드라이버 프로그램(VD1∼VDK 중 하나)의 실행이 완료된 것으로 판단한다. 여기에서, 가상 드라이버 프로그램들(VD1∼VDK) 각각은 자신에 대응하는 USB 장치에 대한 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)를 보유한다.
가상 드라이버 프로그램(VD1∼VDK 중 하나)의 실행이 완료될 때, 주제어 프로그램(142)은 접속 통보 데이터(CNDAT)를 생성한다(단계 1302). 주제어 프로그램(142)은 접속 통보 데이터(CNDAT)를 논리 허브 프로그램(141)에 전달한다.
논리 허브 프로그램(141)은 주제어 프로그램(142)으로부터 수신되는 접속 통보 데이터(CNDAT)를 슬레이브 컨트롤러(110)를 통하여 PC(200)의 호스트 컨트롤러(210)에 전송한다(단계 1303).
호스트 컨트롤러(210)는 가상의 USB 허브(즉, 에뮬레이터(100))에 어떤 장치가 접속되었는지를 인식하기 위해, 제1 장치 정보 요청 신호(DFRQS1)를 슬레이브 컨트롤러(110)에 전송한다. 슬레이브 컨트롤러(110)는 제1 장치 정보 요청 신호(DFRQS1)를 논리 데이터 형식의 제1 장치 정보 요청 데이터(DFRQD1)로 변환하여 CPU(140)에 출력한다. 그 결과, CPU(140)에서 실행되는 논리 허브 프로그램(141)이 제1 장치 정보 요청 데이터(DFRQD1)를 수신한다(단계 1304).
제1 장치 정보 요청 데이터(DFRQD1)에는 허브 주소(HBAD)가 포함되어 있지 않으므로, 논리 허브 프로그램(141)은 제1 장치 정보 요청 데이터(DFRQD1)가 자신에게 수신된 데이터가 아닌 것으로 판단하고, 제1 장치 정보 요청 데이터(DFRQD1)를 그대로 주제어 프로그램(142)에 전달한다. 주제어 프로그램(142)은 논리 허브 프로그램(141)을 통하여 수신되는 제1 장치 정보 요청 데이터(DFRQD1)에 응답하여, 가상 드라이버 프로그램(VD1∼VDK 중 하나)으로부터 수신한 장치 정보(DVF1∼DVFK 중 하나)를 논리 허브 프로그램(141)에 전달한다(단계 1305).
논리 허브 프로그램(141)은 슬레이브 컨트롤러(110)를 통하여 장치 정보(DVF1∼DVFK 중 하나)를 PC(200)의 호스트 컨트롤러(210)에 전송한다(단계 1306). 호스트 컨트롤러(210)는 장치 정보(DVF1∼DVFK 중 하나)를 수신하고, 해당 USB 장치(U1∼UK 중 하나)에 주소(ADD1∼ADDK 중 하나)를 할당한다. 호스트 컨트롤러(210)는 주소(ADD1∼ADDK 중 하나)를 슬레이브 컨트롤러(110)에 전송한다.
그 결과, 논리 허브 프로그램(141)이 슬레이브 컨트롤러(110)를 통하여 USB 장치(U1∼UK 중 하나)에 대한 주소(ADD1∼ADDK 중 하나)를 수신한다(단계 1307). 논리 허브 프로그램(141)은 주소(ADD1∼ADDK 중 하나)를 주제어 프로그램(142)에 전달한다. 주제어 프로그램(142)은 주소(ADD1∼ADDK 중 하나)를, 가상 드라이버 프로그램(VD1∼VDK 중 하나)으로부터 수신한 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)와 함께 기록한다(단계 1308). 이 후, 주제어 프로그램(142)은 논리 허브 프로그램(141)을 통하여 PC(200)로부터 특정 데이터를 수신할 때, 그 데이터에 포함된 주소(ADD1∼ADDK 중 하나)를 확인함으로써, 수신된 데이터가 어떤 USB 장치를 제어하기 위한 데이터인지를 식별한다.
이 후, 호스트 컨트롤러(210)는 제2 장치 정보 요청 신호(DFRQS2)를 슬레이브 컨트롤러(110)에 전송한다. 슬레이브 컨트롤러(110)는 제2 장치 정보 요청 신호(DFRQS2)를 논리 데이터 형식의 제2 장치 정보 요청 데이터(DFRQD2)로 변환하여 CPU(140)에 출력한다. 그 결과, CPU(140)에서 실행되는 논리 허브 프로그램(141)이 제2 장치 정보 요청 데이터(DFRQD2)를 수신한다(단계 1309).
주제어 프로그램(142)은 논리 허브 프로그램(141)을 통하여 수신되는 제2 장치 정보 요청 데이터(DFRQD2)에 응답하여, 상세 정보(DSF1∼DSFK 중 하나)를 논리 허브 프로그램(141)에 전달한다(단계 1310). 논리 허브 프로그램(141)은 슬레이브 컨트롤러(110)를 통하여 상세 정보(DSF1∼DSFK 중 하나)를 PC(200)의 호스트 컨트롤러(210)에 전송한다(단계 1311).
그 결과, 호스트 컨트롤러(210)가 상세 정보(DSF1∼DSFK 중 하나)를 수신하고, 주소(ADD1∼ADDK 중 하나), 장치 정보(DVF1∼DVFK 중 하나), 및 상세 정보(DSF1∼DSFK 중 하나)를 저장한다. 또, 호스트 컨트롤러(210)는 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)를 CPU(240)에서 실행되는 운영체제 프로그램(243)에 전달한다. 운영체제 프로그램(243)은 장치 정보(DVF1∼DVFK 중 하나) 및 상세 정보(DSF1∼DSFK 중 하나)에 기초하여, 해당 USB 장치(U1∼UK 중 하나)를 인식한다. 운영체제 프로그램(243)은 USB 장치(U1∼UK 중 하나)에 대응하는 드라이버 프로그램(D1∼DK 중 하나)을 메모리(230)로부터 검색하여 실행시킨다.
한편, 상술한 단계 1006에서, 에뮬레이터(100)가 PC(200)로부터 수신한 동작 요청 신호(RQS1∼RQSK 중 하나)는, CPU(240)에서 실행되는 드라이버 프로그램(D1∼ DK 중 하나)과, 호스트 컨트롤러(210)에 의해 생성될 수 있다. 이를 좀 더 상세히 설명하면, CPU(240)에서 실행되는 업무 프로그램(241)이 USB 장치(U1∼UK 중 하나)의 동작과 관련한 업무를 처리할 때, 해당 USB 장치(U1∼UK 중 하나)에 대한 동작을 드라이버 프로그램(D1∼DK 중 하나)에 요청할 수 있다. 이때, 드라이버 프로그램(D1∼DK 중 하나)은 업무 프로그램(241)의 요청에 따라 해당 USB 장치(U1∼UK 중 하나)에 대한 USB 장치 제어 데이터(UCTD1∼UCTDK 중 하나)를 생성하여 호스트 컨트롤러(210)에 전달한다. 호스트 컨트롤러(210)는 USB 장치 제어 데이터(UCTD1∼UCTDK 중 하나)에, 해당 USB 장치(U1∼UK 중 하나)에 대한 주소(ADD1∼ADDK 중 하나)를 포함시켜 동작 요청 신호(RQS1∼RQSK 중 하나)를 생성하고, 동작 요청 신호(RQS1∼RQSK 중 하나)를 슬레이브 컨트롤러(110)에 전송한다.
도 7은 도 3에 도시된 제1 가상의 USB 허브 동작을 실행하는 과정을 좀 더 상세히 나타낸 흐름도이다.
먼저, 슬레이브 컨트롤러(110)가 호스트 컨트롤러(210)로부터 수신한 동작 요청 신호(RQS1∼RQSK 중 하나)를 논리 데이터 형식의 동작 요청 데이터(RQD1∼RQDK 중 하나)로 변환한다(단계 1401). 슬레이브 컨트롤러(110)는 동작 요청 데이터(RQD1∼RQDK 중 하나)를 논리 허브 프로그램(141)에 전달한다. 논리 허브 프로그램(141)은 동작 요청 데이터(RQD1∼RQDK 중 하나)를 주제어 프로그램(142)에 전달한다(단계 1402).
주제어 프로그램(142)은 동작 요청 데이터(RQD1∼RQDK 중 하나)에 포함된 주소(ADD1∼ADDK 중 하나)를 이용하여, 상기 단계 1308에서 미리 기록된 장치 정보 들(DVF1∼DVFK)에서, 해당 USB 장치(U1∼UK 중 하나)에 대한 장치 정보(DVF1∼DVFK 중 하나)를 검색한다(단계 1403). 주제어 프로그램(142)은 해당 USB 장치(U1∼UK 중 하나)에 대한 장치 정보(DVF1∼DVFK 중 하나)에 기초하여, 해당 USB 장치의 이름을 확인한다(단계 1404).
주제어 프로그램(142)은 USB 장치의 이름을 이용하여, 네트워크 인터페이스 장치(120)를 통하여, PC(200)의 CPU(240)에서 실행되는 자동 테스트 프로그램(242)에, 해당 USB 장치(U1∼UK 중 하나)에 대한 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 요청한다(단계 1405). 즉, 주제어 프로그램(142)은 USB 장치의 이름을 포함하는 데이터 요청 신호(DTREQ)를 자동 테스트 프로그램(242)에 전송하여, 해당 USB 장치(U1∼UK 중 하나)에 대한 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 요청한다.
선택적으로, 자동 테스트 프로그램(242)이 PC(200)에 설치되지 않고, 통신망(300)에 접속된 외부의 제어 장치(미도시)에 설치된 경우, 주제어 프로그램(142)은 네트워크 인터페이스 장치(120)를 통하여, 외부의 제어 장치에서 실행되는 자동 테스트 프로그램(242)에, 해당 USB 장치(U1∼UK 중 하나)에 대한 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 요청할 수 있다.
자동 테스트 프로그램(242)은 데이터 요청 신호(DTREQ)에 응답하여, 네트워크 인터페이스 장치(220)를 통하여 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 네트워크 인터페이스 장치(120)에 전송한다.
주제어 프로그램(142)은 네트워크 인터페이스 장치(120)를 통하여 수신되는 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)에, 주소(ADD1∼ADDK 중 하나)를 포함시켜, 테스트용 입력 정보(TSF1∼TSFK 중 하나)를 생성한다(단계 1406). 주제어 프로그램(142)은 테스트용 입력 정보(TSF1∼TSFK 중 하나)를 논리 허브 프로그램(141)에 전달한다(단계 1407).
논리 허브 프로그램(141)은 테스트용 입력 정보(TSF1∼TSFK 중 하나)를 슬레이브 컨트롤러(110)를 통하여 PC(200)의 호스트 컨트롤러(210)에 전송한다(단계 1408). 호스트 컨트롤러(210)는 테스트용 입력 정보(TSF1∼TSFK 중 하나)를 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)로 변환하여, 해당 드라이버 프로그램(D1∼DK 중 하나)에 전달한다. 드라이버 프로그램(D1∼DK 중 하나)은 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 업무 프로그램(241)에 전달한다. 결과적으로, 자동 테스트 프로그램(242)이 미리 기록한 이벤트들을 업무 프로그램(241)에서 재현하여 업무 프로그램(241)을 테스트하는 동안, 테스트용 입력 정보(TSF1∼TSFK 중 하나)가, 업무 프로그램(241)에 적용된다.
도 8은 도 3에 도시된 제2 가상의 USB 허브 동작을 실행하는 과정을 좀 더 상세히 나타낸 흐름도이다.
슬레이브 컨트롤러(110)가 호스트 컨트롤러(210)로부터 수신한 동작 요청 신호(RQS1∼RQSK 중 하나)를 논리 데이터 형식의 동작 요청 데이터(RQD1∼RQDK 중 하나)로 변환한다(단계 1501). 슬레이브 컨트롤러(110)는 동작 요청 데이터(RQD1∼RQDK 중 하나)를 논리 허브 프로그램(141)에 전달한다. 논리 허브 프로그램(141)은 동작 요청 데이터(RQD1∼RQDK 중 하나)를 주제어 프로그램(142)에 전달한다(단계 1502).
주제어 프로그램(142)은 동작 요청 데이터(RQD1∼RQDK 중 하나)에 포함된 주소(ADD1∼ADDK 중 하나)를 이용하여, 동작 요청 데이터(RQD1∼RQDK 중 하나)가 어떤 USB 장치(U1∼UK 중 하나)와 관련된 데이터인지를 식별한다. 주제어 프로그램(142)은 해당 USB 장치(U1∼UK 중 하나)에 대응하는 가상 드라이버 프로그램(VD1∼VDK 중 하나)에 동작 요청 데이터(RQD1∼RQDK 중 하나)를 전달한다(단계 1503).
가상 드라이버 프로그램(VD1∼VDK 중 하나)은 동작 요청 데이터(RQD1∼RQDK 중 하나)에 기초하여, 해당 USB 장치(U1∼UK 중 하나)에 대한 동작 제어 데이터(UCD1∼UCDK)를 생성한다(단계 1504). 호스트 컨트롤러(150)는 가상 드라이버 프로그램(VD1∼VDK 중 하나)으로부터 수신한 동작 제어 데이터(UCD1∼UCDK)에 해당 USB 장치(U1∼UK 중 하나)에 대한 주소(AD1∼ADK 중 하나)를 포함시켜 동작 제어 신호(CTL1∼CTLK 중 하나)를 생성한다(단계 1505).
호스트 컨트롤러(150)는 USB 허브(400)를 통하여 동작 제어 신호(CTL1∼CTLK 중 하나)를 해당 USB 장치(U1∼UK 중 하나)에 전송한다(단계 1506). 이 후, 사용자가 해당 USB 장치(U1∼UK 중 하나)를 조작하여 동작시키면, 해당 USB 장치(U1∼UK 중 하나)가 동작에 따른 입력 신호(INSG1∼INSGK 중 하나)를 호스트 컨트롤러(150)에 전송한다. 호스트 컨트롤러(150)는 입력 신호(INSG1∼INSGK 중 하나)를 입력 데이터(IDAT1∼IDATK 중 하나)로 변환하여 CPU(140)에 출력한다. 그 결과, 가상 드라이버 프로그램(VD1∼VDK 중 하나)이 해당 USB 장치(U1∼UK 중 하나)의 동작에 따른 입력 데이터(IDAT1∼IDATK 중 하나)를 수신한다(단계 1507).
가상 드라이버 프로그램(VD1∼VDK 중 하나)은 입력 데이터(IDAT1∼IDATK 중 하나)를 주제어 프로그램(142)에 전달한다(단계 1508). 주제어 프로그램(142)은 입력 데이터(IDAT1∼IDATK 중 하나)에 주소(ADD1∼ADDK 중 하나)를 포함시켜 입력 정보(FIF1∼FIFK 중 하나)(즉, 제1 입력 정보)를 생성한다(단계 1509). 주제어 프로그램(142)은 입력 정보(FIF1∼FIFK 중 하나)(즉, 제1 입력 정보)를 논리 허브 프로그램(141)에 전달한다(단계 1510). 논리 허브 프로그램(141)은 슬레이브 컨트롤러(110)를 통하여 입력 정보(FIF1∼FIFK 중 하나)(즉, 제1 입력 정보)를 PC(200)의 호스트 컨트롤러(210)에 전송한다(단계 1511).
그 결과, 호스트 컨트롤러(210)가 입력 정보(FIF1∼FIFK 중 하나)(즉, 제1 입력 정보)를 입력 데이터(IDAT1∼IDATK 중 하나)로 변환하여, 해당 드라이버 프로그램(D1∼DK 중 하나)에 전달한다. 드라이버 프로그램(D1∼DK 중 하나)은 입력 데이터(IDAT1∼IDATK 중 하나)를 업무 프로그램(241)에 전달한다. 결과적으로, 업무 프로그램(241)이 실행되는 동안, 입력 정보(FIF1∼FIFK 중 하나)(즉, 제1 입력 정보)가 업무 프로그램(241)에 적용된다.
이 후, 주제어 프로그램(142)은 네트워크 인터페이스 장치(120)를 통하여, 자동 테스트 프로그램(242)으로부터 기록 명령(RCCMD)을 수신하였는지의 여부를 판단한다(단계 1512). 자동 테스트 프로그램(242)으로부터 기록 명령(RCCMD)을 수신하지 않은 경우, 에뮬레이터(100)는 단계 1009의 동작을 종료한다.
또, 자동 테스트 프로그램(242)으로부터 기록 명령(RCCMD)을 수신한 경우, 주제어 프로그램(142)은 입력 데이터(IDAT1∼IDATK 중 하나)에 해당 USB 장치의 이 름을 포함시켜, 입력 정보(SIF1∼SIFK 중 하나)(즉, 제2 입력 정보)를 생성한다(단계 1513). 주제어 프로그램(142)은 입력 정보(SIF1∼SIFK 중 하나)(즉, 제2 입력 정보)를 네트워크 인터페이스 장치(120)를 통하여 PC(200)의 CPU(240)에서 실행되는 자동 테스트 프로그램(242)에 전송한다(단계 1514). 그 결과, 업무 프로그램(241)이 실행될 때 발생하는 이벤트들을 기록하는 과정 동안, 자동 테스트 프로그램(242)이 에뮬레이터(100)로부터 수신한 입력 정보(SIF1∼SIFK 중 하나)(즉, 제2 입력 정보)를 상기 이벤트들 중 하나로서 기록한다. 이 후, 자동 테스트 프로그램(242)은 기록한 입력 정보(SIF1∼SIFK 중 하나)(즉, 제2 입력 정보)에 기초하여, 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)를 생성할 수 있다. 사용자에 의해 입력 정보(SIF1∼SIFK 중 하나)(즉, 제2 입력 정보)의 내용이 편집되거나, 또는 새로운 입력 정보가 입력될 경우, 자동 테스트 프로그램(242)은 그 편집된 입력 정보 또는 새로운 입력 정보를 테스트용 입력 데이터(TSFD1∼TSFDK 중 하나)로서 출력할 수도 있다.
상기한 실시 예들은 본 발명을 설명하기 위한 것으로서 본 발명이 이들 실시 예에 국한되는 것은 아니며, 본 발명의 범위 내에서 다양한 실시예가 가능하다. 또한, 설명되지는 않았으나, 균등한 수단도 또한 본 발명에 그대로 결합되는 것이라 할 것이다. 따라서 본 발명의 진정한 보호범위는 아래의 특허청구범위에 의하여 정해져야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 에뮬레이터의 개략적인 구성과, 에뮬레이터에 연결된 PC, USB 허브 및 USB 장치들을 나타내는 도면이다.
도 2는 도 1에 도시된 에뮬레이터 및 PC의 동작을 설명하기 위한 상세한 도면이다.
도 3은 도 1에 도시된 에뮬레이터의 동작 과정을 나타내는 흐름도이다.
도 4는 도 3에 도시된 PC에 접속하는 과정을 좀 더 상세히 나타낸 흐름도이다.
도 5는 도 3에 도시된 USB 장치를 인식하는 과정을 좀 더 상세히 나타낸 흐름도이다.
도 6은 도 3에 도시된 USB 장치의 접속 상태를 통보하는 과정을 좀 더 상세히 나타낸 흐름도이다.
도 7은 도 3에 도시된 제1 가상의 USB 허브 동작을 실행하는 과정을 좀 더 상세히 나타낸 흐름도이다.
도 8은 도 3에 도시된 제2 가상의 USB 허브 동작을 실행하는 과정을 좀 더 상세히 나타낸 흐름도이다.
〈도면의 주요 부분에 대한 부호의 설명〉
100: 에뮬레이터 101, 103: USB 포트
102: 통신 포트 110: 슬레이브 컨트롤러
120, 220: 네트워크 인터페이스 장치 130, 230: 메모리
140, 240: CPU 150, 210: 호스트 컨트롤러
160: 전원 공급부 170: 입력 장치
200: PC 250: 주변 장치부
300: 통신망 400: USB 허브
U1∼UK: USB 장치

Claims (20)

  1. 제1 USB(universal serial bus) 포트(port)를 통하여, 업무 프로그램이 설치된 PC(personal computer)에 접속되는 슬레이브 컨트롤러;
    통신 포트를 통하여, 외부의 통신망에 접속되는 네트워크 인터페이스 장치;
    제2 USB 포트를 통하여, 외부의 USB 허브(hub)에 접속되고, 상기 USB 허브에 접속한 적어도 하나의 USB 장치에 주소를 할당하고, 상기 적어도 하나의 USB 장치로부터 장치 정보 및 상세 정보를 수신하는 호스트 컨트롤러;
    상기 적어도 하나의 USB 장치의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작, 또는 상기 PC와 상기 적어도 하나의 USB 장치 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행하기 위한 제어 프로그램들을 저장하는 메모리; 및
    상기 제어 프로그램들 중 일부를 실행시키고, 상기 호스트 컨트롤러로부터 수신되는 상기 장치 정보 및 상기 상세 정보에 기초하여 상기 적어도 하나의 USB 장치를 인식하는 CPU(central processor unit)를 포함하고,
    상기 CPU는 상기 슬레이브 컨트롤러를 통하여 상기 장치 정보 및 상기 상세 정보를 상기 PC에 전송함으로써 상기 적어도 하나의 USB 장치의 접속 상태를 상기 PC에 통보하고, 상기 슬레이브 컨트롤러를 통하여 상기 PC로부터 상기 적어도 하나의 USB 장치에 대한 동작 요청 데이터를 수신할 때, 상기 네트워크 인터페이스 장치로부터 재현 명령을 수신하였는지의 여부에 따라, 상기 제1 또는 제2 가상의 USB 허브 동작을 선택적으로 실행하고,
    상기 CPU가 상기 제1 가상의 USB 허브 동작을 실행하는 동안 상기 적어도 하나의 USB 장치는 동작을 정지하고, 상기 PC는 상기 CPU의 상기 제1 가상의 USB 허브 동작에 의해 상기 적어도 하나의 USB 장치가 동작하는 것으로 인식하고,
    상기 업무 프로그램이 상기 PC에서 실행될 때, 상기 업무 프로그램에 의해 처리되는 업무들 중 일부는 상기 적어도 하나의 USB 장치의 동작과 관련한 업무를 포함하는 에뮬레이터.
  2. 제1항에 있어서,
    상기 PC에는, 상기 업무 프로그램이 실행되는 동안 발생하는 이벤트들을 기록하고, 기록한 상기 이벤트들을 상기 업무 프로그램에서 재현함으로써 상기 업무 프로그램을 자동으로 실행시켜 테스트하는 자동 테스트 프로그램이 더 설치되고,
    상기 PC에서 상기 자동 테스트 프로그램에 의해 상기 이벤트들이 상기 업무 프로그램에서 재현될 때, 상기 PC는 상기 재현 명령을 출력하고,
    상기 네트워크 인터페이스 장치는 상기 통신망을 통하여 접속한 상기 PC로부터 상기 재현 명령을 수신하여 상기 CPU에 출력하는 에뮬레이터.
  3. 제2항에 있어서,
    상기 CPU는, 상기 재현 명령을 수신한 후 상기 동작 요청 데이터를 수신할 때, 상기 네트워크 인터페이스 장치를 통하여 상기 PC에 상기 적어도 하나의 USB 장치에 대한 테스트용 입력 데이터를 요청하여 수신하고, 상기 테스트용 입력 데이터에 기초하여 상기 테스트용 입력 정보를 생성하여 상기 슬레이브 컨트롤러를 통하여 상기 PC에 전송함으로써, 상기 제1 가상의 USB 허브 동작을 실행하고,
    상기 테스트용 입력 데이터는 상기 자동 테스트 프로그램에 의해 생성되고,
    상기 PC가 상기 슬레이브 컨트롤러로부터 수신한 상기 테스트용 입력 정보는, 상기 이벤트들이 상기 업무 프로그램에서 재현되는 동안 상기 업무 프로그램에 적용되는 에뮬레이터.
  4. 제2항에 있어서,
    상기 PC에서 상기 자동 테스트 프로그램에 의해 상기 이벤트들이 기록될 때, 상기 PC는 기록 명령을 더 출력하고,
    상기 네트워크 인터페이스 장치는 상기 통신망을 통하여 상기 PC로부터 상기 기록 명령을 수신하여 상기 CPU에 출력하고,
    상기 CPU는 상기 기록 명령을 수신한 후 상기 동작 요청 데이터를 수신할 때, 상기 호스트 컨트롤러를 통하여 상기 적어도 하나의 USB 장치의 동작에 따른 입력 데이터를 수신하고, 상기 입력 데이터에 기초하여 생성한 제1 및 제2 입력 정보를 상기 슬레이브 컨트롤러 및 상기 네트워크 인터페이스 장치를 통하여 각각 상기 PC에 전송하고, 상기 동작 요청 데이터만을 수신할 때, 상기 제1 입력 정보를 상기 슬레이브 컨트롤러를 통하여 상기 PC에 전송함으로써, 상기 제2 가상의 USB 허브 동작을 실행하고,
    상기 PC가 상기 네트워크 인터페이스 장치를 통하여 상기 CPU로부터 수신한 상기 제2 입력 정보는 상기 자동 테스트 프로그램에 의해 상기 이벤트들 중 하나로서 기록되고,
    상기 PC가 상기 슬레이브 컨트롤러로부터 수신한 상기 제1 입력 정보는 상기 업무 프로그램이 실행되는 동안 상기 업무 프로그램에 적용되는 에뮬레이터.
  5. 제1항에 있어서,
    상기 장치 정보는, 상기 적어도 하나의 USB 장치의 이름, 상기 적어도 하나의 USB 장치의 USB 스펙 버전(spec version) 정보, 및 상기 적어도 하나의 USB 장치에 전송되는 통신 패킷(packet)의 최대 길이 정보를 포함하고,
    상기 상세 정보는, 상기 적어도 하나의 USB 장치에 대한, 제조회사 ID(identification), 제품번호, 펌웨어(firm ware) 버전 정보, 및 제조회사 이름을 포함하고,
    상기 호스트 컨트롤러는, 상기 적어도 하나의 USB 장치에 할당한 주소와 함께 상기 장치 정보 및 상기 상세 정보를 저장하고, 상기 CPU가 상기 제2 가상의 USB 허브 동작을 실행할 때, 상기 CPU와 상기 적어도 하나의 USB 장치 간의 통신을 인터페이스하고, 상기 CPU와 상기 적어도 하나의 USB 장치 간의 통신을 인터페이스 할 때, 상기 주소를 이용하여 상기 적어도 하나의 USB 장치를 식별하는 에뮬레이터.
  6. 제1항에 있어서,
    상기 CPU는 상기 적어도 하나의 USB 장치의 접속 상태를 상기 PC에 통보한 후, 상기 슬레이브 컨트롤러를 통하여 상기 PC로부터 상기 적어도 하나의 USB 장치에 할당된 추가의 주소를 수신하고, 상기 추가의 주소와 함께 상기 장치 정보 및 상기 상세 정보를 저장하고, 상기 PC로부터 상기 동작 요청 데이터를 수신할 때, 상기 동작 요청 데이터에 포함된 상기 추가의 주소에 기초하여, 상기 적어도 하나의 USB 장치를 식별하는 에뮬레이터.
  7. 제6항에 있어서,
    상기 PC에는 상기 적어도 하나의 USB 장치에 대응하는 드라이버 프로그램이 더 설치되고, 상기 PC가 상기 장치 정보 및 상기 상세 정보를 수신할 때 상기 드라이버 프로그램이 실행되고,
    상기 제어 프로그램들 중 적어도 하나는, 상기 적어도 하나의 USB 장치에 대응하는 가상 드라이버 프로그램이고,
    상기 CPU는 상기 장치 정보 및 상기 상세 정보를 수신할 때, 상기 가상 드라이버 프로그램을 실행시키고, 상기 CPU가 상기 제2 가상의 USB 허브 동작을 실행하는 동안 상기 가상 드라이버 프로그램을 통하여 상기 적어도 하나의 USB 장치의 동작을 제어하는 에뮬레이터.
  8. 제7항에 있어서,
    나머지 제어 프로그램들은,
    상기 호스트 컨트롤러로부터 수신된 상기 장치 정보 및 상기 상세 정보에 기초하여 상기 적어도 하나의 USB 장치를 인식하고, 상기 적어도 하나의 USB 장치에 대응하는 상기 가상 드라이버 프로그램을 검색하고, 검색된 상기 가상 드라이버 프로그램을 실행시키는 운영체제 프로그램과,
    상기 가상 드라이버 프로그램의 실행이 완료된 후, 상기 가상 드라이버 프로그램으로부터 상기 장치 정보 및 상기 상세 정보를 수신하고, 상기 추가의 주소와 상기 장치 정보 및 상기 상세 정보를 기록하고, 상기 가상 드라이버 프로그램을 통하여, 상기 적어도 하나의 USB 장치의 동작을 제어하거나 또는 상기 적어도 하나의 USB 장치의 동작에 따른 입력 데이터를 수신하고, 상기 네트워크 인터페이스 장치를 통하여 상기 PC와 통신하는 주제어 프로그램과,
    상기 PC가 상기 에뮬레이터를 가상의 USB 허브로 인식하도록 동작하고, 상기 슬레이브 컨트롤러와 상기 주제어 프로그램 간의 통신을 인터페이스 하는 논리 허브 프로그램을 포함하는 에뮬레이터.
  9. 제7항에 있어서,
    상기 CPU가 추가의 가상 드라이버 프로그램을 상기 메모리에 저장하도록, 상기 CPU에 상기 추가의 가상 드라이버 프로그램을 입력하는 입력 장치; 및
    외부 전원에 기초하여 상기 내부 전원을 생성하고, 상기 내부 전원을 상기 슬레이브 컨트롤러, 상기 네트워크 인터페이스 장치, 상기 호스트 컨트롤러, 상기 메모리, 상기 CPU, 및 상기 입력 장치에 공급하는 전원 공급부를 더 포함하고,
    상기 CPU는 상기 내부 전원을 공급받을 때, 상기 제어 프로그램들 중 일부를 실행시키는 에뮬레이터.
  10. 업무 프로그램이 설치된 PC(personal computer)에 접속되는 단계;
    USB 포트를 통하여 접속된 외부의 USB 허브에 USB 장치가 접속될 때, 상기 USB 장치를 인식하는 단계;
    상기 PC에 상기 USB 장치의 접속 상태를 통보하는 단계;
    상기 PC로부터 상기 USB 장치에 대한 동작 요청 신호를 수신하는 단계;
    외부의 통신망을 통하여 재현 명령을 수신하였는지의 여부를 판단하는 단계;
    상기 재현 명령을 수신한 경우, 테스트용 입력 정보를 상기 PC에 출력함으로써, 상기 USB 장치의 동작을 가상적으로 대행하는 제1 가상의 USB 허브 동작을 실행하는 단계; 및
    상기 재현 명령을 수신하지 않은 경우, 동작 제어 신호를 상기 USB 장치에 출력하고, 상기 USB 장치의 동작에 따른 입력 정보를 상기 PC에 출력함으로써, 상기 PC와 상기 USB 장치 간의 통신을 상호 인터페이스 하는 제2 가상의 USB 허브 동작을 실행하는 단계를 포함하고,
    상기 업무 프로그램이 상기 PC에서 실행될 때, 상기 업무 프로그램에 의해 처리되는 업무들 중 일부는 상기 USB 장치의 동작과 관련한 업무를 포함하는 에뮬레이터의 동작 방법.
  11. 제10항에 있어서,
    상기 USB 허브에 추가의 USB 장치가 접속될 때마다, 상기 인식 단계 및 상기 통보 단계를 반복하는 단계를 더 포함하는 에뮬레이터의 동작 방법.
  12. 제10항에 있어서,
    상기 PC로부터 상기 USB 장치에 대한 추가의 동작 요청 신호를 수신할 때마다, 상기 판단 단계와 상기 제1 가상의 USB 허브 동작을 실행하는 단계를 반복하거나, 또는 상기 판단 단계와 상기 제2 가상의 USB 허브 동작을 실행하는 단계를 반복하는 단계를 더 포함하는 에뮬레이터의 동작 방법.
  13. 제10항에 있어서,
    상기 에뮬레이터는 슬레이브 컨트롤러, 메모리, CPU, 및 전원 공급부를 포함하고, 상기 CPU는 상기 전원 공급부로부터 내부 전원이 공급될 때, 상기 메모리에 저장된, 상기 제1 또는 제2 가상의 USB 허브 동작을 실행하기 위한 제어 프로그램들 중 일부인, 논리 허브 프로그램, 주제어 프로그램, 및 운영체제 프로그램을 실행하고,
    상기 PC에 접속되는 단계는,
    상기 에뮬레이터의 추가의 USB 포트가 상기 PC의 USB 포트에 연결된 후, 상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러로부 터 제1 요청 데이터를 수신하는 단계;
    상기 CPU에서 실행되는 상기 논리 허브 프로그램에 의해, 상기 제1 요청 데이터에 대한 응답으로서, 상기 논리 허브 프로그램에 의해 구현되는 가상의 USB 허브에 대한 장치 정보 데이터를 생성하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 장치 정보 데이터를 상기 호스트 컨트롤러에 전송하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 호스트 컨트롤러로부터 허브 주소를 수신하는 단계;
    상기 CPU에서 실행되는 상기 논리 허브 프로그램에 의해, 상기 허브 주소를 기록하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 호스트 컨트롤러로부터 제2 요청 데이터를 수신하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 제2 요청 데이터에 대한 응답으로서, 상세 정보 데이터를 생성하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 상세 정보 데이터를 상기 호스트 컨트롤러에 전송하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 호스트 컨트롤러로부터 제3 요청 데이터를 수신하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 제3 요청 데이터에 대한 응답으로서, 허브 정보 데이터를 생성하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 허브 정보 데이터를 상기 호스트 컨트롤러에 전송하는 단계;
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 호스트 컨트롤러로부터 허브 포트 초기화 명령을 수신하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 허브 포트 초기화 명령에 대한 응답으로서, 초기화 완료 데이터를 생성하는 단계; 및
    상기 CPU에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 초기화 완료 데이터를 상기 호스트 컨트롤러에 전송하는 단계를 포함하고,
    상기 허브 정보 데이터는 상기 가상의 USB 허브의 포트 개수와 전원 공급 방식에 대한 정보를 포함하고,
    상기 호스트 컨트롤러는 상기 장치 정보 데이터 및 상기 상세 정보 데이터에 기초하여, 상기 에뮬레이터를 상기 가상의 USB 허브로 인식하는 에뮬레이터의 동작 방법.
  14. 제13항에 있어서,
    상기 CPU로부터 출력되는 상기 장치 정보 데이터, 상기 상세 정보 데이터, 상기 허브 정보 데이터, 및 상기 초기화 완료 데이터는 상기 슬레이브 컨트롤러에 의해 설정된 통신 프로토콜 형식의 제1 통신 신호들로 각각 변환되어 상기 호스트 컨트롤러에 전송되고, 상기 호스트 컨트롤러로부터 출력되는 제2 통신 신호들은 상기 슬레이브 컨트롤러에 의해 논리 데이터 형식의 상기 제1 내지 제3 요청 데이터 들과 상기 허브 포트 초기화 명령으로 각각 변환되어 상기 CPU에 전송되는 에뮬레이터의 동작 방법.
  15. 제10항에 있어서,
    상기 에뮬레이터는 메모리, CPU, 및 호스트 컨트롤러, 및 전원 공급부를 포함하고, 상기 CPU는 상기 전원 공급부로부터 내부 전원이 공급될 때, 상기 메모리에 저장된, 상기 제1 또는 제2 가상의 USB 허브 동작을 실행하기 위한 제어 프로그램들 중 일부인, 논리 허브 프로그램, 주제어 프로그램, 및 운영체제 프로그램을 실행하고,
    상기 USB 장치를 인식하는 단계는,
    상기 호스트 컨트롤러에 의해, 제1 정보 요청 신호를 상기 USB 장치에 전송하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 USB 장치로부터 장치 정보를 수신하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 USB 장치에 대한 주소를 할당하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 USB 장치에 상기 주소를 전송하는 단계;
    상기 호스트 컨트롤러에 의해, 제2 정보 요청 신호를 상기 USB 장치에 전송하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 USB 장치로부터 상세 정보를 수신하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 주소, 상기 장치 정보, 및 상기 상세 정보를 저장하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 장치 정보 및 상기 상세 정보를 상기 CPU에 출력하는 단계;
    상기 CPU에서 실행되는 상기 운영체제 프로그램에 의해, 상기 장치 정보 및 상기 상세 정보에 기초하여, 상기 USB 장치를 인식하고, 상기 USB 장치에 대응하는 가상 드라이버 프로그램을 상기 메모리에서 검색하는 단계; 및
    상기 운영체제 프로그램에 의해, 검색된 상기 가상 드라이버 프로그램을 실행시키는 단계를 포함하는 에뮬레이터의 동작 방법.
  16. 제15항에 있어서,
    상기 장치 정보는, 상기 USB 장치의 이름, 상기 USB 장치의 USB 스펙 버전 정보, 및 상기 USB 장치에 전송되는 통신 패킷의 최대 길이 정보를 포함하고,
    상기 상세 정보는, 상기 USB 장치에 대한, 제조회사 ID, 제품번호, 펌웨어 버전 정보, 및 제조회사 이름을 포함하는 에뮬레이터의 동작 방법.
  17. 제15항에 있어서,
    상기 에뮬레이터는 슬레이브 컨트롤러를 더 포함하고,
    상기 PC에 상기 USB 장치의 접속 상태를 통보하는 단계는,
    상기 가상 드라이버 프로그램의 실행이 완료될 때, 상기 CPU에서 실행되는 상기 주제어 프로그램에 의해, 접속 통보 데이터를 생성하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 주제어 프로그램으로부터 수신되는 상기 접속 통보 데이터를 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러에 전송하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러로부터 제1 장치 정보 요청 데이터를 수신하는 단계;
    상기 주제어 프로그램에 의해, 상기 논리 허브 프로그램을 통하여 수신되는 상기 제1 장치 정보 요청 데이터에 응답하여, 상기 가상 드라이버 프로그램으로부터 수신한 상기 장치 정보를 상기 논리 허브 프로그램에 전달하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 장치 정보를 상기 PC의 호스트 컨트롤러에 전송하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러로부터 상기 USB 장치에 대한 추가의 주소를 수신하는 단계;
    상기 주제어 프로그램에 의해, 상기 논리 허브 프로그램을 통하여 수신되는 상기 추가의 주소를 상기 가상 드라이버 프로그램으로부터 수신한 상기 장치 정보 및 상기 상세 정보와 함께 기록하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러로부터 제2 장치 정보 요청 데이터를 수신하는 단계;
    상기 주제어 프로그램에 의해, 상기 논리 허브 프로그램을 통하여 수신되는 상기 제2 장치 정보 요청 데이터에 응답하여, 상기 상세 정보를 상기 논리 허브 프 로그램에 전달하는 단계; 및
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 상세 정보를 상기 PC의 호스트 컨트롤러에 전송하는 단계를 포함하는 에뮬레이터의 동작 방법.
  18. 제17항에 있어서,
    상기 장치 정보를 상기 PC의 호스트 컨트롤러에 전송하는 단계와, 상기 상세 정보를 상기 PC의 호스트 컨트롤러에 전송하는 단계에 의해, 상기 PC의 호스트 컨트롤러가 수신한 상기 장치 정보 및 상기 상세 정보는, 상기 PC의 CPU에서 실행되는 상기 PC의 운영체제 프로그램에 전달되고, 상기 PC의 운영체제 프로그램이, 상기 장치 정보 및 상기 상세 정보에 기초하여, 상기 USB 장치를 인식하고, 상기 USB 장치에 대응하는 드라이버 프로그램을 상기 PC의 메모리에서 검색하여 실행시키고,
    상기 PC의 호스트 컨트롤러가, 상기 업무 프로그램의 요청에 따라 상기 드라이버 프로그램에 의해 생성된 USB 장치 제어 데이터에, 상기 추가의 주소를 포함시켜 상기 동작 요청 신호를 생성하고, 상기 동작 요청 신호를 상기 슬레이브 컨트롤러에 전송하는 에뮬레이터의 동작 방법.
  19. 제13항에 있어서,
    상기 PC에는, 상기 업무 프로그램이 실행되는 동안 발생하는 이벤트들을 기록하고, 기록한 상기 이벤트들을 상기 업무 프로그램에서 재현함으로써 상기 업무 프로그램을 자동으로 실행시켜 테스트하는 자동 테스트 프로그램이 더 설치되고,
    상기 에뮬레이터는 통신망에 연결되는 네트워크 인터페이스 장치를 더 포함하고,
    상기 제1 가상의 USB 허브 동작을 실행하는 단계는,
    상기 슬레이브 컨트롤러에 의해 상기 동작 요청 신호를 논리 데이터 형식의 동작 요청 데이터로 변환하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러로부터 수신되는 상기 동작 요청 데이터를 상기 주제어 프로그램에 전달하는 단계;
    상기 주제어 프로그램에 의해, 상기 동작 요청 데이터에 포함된, 상기 통보 단계에서 상기 PC의 호스트 컨트롤러에 의해 할당된 주소를 이용하여, 미리 기록된 장치 정보들에서, 해당 USB 장치에 대한 장치 정보를 검색하는 단계;
    상기 주제어 프로그램에 의해, 해당 USB 장치에 대한 장치 정보에 기초하여, 해당 USB 장치의 이름을 확인하는 단계;
    상기 주제어 프로그램에 의해, 상기 USB 장치의 이름을 이용하여, 상기 네트워크 인터페이스 장치를 통하여, 상기 PC의 CPU에서 실행되는 상기 자동 테스트 프로그램에, 해당 USB 장치에 대한 테스트용 입력 데이터를 요청하는 단계;
    상기 주제어 프로그램에 의해, 상기 네트워크 인터페이스 장치를 통하여 상기 자동 테스트 프로그램으로부터 수신되는 상기 테스트용 입력 데이터에, 상기 PC의 호스트 컨트롤러에 의해 할당된 주소를 포함시켜, 상기 테스트용 입력 정보를 생성하는 단계;
    상기 주제어 프로그램에 의해, 상기 테스트용 입력 정보를 상기 논리 허브 프로그램에 전달하는 단계; 및
    상기 논리 허브 프로그램에 의해, 상기 테스트용 입력 정보를 상기 슬레이브 컨트롤러를 통하여 상기 PC의 호스트 컨트롤러에 전송하는 단계를 포함하고,
    상기 PC의 호스트 컨트롤러가 수신한 상기 테스트용 입력 정보는, 상기 이벤트들이 상기 업무 프로그램에서 재현되는 동안 상기 업무 프로그램에 적용되는 에뮬레이터의 동작 방법.
  20. 제17항에 있어서,
    상기 PC에는, 상기 업무 프로그램이 실행되는 동안 발생하는 이벤트들을 기록하고, 기록한 상기 이벤트들을 상기 업무 프로그램에서 재현함으로써 상기 업무 프로그램을 자동으로 실행시켜 테스트하는 자동 테스트 프로그램이 더 설치되고,
    상기 에뮬레이터는 통신망에 연결되는 네트워크 인터페이스 장치를 더 포함하고,
    상기 제2 가상의 USB 허브 동작을 실행하는 단계는,
    상기 슬레이브 컨트롤러에 의해 상기 동작 요청 신호를 논리 데이터 형식의 동작 요청 데이터로 변환하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러로부터 수신되는 상기 동작 요청 데이터를 상기 주제어 프로그램에 전달하는 단계;
    상기 주제어 프로그램에 의해, 상기 동작 요청 데이터에 포함된 상기 추가의 주소를 이용하여, 해당 USB 장치에 대응하는 상기 가상 드라이버 프로그램에 상기 동작 요청 데이터를 전달하는 단계;
    상기 가상 드라이버 프로그램에 의해, 상기 동작 요청 데이터에 기초하여, 동작 제어 데이터를 생성하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 동작 제어 데이터에 상기 주소를 포함시켜 상기 동작 제어 신호를 생성하는 단계;
    상기 호스트 컨트롤러에 의해, 상기 USB 허브를 통하여 상기 동작 제어 신호를 해당 USB 장치에 전송하는 단계;
    상기 가상 드라이버 프로그램에 의해, 상기 호스트 컨트롤러를 통하여, 해당 USB 장치의 동작에 따른 입력 데이터를 수신하는 단계;
    상기 가상 드라이버 프로그램에 의해, 상기 입력 데이터를 상기 주제어 프로그램에 전달하는 단계;
    상기 주제어 프로그램에 의해, 상기 입력 데이터에 상기 추가의 주소를 포함시켜 상기 제1 입력 정보를 생성하는 단계;
    상기 주제어 프로그램에 의해, 상기 논리 허브 프로그램에 상기 제1 입력 정보를 전달하는 단계;
    상기 논리 허브 프로그램에 의해, 상기 슬레이브 컨트롤러를 통하여 상기 제1 입력 정보를 상기 PC의 호스트 컨트롤러에 전송하는 단계;
    상기 주제어 프로그램에 의해, 상기 네트워크 인터페이스 장치를 통하여, 상기 PC의 CPU에서 실행되는 상기 자동 테스트 프로그램으로부터 기록 명령을 수신한 경우, 상기 입력 데이터에 해당 USB 장치의 이름을 포함시켜, 제2 입력 정보를 생성하는 단계; 및
    상기 주제어 프로그램에 의해, 상기 제2 입력 정보를 상기 네트워크 인터페이스 장치를 통하여 상기 자동 테스트 프로그램에 전송하는 단계를 포함하고,
    상기 제2 입력 정보는 상기 자동 테스트 프로그램에 의해 상기 이벤트들 중 하나로서 기록되고, 상기 제1 입력 정보는 상기 업무 프로그램이 실행되는 동안 상기 업무 프로그램에 적용되는 에뮬레이터의 동작 방법.
KR1020080096875A 2008-10-02 2008-10-02 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법 KR101033177B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080096875A KR101033177B1 (ko) 2008-10-02 2008-10-02 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080096875A KR101033177B1 (ko) 2008-10-02 2008-10-02 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20100037670A true KR20100037670A (ko) 2010-04-12
KR101033177B1 KR101033177B1 (ko) 2011-05-11

Family

ID=42214747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080096875A KR101033177B1 (ko) 2008-10-02 2008-10-02 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR101033177B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024001652A1 (zh) * 2022-06-29 2024-01-04 京东方科技集团股份有限公司 设备间的网络适配方法及装置、存储介质、电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162407B2 (en) 2001-12-03 2007-01-09 Ms1-Microsoft Corporation Testing a host's support for peripheral devices
JP2006127252A (ja) 2004-10-29 2006-05-18 Fujitsu Component Ltd 切替機、切替方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024001652A1 (zh) * 2022-06-29 2024-01-04 京东方科技集团股份有限公司 设备间的网络适配方法及装置、存储介质、电子设备

Also Published As

Publication number Publication date
KR101033177B1 (ko) 2011-05-11

Similar Documents

Publication Publication Date Title
US6742055B2 (en) Data transmission system, data transmission terminal, controller and interface method
US6769622B1 (en) System and method for simulating universal serial bus smart card device connected to USB host
US7979600B2 (en) Multifunction peripheral and device control system
US8135871B2 (en) Computer system and control method of the same
US7568053B2 (en) USB composite device, USB communication system, and USB communication method
US6892254B2 (en) Device driver apparatus for I/O device simulation
US20030163628A1 (en) Method and related apparatus for controlling transmission interface between an external device and a computer system
KR20090111799A (ko) 다기능 주변 장치, 대응 방법 및 단일 인터페이스를 통해 통신하는 주변 장치와 호스트를 갖는 전자 시스템
EP3117327B1 (en) Universal serial bus emulation of peripheral devices
US20150261696A1 (en) Universal serial bus emulation of peripheral devices
CN105184337A (zh) 一种nfc设备进行智能卡应用检测方法和系统
US7930708B2 (en) Device control system, device control method, and device control program
KR101033177B1 (ko) 업무 프로그램의 자동 테스트 과정 동안 usb 장치의 동작을 가상적으로 대행하는 에뮬레이터 및 그 동작 방법
KR20190045850A (ko) 자동화 시스템을 위한 설치 지원 장치 및 설치 프로세스 지원 방법
JP6036222B2 (ja) デバイス制御装置、ホスト装置およびホスト装置の制御方法
US20020099953A1 (en) Debugging of chipcards
US20080168192A1 (en) Apparatus and method of tracing descriptor in host controller
CN101329661B (zh) 一种实现hid/scsi设备pc/sc接口的系统和方法
JP6860796B2 (ja) 情報処理システム、情報処理装置およびプログラム
TWI259368B (en) Method, apparatus and program storage device for automatically presenting status from a host bus adapter until an error is detected
US6009486A (en) Cardbus docking station
JP2003337784A (ja) 制御システム及びusbデバイス
CN101154144B (zh) 外围设备、外围设备识别方法以及计算机产品
CN110967614B (zh) 芯片测试方法、芯片测试设备以及芯片
JP2007164348A (ja) エミュレータ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140428

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150428

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee