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); } |