「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



というわけでBccDevの続き。

以前、win32のAPIを直接弄ってwindowsアプリを
組んでみたいなぁとか思って、なーーんとなく買った
Windowsゲームプログラミングだったんだけど、
あの本読んでみて始めて解ったことが1つ。

普通のコマンドライン用C言語ならmain関数が1個
あって、そこから各関数が呼び出されるカタチに
なってるんだけど、windowsみたいにイベントドリブン
だとmain関数の代わりにWinMain関数があって、
各処理はイベントで起動されるっていう常識的な
お話。

で、GDIとか直接弄ってグラフィック表示とか。
やっぱりこういうプリミティブな部分を直接
弄っている感覚ってなんとなく楽しくて、
実行環境に無料のbcc5.5を導入して遊んでた
んだけど、怠けのものオイラとしては、コマンド
ラインからコンパイルオプションとか指定して
コンパイルって言うのがメンドウでイヤだったので、
当時はあっという間に投げ出してしまいました。


が、あらためてvectorで探しモノしてたら↓
http://www.vector.co.jp/soft/win95/prog/se180695.html
こんなの見つけちゃって、早速試してみることに。

おぉ、便利。簡易とはいってもプロジェクトファイル
一式を管理してくれて、ボタン一発でビルド&メイク。
プロジェクトファイルの設定次第でコンソール用も
windows用もdllも作れちゃう。
デバッガーもここから起動できちゃう。
統合環境って言っても違和感なしだな。アリガタヤ。


ここまでやってみて、ふとさっきの参考サイト
http://0n0.fc2web.com/bcc/index.html
の環境整備の項目を眺めたら、BccDev
についてもちゃーーんと載ってた。目がザルだな。

こういう便利なものが公開されていることには
感謝、感謝だな。


で、Bccならシリアル通信も.net環境に悪さ
されずに扱えるだろうし、あとは入出力周りの
コーディングがメンドウなだけ。ひと頑張りで
なんとかなるかと。


そういえばBccでAPI弄ってグラフィック表示
しようと思ったのは、やっぱりネコロジーPC
を組んでいて.netでトラブったからだったなぁ。
今回も同じことやってる…進歩無ェ…


そういえば、ネコロジーPC。ようやくそれなりの
実行速度にはなったんだけど、気になることを
思い出した。

ネコロジーPCはデータ取り込み処理中にプログレス
バーを表示するんだけど、その伸びる速度が途中から
変化すること。
シリアルポート上をデータが流れている間はなぜか
妙に遅いんだけど、データが一旦PC側のバッファに
取り込まれてしまうと一転して速くなるってこと。

要はVB.netの環境下ではシリアルポートの入力処理で
物凄いオーバーヘッドが生じているであろうということ。

.net環境とシリアルポートは、「別スレッドで動かす」
ということばかりに拘りすぎた結果、処理速度が
非現実的になってでも愚直に仕様を取り込んでこう
なった…という気がしてならないな。

たまたま顕著に表れるのがFT232RLなんだろうけど、
結局どのUSB-シリアル変換器つかっても、いや、
シリアルポート使う限り.netは大同小異なんだろうな。

フリーのVB6.0って無いのかな…
いまさら4.0使うわけにも…っていうか多分
箱ごと捨てちゃってるだろうしな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする




例のtiny2313を使ってMIDI機器をPCのシリアル
ポートと直接繋いじゃうというお話にずーーーと
取り憑かれています。

とりあえず、この間フェライトビーズをゲットしたので、
作りかけになっていたモノを作り上げました。



万能基板にtiny2313を2個とFT232RLを1個。ちゃんと
箱を加工して、普通に使えるようにしました。

これまではブレッドボードに秋月のFT232RL基板
(ミニ-Bタイプコネクタのやつ)を取り付けて
実験してたんだけど、USB-Bタイプのコネクタ
にしてみました。こっちの方がMIDIの場合
使いやすそうかな、と。

とりあえずローランドのシリアルMIDIドライバ
を通して、MIDIマスターキーボードやMIDI
音源を繋いで、問題なく鳴ることを確認。

よし、よし。

さて、この間作ったシリアルMIDIモニタ
取り付けてみる。

…まただ。キーボードを弾いてからモニタが拾う
までの時間が長い…


ドライバの設定か…と思って、レイテンシを1m秒に設定。
→症状は変わらず。

うーん、やっぱこれだけが原因って訳では無さそうだな。
でもFT232RLについては実績が出来たはずだったんだけど
なぁ…


もしやUSBの通信品質が低くてパケットを再送再送
繰り返しているとか???
とか思って他の通信ルートなどを色々試してみることに。

WILLさんのページにあるMIDKEYを通して、
MIDIマスターキーボードを弾いてwindowsの
ソフトウェアMIDIを鳴らしてみる…
  バッチリだ。問題なし。

windowsメディアプレイヤーでMIDIファイル
を再生し、シリアルMIDIから外部音源を鳴らして
みる…
  バッチリだ。問題なし。

ってことは、USBの通信経路自体には何の問題も
無いわけだし、windows上で通信が上手く
いっていないというわけでもないはずだし、
あと考えられるのはやっぱり
   「FT232RLドライバと.net環境の相性」
じゃぁないのかなぁ…

訳判らん。
あ、そうそう。FTDI社のサイトを見ていたら、
FT232RLのEEPROMを書き換えるMProgが刷新されて、
新しいバージョンのソフト「FT_PROG」になってた。

少し弄ってみたかんじではだいぶ使いやすくなって
いる感じ。ふむふむ。


それはそれとして、なんとなく.net起因のトラブルを
オイラの脳みそでは収拾することは難しそうなので、
諦めてBccでも使ってみようかと、色々情報を
検索中。

面白そうなサイトとしては…
http://0n0.fc2web.com/bcc/index.html
ここや
http://web.kyoto-inet.or.jp/people/ysskondo/index.html
ここあたり。

ちょっとしたツールとして使うなら、いっそのこと
dos窓で動くツールにしちゃって、出力をパイプ
やリダイレクトできるようにしちゃうほうが
面白いかも。

…いや、せっかくならやっぱwindowsアプリ
にした方がいいかな…

amazonでbccの本を探ってみたんだけど、
あまりめぼしいものが無かったな…

まぁ、よく考えたら以前買ってまだ途中までしか
読んでいないWindowsゲームプログラミング
をもう一度読み返すか…


たかがシリアルポートの入出力なのに、なんで.net
(というかVB2005)はこんなに遠回りなんだ???

ちなみにトラぶってしまうのは今のところFT232RL
だけなんだけどもね。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする