これでUSB通信の準備が整ったわけですが実際の電文のやり取りのためには
ターゲット(ボード)側、ホスト側でそれぞれプログラムを作る必要があります。
ターゲット(ボード)側、ホスト側でそれぞれプログラムを作る必要があります。
まずターゲット側。
パイプ1を通して受信したときに起動される処理で受信バッファの内容をシリアルコンソールに
吐き出す処理を組み込みます
パイプ1を通して受信したときに起動される処理で受信バッファの内容をシリアルコンソールに
吐き出す処理を組み込みます
void do_rx1(void) { int i; putstr("RECV1\n\r"); for(i=0;i<8;i++) { sprintf(str,"%02X ",R1_DAT[i]); putstr(str); } putstr("\n\r"); }
// USB.cpp // #include "stdafx.h" #include "uusbd.h" int _tmain(int argc, _TCHAR* argv[]) { HUSB husb; HANDLE h; char buf[8]; DWORD ret,size,i; // USBデバイスをオープンする husb = Uusbd_Open(); // デバイスのインターフェース0パイプ1のハンドルを得る h = Uusbd_OpenPipe(husb, 0, 1); // 8byte書き込む for(i=0;i<8;i++) { buf[i]=i; } ret = WriteFile(h, buf, 8, &size, NULL); // クローズする CloseHandle(h); Uusbd_Close(husb); return 0; }
こういうように通信系の上位下位のプログラムを同時開発するときはWindows環境のありがたさがわかります
左上から
・ターゲットプログラムの編集(エディタ)
・ターゲットプログラムのビルド環境(DOS窓)
・ターゲットプログラムの出力先(シリアルコンソール)
右上から
・ホストプログラムの編集ビルド/デバッグ環境(VC++統合環境)
・ホストプログラムの実行環境(DOS窓)
左上から
・ターゲットプログラムの編集(エディタ)
・ターゲットプログラムのビルド環境(DOS窓)
・ターゲットプログラムの出力先(シリアルコンソール)
右上から
・ホストプログラムの編集ビルド/デバッグ環境(VC++統合環境)
・ホストプログラムの実行環境(DOS窓)