/* *=============================================== *= USB学習キットサポートツール = *= ユーザエンドポイントリード/ライトテスト = *= = *=============================================== */ /* 内容 0〜255の数字を2個キーボードから入力する 数字2個をCPUボードに転送する CPUボードから数字2個を受け取る 受け取った数字を表示する */ #include <windows.h> #include <string.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "utkdrv.h" #define READY 0 #define EP_IEP 0 #define EP_EPA 1 #define EP_EPB 2 #define EP_EPC 3 #define EP_EPD 4 unsigned char dl_data[1024]; unsigned int dl_length; /* * ファイルポインタ */ HANDLE hRead = INVALID_HANDLE_VALUE, hWrite = INVALID_HANDLE_VALUE; int _cdecl main(unsigned int argc, unsigned char *argv[]) { int bytes; unsigned int in ,stat; HUSB husb; /**** CPUボードとの通信手段を確保する ****/ /* この部分はおまじないと思えば良い */ husb = UTK_Open(); if ( husb == INVALID_HANDLE_VALUE) { printf("学習ボードが接続されていません\n"); exit(1); } hWrite = UTK_OpenPipe(husb, 0, EP_EPC); hRead = UTK_OpenPipe(husb, 0, EP_EPD); if ( (hRead == INVALID_HANDLE_VALUE) || (hWrite == INVALID_HANDLE_VALUE)) { printf("パイプが開けません\n"); printf("%x %x %x",INVALID_HANDLE_VALUE, hRead, hWrite); if (hRead != INVALID_HANDLE_VALUE) CloseHandle(hRead); if (hWrite != INVALID_HANDLE_VALUE) CloseHandle(hWrite); exit(1); } stat = READY; /**** ここまでおまじない ****/ do { /**** 数字を2個読み込む ****/ printf("A: "); scanf("%d", &in); dl_data[0] = (unsigned char)in; printf("B: "); scanf("%d", &in); dl_data[1] = (unsigned char)in; /**** CPUボードにデータを送る ****/ dl_length = 2; /* 送るデータのバイト数 */ WriteFile(hWrite,dl_data,dl_length,&bytes,NULL); /* 送信 */ printf("Send %d bytes\n", bytes); /* 送ったバイト数を表示 */ /**** CPUボードからデータを受け取る ****/ dl_length = 2; /* 受け取るデータのバイト数 */ stat = ReadFile(hRead, dl_data,dl_length,&bytes,NULL); /* 受信 */ /* 受け取ったバイト数と戻り値を表示 */ printf("Receive %d bytes, stat=%x\n", bytes, stat); /**** 受け取ったデータを表示 ****/ printf("Return: %d, %d\n", dl_data[0], dl_data[1]); } while (in);/* inが0ならおしまい */ /**** 後始末: おまじない ****/ CloseHandle(hWrite); CloseHandle(hRead); exit(stat); }