|
오늘은 Bulk IN transfer를 실험해 보자.
이전 강의 “Bulk IN 실험”을 참조하시라. 우선 아래와 같은 회로를 꾸미자. 이전 강의(Bulk IN 실험)의 회로와 약간 다르니, 이전 강의의 회로도를 참조해서 실험하면서 왜 안되나요? 라고 물으면 대략 즐. ![]() 바로 전 실험을 하면서 이미 꾸며져 있는 회로에 Parallel Port와 인터페이스 할 배선만 추가하면 된다. 전체사진 ![]() 세부사진1(Parallel Port 쪽) ![]() 세부사진2(LED 쪽) ![]() 세부사진3(버튼 쪽) ![]() 펌웨어는 v2.5에 v1.6을 추가하는 형식으로 수정하였다. Unihigh Firmware v2.6 어플리케이션 소스 Unihigh App v2.6 실행파일 새로 추가된 (맴버) 함수는 다음과 같다. OnButtonBulkIn() BulkInThread(…) ReadDataArrived( … ) UpdateListBoxScroll(…) 리소스에 새로 추가된 에디트 박스에 읽을 바이트 수를 써 넣고서, “Read” 버튼을 누르면 OnButtonBulkIn() 함수가 호출된다. OnButtonBulkIn() 함수는 데이터를 기다리는 동안 메인 쓰레드를 홀딩시키지 않기 위해 BulkInThread(…)를 생성 한 후 리턴된다. BulkInThread(…)에서는 ReadFile(…)을 이용해서 디바이스로부터 데이터를 읽어오는데, 여기서 이전 쓰레드(GetMsgThread)와 다른 점이 있다면 WaitForSingleObject( stOverlapped.hEvent, dwWaitTime ); 이전에는 두번째 인자에 INFINITE를 주었었는데, 이번에는 dwWaitTime로 유한한 시간(1분)을 준다. 즉 “Read” 명령을 주고 나서 1분내에 그 ReadFile이 리턴되지 않으면 에러 메시지를 출력하도록 되어 있다. 성공적으로든 아니면 에러가 나든 BulkInThread(…)를 마치면 ReadDataArrived(…)가 호출되는데, 여기서 받아온 데이터를 ListBox에 출력한다. 그리고 데이터를 위한 버퍼를 해제한다. UpdateListBoxScroll(…)은 리스트 박스의 스크롤을 갱신하기 위한 함수로서 USB 강좌에서 설명할 성질의 것은 아니므로 패쓰. 자. 이제 테스트를 해보자. 이전 강의(Bulk IN 실험)에 썼던 Parallel.exe를 다시 줏어오자. 펌웨어를 UniHigh 보드에 다운로드 시키고, 다음은 Parallel.exe를 실행시켜 놓고 나서, (물론 컴터에 패러렐 포트는 꽂혀 있어야 한다.) 다운로드 할 데이터 파일(data.bin)을 지정해 준다. 그리고 나서, Unihigh App v2.6를 실행시키고 “Read Byte” 에디트 박스에 Parallel.exe에 나타난 데이터의 크기(377, 즉, 우리가 읽어올 데이터의 크기)를 입력한다. 그리고, “Read” 버튼을 누른다. 이제 기다리면 되느냐? 아니다. Parallel.exe의 “Transfer” 버튼을 눌러줘야 패러렐 포트를 통해 UniHigh 보드로 데이터가 날아가고, UniHigh 보드는 받은 데이터를 Bulk In USB 파이프를 통해 호스트로 전송한다. ![]()
|
카테고리
메모장
UniHigh(FX2) Q&A WDM 드라이버(Driver) USB 개발 모듈(module) 장치(Device) High Speed 자작 강좌(강의) 전문가 CYPRESS CY7C68013 FTDI PHILIPS 최근 등록된 덧글
재미있게 쓰셨네요. 도움..
by 김찬 at 11/23 EP2CFG = 0xA2; S.. by 감사~ㅋ at 06/26 하드웨어 구매는 어떻게.. by 하니 at 06/22 강좌 감사합니다 by 하니 at 06/22 쉽게 설명해 주셔서 이해.. by 윤여준 at 05/13 전원부 회로에서 R4 100K.. by 푸른날개 at 02/26 머리가 한계를 느끼기 .. by 어리버리 관절염 at 02/19 검색하다 우연히 들렀습.. by bongpal2 at 02/01 감사합니다. 자료 정말 .. by 정태우 at 11/30 olo 강의 볼때마다 잡는.. by 까불이 at 10/11 skin by 이글루스 | |||