/*
*===============================================
*= 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);
}