かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

BHT-BASIC:開発するうえで自分がハマった所

DENSO製ハンディターミナルで使用するDSL、「BHT-BASIC」の話。

BHT-BASICで自分がハマった処をメモ。

 

PD4ファイル(実行バイナリ)

ファイル名は8byte以下にする。9byte以上だと、実行時に「ファイル名エラー」となり、動作しない。コンパイルは正常終了するので、原因が特定しづらい。

 

DATファイル作成

ファイルを新規作成する時、必ずフィールド情報も同時に作成する。そうしない場合、不正なFLDファイルが作成され、ファイルが使用不可となる事がある。そうなった場合は意図せず作成されたFLDファイルを削除する。(「フィールドサイズエラー」というエラーメッセージが出て、にっちもさっちも行かなくなった場合は、大概これが原因だと思う。)

 

ファイルIO

フィールド情報を指定しなければ、DATファイルを使用できない。また、ファイル名が長いとエラーが発生する。条件によってエラー上限が変わる? 上記同様、8byte以下にしておくのが無難。エラーメッセージが不親切すぎて原因が特定しづらい。

 

ファンクション

includeファイルの関数や定数を使用する場合、呼び出し元の関数だけでなく、呼び出し元のメイン関数にも宣言が必要となる。また、ファンクション名に「_(アンダーバー)」を使用すると、コンパイルエラーが発生する。エラーメッセージが不親切すぎて原因が特定しづらい。

コーディング時、サブルーチンを先に記述し、メイン関数を最下段に記述するようにする。メイン関数を先に記述すると、サブルーチンは関数でなく変数として扱われる。(同様の現象はPower Shellでも発生する。確か、Delphiでも発生したはず。) ビルド時、「プロジェクト設定」タブのリンクオプション「未定義変数をエラーにする」をONにする事で、コンパイル時にエラー検出可。

 

キー入力内容読み込み

「キー」と「キーデータ」という概念がある。ユーザが入力する [1] のキー(ボタン)のキーデータは「1」となるが、キーとキーデータが一致しないボタンもある。( [ENT]キーとか [BS/C]キーとか)

 

ハンディ to ハンディのデータコピー

ハンディ to ハンディでデータをコピーする時、ハンディIDも同様にコピーされる。(4:SETSYSTEM→5:COMMUNICATION→PROTOCOL TYPE→3:BHT-Ir Protocolで確認できる値) アプリ側で、この値をハンディ識別子として使用している場合は要注意。意外と忘れがち。