仕事もあまりないんですがお願いしてハードがらみのアセンブラでの仕事をしている。
今回ハードウェアとの試験を行ったんですがシリアルプリンタに出力されない。
改造のお仕事でハード屋さんが書いたブログラムが基礎となっているだが、聞いても忘れているみたいでシリアル初期化シーケンスが十分なんだか不十分だかわからない状態だった。
ソースを解析してシリアル回路部分に電源を入れるワンチップCPU独自の命令を実行する関数を呼んでいないことがわかったがそれを修正しても今度は文字化けする。
まだシリアル初期化シーケンスが不十分何だろうと思って調べていたら、ハード屋さんから「プリンタのボ-レートいくつになっているの?」って聞かれた。
うっかりしていた、というか頭の中にボ-レートという発想が全く飛んでいた。
自宅でのテストのときにWindowsから COPY/B でファイルをCOM1に送っても、うまく出力されるときと文字化けする時があったので、なぜだろうと思いつつうまく出力されだしたらずっとうまくいくので、何かノイズのゴミが入っていて変なバイナリモード状態なんだろうと勝手に推測していた、今思うとプリンタに対してWindows+プリンタドライバがボーレートを設定した後のタイミングならうまく出力されたわけだ。
昔からシリアルの文字化けはボーレートなどの設定をまず疑うのが常識だったのに、このところ .NET 中心にやってきたからか全く発想がなかったというのは頭がなまっている証拠なんだと思う。
おかげで今日の作業は順調に運んだが、大いに反省し、いい振り返りの機会を与えられたと考えてがんばろうと思う。