2023.11.07
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第97回]



●SDカードIF(17)ND80Z3.5に接続(10)エラー処理

間が4日も空いてしまいました。
相変わらず苦闘続きの4日間でありました。
何がどうだったかということについて書き始めますとまたまたタイムアウトになってしまいます。
実は本日も余り時間がありません。
ですのでそのあたりのことははしょってしまいます。
結果としてはなんとか良いあたりのところに着地できたと思います。
そこでなんとかうまくいったプログラム改良の結果についてざっくりと書くことにいたします。

まずは前回の続きから。
前回はI、D、Lの各コマンドを実行したところで終りました。
時間があればその続きも書くつもりで、そのための画面コピーも用意していました。
下の画面です。

RO(Read Open)、RB(Read Byte)、C(Close)の各コマンドのテスト画面です。
同じテストは[第93回]でも行ないました。
そのときは確認のためファイル名のエコーも表示していましたが今回はLコマンドと同様それ(ファイル名のエコー表示)は省きました。
それとは逆に以前はRO、RB、Cの各コマンドではコマンドコードのエコーは表示されていませんでしたが今回はプログラムの変更によって全てのコマンドについてコマンドコードのエコー表示をすることにしました。
前回の終わりに書きましたように今回のプログラム変更によってPIC18F2550に送るコマンドは1バイトのコマンドコードに改めました。
ROは04、RBは05、Cは16です。

ここまでのところは全て正常な処理ばかりでエラーが発生することはありませんでした。
しかし入力のミスとか何かのイレギュラーな状態でエラーが発生することはよくあることです。
そういうときにシステムがハングアップしたりしないようにオペレータに的確なメッセージを伝えることが肝要です。
とはいえこれはなかなかに難しいことです。
そんなふうに書きましても実際に出来たものを見ていただくと「どこがそんなに大変だったの?」と言われるのが落ちなのですけれど。

こんな感じです。

DIR表示のあとL(Load)コマンドでabc.txtというファイルを読み込もうとしました。
もちろんそんなファイルはありません。
するとE:80と表示されました。
E:はエラーコードの表示です。
エラーコードは10進数2桁です。
エラーコード80はFILE NOT FOUND(ファイルがみつからない)を示します。

もちろん存在するファイルなら普通にロードできます。

前回と同じTEST13.BINをロードしました。
続いて
RO TEST13.BIN
を実行して同じTEST13.BINをReadFileとしてオープンしました。
もちろん同じようにオープンできます。

ここでわざとエラーになるように続いてROコマンドを実行してみました。

RO TEST14.BINの実行です。
するとE:88が表示されました。
エラーコード88はROコマンドがすでに実行されていることを示します。
すでにROコマンドが実行されていてファイル(ここではTEST13.BIN)がオープンされているのでそのファイルをクローズしないことには他のファイルを開くことはできません。

オープンされているファイルをクローズするにはCコマンドを実行します。

Cコマンドを実行してからもう一度ROコマンドを実行しました。
今度はエラーにならずに開くことができました。

PICBASICコンパイラ[第97回]
2023.11.7upload

前へ
次へ
ホームページトップへ戻る