バイト先へ

 バイト先の要請により単身伊丹へ。Pascalにも声をかけたのだが、今日はゼミで企業見学があるらしいので、1人で向かった。早朝5時に寝て、午前8時に起床。仕事は3件あった。刻印機制御ソフトの修正、それから精度測定のために昔作ったソフトの修正と要望対応が2つ。
 
 到着してから早速刻印機のソフトの修正にとりかかる。今回の修正は、移動中のペンに停止命令を発行したときにACK命令を待たずに、位置取得コマンドを送っているので、これをACKを待つよう変更すること。こちらは大した苦労も無くあっさりと修正完了。もう1つの修正は前回もあった、停止コマンドの送出タイミングが機械側の座標送出とかぶってしまうというもの。
 
 これは、あちこちにSleepによるウエイトをかけているのだが、中々解決せず。4時半ぐらいまでやっていたのだが、原因が良く分からないのと、送出がかぶったとしても特に問題が無いことから問題を見送りすることになった。
 
 ところで、ソースを読んでいくうちにこのままアプリケーションの保守をしていくのは難しいような気がしてきた。理由は色々あるのだが、VBではマルチスレッドのアプリケーションにならないことと、現行のアプリケーションはグローバル変数が多すぎて何がなんだか分からなくなっているのが主な原因である。
 向こうの人に新しいのを作ったほうがいいのではないか?と提案だけはしておいたので、予算が下りれば一新したアプリケーションを作ることになるだろう。誰が作ることになるのかは知らないが頑張ってくれ。
 
 刻印機の問題はひとまず終了したので、次に精度測定アプリのほうへ。なにやら使っていくうちに段々システムが重くなっていくらしい。どれどれ……?と私のLet's Noteにシリアルケーブルを繋いで接続ボタンを押した瞬間、ブルースクリーンに。
 
 ナニコレ
 
 なにやら私のUSBシリアル変換のドライバのバグ?の模様。COM接続先のハードウェア側から送られてくるデータの量が異常に多すぎて処理できないのか、ドライバが落ちる。
 
 仕方が無いので向こうの人が用意してくれた、Windows2000機を使用。
 
 ……が、これはこれでCOMポートが壊れている。ハードウェア的に壊れているのか、デバイスマネージャにCOMポートの項目が「?」で表示されている。仕方が無いので、会社の用意してくれたシリアル変換USBを使って繋いだ。こちらでは正常にデバッグが出来たのだが、USBコネクタが一部壊れていて、端子を固定することが出来ない。そのため接触が悪かったらデバイス一覧から消えてしまうし、何よりUSBの逆挿しが出来てしまうことにより、間違って逆刺しするとパソコンがショートして落ちてしまうのが怖い。
 
 さて、肝心のバグだがシステムが重くなる原因は、すぐに分かった。バッファをクリアするのを忘れていたため、後になるほど文字の切り出しにかかるようだ。
 
 当時の私の心境が知りたい……。
 
 その他2点のバグも全部凡ミスで、当時何を考えてプログラムしたのかが知りたい。
 
 何はともあれ、問題は解決。3点ほどその場では解決できないので、家に持って帰りましたが、まあ何とかなるでしょう。