PICでUSBを!(知識ゼロからのスタートです)
PIC18F14K50のUSB機能を100%自前のソフトで制御する試みです。しかもアセンブラで!
| 当記事は2009年12月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 | 2011.7.11 前へ 次へ 目次へ戻る ホームページトップへ戻る | 
| ☆C++でUSB(HID)アクセスプログラムを作成 PIC側のプログラムはC18コンパイラを使わずPICアセンブラで作成しますが、パソコン側のUSB(HID)アクセスプログラムはBorland C++コンパイラで作成します。 しかしこれがまた難物で悪戦苦闘の連続でありました。 | 
[第53回]
●WriteFile()関数
いつものことなのですが、前回は時間がなくなってしまいましたので、HID送信プログラムについて詳しく説明することができませんでした。
今回はWriteFile()関数について、すこし詳しく説明をいたします。
WriteFile()関数はWindowsAPIです。
MSDNライブラリ(http://msdn.microsoft.com/ja-jp/library/cc429856.aspx)にその説明があります。
そのページでは下記のように説明されています。
同じページの下の方には、各パラメータについての詳しい説明もあるのですが、例によって業界用語の羅列で概ね意味不明です。
つまり、ドシロウトは立入禁止、ということのようです。
| BOOL WriteFile( HANDLE hFile, // ファイルのハンドル LPCVOID lpBuffer, // データバッファ DWORD nNumberOfBytesToWrite, // 書き込み対象のバイト数 LPDWORD lpNumberOfBytesWritten, // 書き込んだバイト数 LPOVERLAPPED lpOverlapped // オーバーラップ構造体のバッファ ); | 
| if(!WriteFile(handle,&wbf,nwrite,&nwritn,NULL))cout<<"write error"<<endl; | 
| DWORD nwrite=65;//not 64! | 


| unsigned char wbf[65]="\0"; | 
| //
PHIDP_PREPARSED_DATA pp;
if ( !HidD_GetPreparsedData( handle, &pp ) )return;
//
HIDP_CAPS caps;
if ( HidP_GetCaps( pp, &caps ) != HIDP_STATUS_SUCCESS )return;
cout << "InputByteLength  : " << caps.InputReportByteLength   << endl;
cout  <<  "OutputByteLength : "  <<  caps.OutputReportByteLength    <<  endl;
        CloseHandle(handle);
} | 

