blochの日記

自虐ネタ以外のぐちは書かないようにしましょう

テクトロオシロ、USB転送に三日かかった

転送に三日かかったわけではなく、プログラムに三日かかった。
どこで引っかかったかと言うと、ヘッダー部分。テクトロのオシロはCurve?コマンドに対して、
#
というレスポンスを返す。#は文字のシャープ記号、は次に続くの文字数の文字(が4桁なら"4"という文字を返す。chr$(4)では無い)、で、その後のが、のバイト数で表されたバイナリー。
問題は二文字分のヘッダーを読み取ろうとすると、必ず#,nulとなってしまい、が読めないのである。どうもおかしい。デリミタの指定をVI_ATTR_VI_ATTR_TERMCHAR_ENを使って指定してもダメであった。
結局わかったことは、vireadで読み取る文字数が、TERMCHARを使う場合はそのTERMCHARの分も入っているが、文字数指定で読み取る場合は当然、指定した文字数のみということだった。簡単なことなのだけれど、vireadの戻し値がVI_SUCCESS_MAX_CNTかどうかを判断して、引数に返す文字数を1減するかどうかを決めなければならない。
これに気づくのに三日かかった。【後記】それからさらに一週間してここにメモしたことに気づいた。
で全て解決、と行きたいところなのだが、現状で残った問題点は、ch1,2を両方読む場合に2の方だけ、チャンネル指定を二回送らないとうまく行かない。ありがちなトラブルなのだが、、、。