研究メモ&愚痴

 
一晩かけてバグ(と呼べるのか怪しいモノ)を一つ取った。
エンコーダを導入したい、というのが当初の目的。
2時間あれば余裕だと思っていたのだけれど、丸二日かかってしまった。
 
以下経過。
とりあえずカウンタボードデバイスをオープンできないと始まらない。
VC6.0の遺産プログラムを改変したプログラムAだとちゃんと動く。
VS2005のプログラムBに適当に移植したらオープンできない。
ただし、コンパイルは通る。
 
VS2005だとだめなのか?

プログラムAを2005で開いたら動いた。仕様書にも2005もOKと書いてある。

ソースのミス?

細心の注意を払ってコピペを駆使しても駄目。
オープン指示の位置を色々変えてみるも駄目。
ここらで環境設定が原因だと思い至る。(でも半信半疑)

ディレクトリに追加したはずのボード用ライブラリの指定でミスしてる?

間違ってない。
そもそもここが間違ってたらコンパイルが通らないはず。

うーうー唸りながら設定を眺めていたら、文字セットの設定が原因ではと思い至る。
プログラムBはAと違いユニコード形式で記述していた。(多少書式が変わる)
これをマルチバイト文字形式に変更

無事オープン。
 
なんと、数クリックでたどり着ける場所に解決策は転がっていたのだね。
そのために丸二日も・・・orz
 
言い訳をするのなら、追加した製品のライブラリはブラックボックスなのが敗因だったと言える。
オープン処理に失敗してもエラー対策がされているため、返り値として失敗が示されるだけでコンパイルエラーと違いエラーの内容が把握しにくく、原因を探るのに手間取ってしまった。
おそらく内部では文字列で設定を指定する処理が記述されているものと思われる。
今後、製品付属のライブラリを扱う際には気をつけるようにしよう。
  
ちなみに、一番時間をかけてしまったのは「でも半信半疑」の部分。
自分のコードが間違っているような気がして、不必要なほど確認してしまった。 
そろそろ自分のコードをもっと信頼しよう。
ビリーブ。
 
 
以下、新たに発生した問題。
システムの刻み時間(サンプリング時間)を長くすると、カメラガクガクの後に異世界にぶっ飛んでいく。
おそらく車両モデルの微分項が暴走を引き起こしているものと推察される。
今後、画像処理を積むとサンプリング時間が長大化することは必至なので、明確な原因の究明&解決策をしなければ。
とりあえず、ローパスフィルタでなんとかならないだろうか、と考えている。
 
 
以下、蛇足。
それにしても、失敗する度に表示される
『 バイスのオープンに失敗しました^^; 』
というエラーにうんざりした。
顔文字が不快極まりない。
こんなエラーコード書いたの誰だよ。
俺だーーーー!!