VB2005の本を立ち読みでもしようと思って、
夕方、新宿紀伊国屋書店に寄ってみました。
なぜか、VB6の本ばかり。VB2005の本は
殆ど見当たらず…( ̄〆 ̄)
なんでだろう?
知りたかったことはというと、serialportの
DataReceivedイベントを捕まえて、受け取った
データを文字列配列に格納するためのこと。
具体的には、invokeとdelegateの使い方。
別にマルチスレッドで処理したいわけでも
なんでもないのですが、serialportで送受信する
クラスがマルチスレッドで動いちゃうので、
そっぽ向くわけにも行きませんし…
昔の言語みたいにもっと簡単にシリアルポートを
使えれば良いんだけどなぁ…
今、練習用に作っているプログラムでは
マイクロソフトが公開しているサンプルコード
をそのまま使っちゃってるんですが、コード
の意味が解らないととても気持ち悪いし、
何かあった時に対応できないのでは
それこそどうしようもないし。というわけで
一応お勉強。
でもいい本が見つからず…
なぜ今時VB6?…紀伊国屋さん!
秀和のVB2005逆引きシリーズあたりでも
読んでみたいと思ったんですが。
仕方ないのでネットで色々情報収集。
http://www.geocities.jp/hatanero/rs232c3.html
↑ここや、
http://www.bnote.net/vb/delegate.shtml
↑ここがとても参考になりました。
それらを念頭にソースを色々弄りまわしていたら、
理解したいことは大体なんとなく掴めました。
よーし。あとは、nekologi-PCの
第1版作成に踏み出すだけだな。
それにしてもたかが32KBのデータなんですが、
BASICのメモリ上に、扱いやすい形で格納して
いくと、メモリ容量も処理速度も結構嵩んでしまい
ます。数百KB~数MB程度のワークエリアが必要。
(゜o゜)
機能性と動作速度と実用性が相反する状況で、
もう少しスリムな処理方法を考えないと
実用に向かなさそう。
昔のシンプルなBASICとちがって、とにかく
文字列を扱うとすぐにガベージコレクションが
発生してしまうみたい。そのことが処理速度を
大幅に落としているようです。
nekologiからのデータ取り込みが
10~15秒。それを処理するのに
30~40秒もかかってしまうようです。
(セレロンD2.4GBで)
うーん。遅すぎる…。
効率のいい処理方法を考え直さないと…
それにしても、いまさらVBの勉強なんて
別にしたいと思ってないんだけどな。
こんなことなら、やっぱりHSPとか
activeBASICとか使ったほうが
楽だったかな?
(activeBASICはシリアルポート
対応してないかな?)
まぁ、レガシィポートだから、新しい言語が
わざわざシリアルポイートを手厚くサポート
する要件も無いんでしょうけど。
シリアルポートにしても、メモリ管理にしても、
新しい言語になればなるほど、自分の意図しない
動きをしちゃうので、
「実行してみたら遅くてお話にならない」
とか、
「メモリ食いすぎてswapが生じちゃう」
とか、想定外のことに悩まされることが多くなった
ような気がします。まぁ、複雑なことを簡単な
コードで実現出来るなどのメリットもあります
けどね。
まぁ、いまさらシングルユーザーシングルタスクの
DOSみたいにシンプルな環境は時代にそぐわない
んでしょうけどね。



|