2020年 おめでとうございます!
このブロッグを見て下さりありがとうございます!
今年もよろしくお願い申し上げます。
上図の解説
■■マイコンでAD変換を行ったデータをRS232Cを通して、TeraTermで受信したlog(ログ teraterm.log なるテキスト)を[メモ帳],[BinEdit],[Cプログラムでの読み込み実行結果] および[Cプログラムの一部]を示しています。
■なぜこの写真を載せたか?
DecimalBASICでteraterm.log なるテキストを読み込むことが出来ません。
現在、この理由を調べる為です。
・TeratermのlogをCプログラムから読むことは出来る。
DecimalBASICからは読めない。
・メモ帳で開いた写真の通り最初に1行空白があります。この空白を削除して、このteraterm.logを上書き(Over Write)したlog(ログ)としてならDecimalBASICでも読み込みます。
・Binary Editor(バイナリー エディター)を使用して、teraterm.logを開いて調べると、最初に 0D 0A があります。
これは、制御コードです。機能としてはCR LF です。
キャリッジ〔タイプライターの〕
carriage〔用紙を保持しながら移動する部分。〕
LF【 Line Feed 】 ラインフィード
意味につてです。タイプライターやプリンターをイメージします。
CRとはヘッドをそのままの行において行頭へ行く動作です。
LFとは行を1行送る動作です。
ヘッドを動作させず、用紙を動作させるとも理解できます。
なぜ、CR LF なる制御コードが入るのか?
これは新規にファイルを起こした時に入ります。以降、このファイルにAppend(追記)した場合はそれ以降のタイムスタンプとしてデータが追加されていきます。
対策
・最初に、teraterm.log の最初に制御コード以外のダミーデータを入れておく。
そして、teratermでApeendMode(追記)に設定してあれば、制御コードが入る心配はありません。とにかくファイルの先頭に制御コードが存在することが妨げとなっている様子です。
・制御コード 0D 0A の2バイトを削除する。削除した新たなlog(ログ)を保存しなおす。それも、自動的に行う必要がある。可能なのだろうか?
・DecimalBASICプログラム側のプログラムに問題があるかも?
しばらく検討します 解決の希望はあるだろうか?
文字集合について UTF-16 で保存しました
上図
漢字が化けて表示されます
■ 符号化文字集合の関連
EUC-JPや、Shift_JIS、UTF-8、UTF-16などは文字符号化方式である。
UTF-8 から保存形式が選択できるようになっています。
ここで、ANSIで保存し直しCプログラムで読み込ませます。どうなるか?
上図 期待通りに再現できました
メモ帳の欄外 下に ANSI が見えます
アンシ【ANSI】[American National Standards Institute]
《American National Standards Institute》米国国家規格協会。
これなら、再現してくれます。