2007-01-01から1ヶ月間の記事一覧

FFTWの使い方

C/C++ ライブラリをDL.http://www.fftw.org/install/windows.html libファイルをコンパイル. VSでヘッダ"fftw.h"をインクルード 追加のライブラリディレクトリ,ヘッダファイルディレクトリ,ライブラリをリンク.

Visual C++ ライブラリのランタイム

MFCを使ったCSnoopy.dllが他のPCで動かなかった.調べたら, Microsoft Visual C++ 2005 再頒布可能パッケージ (x86) は、Visual C++ で開発されたアプリケーションを Visual C++ 2005 がインストールされていないコンピュータ上で実行するために必要な、Vis…

ウィンドウクラス名等を取得する方法

Spy++を使う.

コマンドラインから電源オフや休止を実行する

http://www.atmarkit.co.jp/fwin2k/win2ktips/697cmdpwcfg/cmdpwcfg.html 即座に再起動 >shutdown -r -t 0

DataShort.Count==6の訳

判別するのに2秒分使っていて,Count==5だと,Index=0のデータは手前のデータと合わせて2秒分のデータが作れないから.↑嘘.フィルター通すのに,最初の方のデータはおかしなことになるから.

タイマーで一定間隔で処理を行う.

C#

http://www.atmarkit.co.jp/fdotnet/dotnettips/372formstimer/formstimer.html private void button11_Click(object sender, EventArgs e) { timer = new Timer(); timer.Tick += new EventHandler(hoge1); timer.Tick += new EventHandler(hoge2); timer.I…

リアルタイムデータ取得の信頼性

4分間の大きなデータ欠損なしに取得できた. 0.007%の欠損の兆候は見られたが,欠損でない可能性もある.このスペックであれば上出来.

C#でwaveOutをコールバックで動かす

C#

Cでラッパーdllを作ります. #include "windows.h" #define DLLEXPORT __declspec(dllexport) extern "C" { WAVEFORMATEX wfe; HWAVEOUT hWaveOut; WAVEHDR whdr; LPBYTE lpWave; DLLEXPORT void __stdcall WaveOutOpen(DWORD hWnd, DWORD SRATE) { wfe.wFor…

C#の配列をポインタ配列にして,Cの関数にポインタを渡す.

C#側 unsafe public static void hogecs() { short[] wave_data = new short[44100]; for (int i = 0; i < 44100; i++) { wave_data[i] = (short)(30000 * Math.Sin(2 * Math.PI * 440 * i / 44100)); } fixed (short* ptr = &wave_data[0]) { dll.Class1.ho…

C#での配列をポインタ配列に

配列にポインタ・アクセスする http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc03.html

WndProc メソッド

C#

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformscontrolclasswndproctopic.asp [C#] protected virtual void WndProc( ref Message m );C#でも使えるらしい.つまり,waveOut系のWin32APIからのコー…

入力データのバッファサイズ

(チャンネル数+2)×2 例)15ch -> (15+2)*2=34

自作アプリ+既存アプリ起動手順

自作アプリ起動 デバイス起動 一度自作でスヌープ 既存アプリ起動 既存アプリ終了 デバイス終了 自作アプリ終了

デバイスからの入力データ構造解析

ph->bDirection == DIRECTION_FROM_DEVICE; ph->UrbHeader.Function == 9; m_TransferLength == 32;これで欲しいデータが特定できる. 最大で34byte, 頭の方から,Eve,15ch分,? リトルエンディアンで並んでいる. 0211->0x1102=4354 サンプリング100Hzで計…

URB->TransferBufferの抽出

void CUSBLogDoc::InsertURBs(LONG nNumOfURBs, PVOID data) { for(int i = 0; i < nNumOfURBs; i++) { PPACKET_HEADER ph = (PPACKET_HEADER) data; m_arURB.UnserializeURB(ph); data = ((PUCHAR) data) + ph->uLen; } } BOOL CArrayURB::UnserializeURB(P…

構造体

uTimeStamp:1msec単位

MFCでのメッセージ処理

MFC

メッセージマップはBEGIN_MESSAGE_MAP(theClass, baseClass ),END_MESSAGE_MAP() で囲む

自作アプリ+USBSnpys

HANDLE hSniffer = CreateFile(L"\\\\.\\USBSnpys", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, // no SECURITY_ATTRIBUTES structure OPEN_EXISTING, // No special create flags 0, // No special attributes NULL);は正常…

デバイスドライバ

参考になるサイト デバイスドライバ開発ガイド http://www.sciencepark.co.jp/community/lecture.html ドライバの仕組み http://itpro.nikkeibp.co.jp/article/COLUMN/20060221/230234/?ST=win&P=1 Windows Device Driver Programming Part 1,2 http://ruffn…

USB用語

URB=USB Request Block

USB SNOOPY PRO+既存アプリ

起動・終了順序 0.USBの接続 1.Snoopy 2.既存アプリ 3.デバイス電源ON 4.既存アプリにて切断・終了処理 5.Win上で,デバイスの停止 6.デバイスの電源OFF 1000Hz,2ch,eveで計測中.160パケットに一回,データの欠落が認められる.なにが原因だ?

Snoopy Pro挙動

Choose 'Unpack Drivers' from the 'File' menu すると, C:\WINDOWS\system32\drivers以下に USBSnoop.sys USBSnpys.sys がコピーされた. - Choose 'Install Service' from the 'File' menu すると,ドライバには変化なし.レジストリでも書き込んだのだろ…

USB SNOOPYでよさそうかや

なんか,USBケーブルでPCにデータ来てるみたいなんで,それをUSB SNOOPYというので,USBポートのトラフィックをモニターして,欲しいデータだけ持ってくるのがよさそう.http://sourceforge.net/forum/forum.php?forum_id=217242 それをライブラリみたく使え…

USB SNOOPY Proソースファイル構成

http://sourceforge.net/project/showfiles.php?group_id=34567 ↑のSnoopyProSrc-0.22.zip の中には4つのプロジェクトが含まれる. SnoopyPro Application main関数はなさそうで,アプリケーションクラス(CWinApp?MFC?)として,CSnoopyProAppがあるのかな?…

Snoopy ProUSBSnpys

Win32アプリからドライバをいじるのは,カーネルモードで動作するI/Oマネージャ.Win32アプリからは,ファイルを操作するWin32APIを使ってIRP(I/O Request Packet)をI/Oマネージャに送り,I/OマネージャはIRPをデバイスドライバに送信して,デバイスドライバ…

仮想USBマスストレージ〜仕様の勉強〜

PCをUSBマスストレージとして動作させる.USBではデータ転送方式をInterrupt、Bulk、Isochronous、Controlの4つに分類しており,一般にBulk転送がマスストレージに使われるらしい.でも,デバイスセットアップとかでControl転送も使う.う〜ん. ↓まさか,神…

仮想USBマスストレージ

仮想CFによりCF→USB http://supertank.iodata.jp/products/cfusb/PCのHDDを仮想的にUSBマスストレージとして外部機器に認識させたい. ↓こんなの http://www.codegear.co.jp/specs3.html ↓PSPからPC内のHDDにアクセス http://17191.hito.thebbs.jp/one/11511…

Windows Media Player(WMP)のタイトル表示の不具合

正確には不具合というより仕様.でも,結構厄介な仕様. MP3等を再生時に,タイトルを付け直しても,WMP上では反映されない. なぜならWMPではタイトル,アーティスト情報はWMPのライブラリ情報から持ってきているから. ライブラリをちゃんと管理すればいい…