かきスタンプ

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

DENSOハンディターミナル:管理者向けモード設定メモ

DENSO製ハンディターミナルの管理者向け設定メモ。 

 

システムメニュー起動
[SF]キー + [1] を押しながら、電源ON
KEYENCEのハンディは [L2] + [2]を押しながら電源ON。よく混同する。)

 

システムメニュー:各種操作のキャンセル
[SF]キー + [BS/C]

  

起動時のプログラム設定
システムメニューを開き、
 1:EXECUTE PROGRAM → プログラム選択。(PD4ファイル)

 

ファイル削除
システムメニューより、[SF]キー + [0]
(DELETE FILEメニューが立ち上がる) 

 

ハンディID変更
システムメニューを開き、

 4:SET SYSTEM → 5:COMMUNICATION → 4:PROTOCOL TYPE → BHT-Ir Protocol

にて設定。

 

リジューム機能

システムメニューを開き、
 1:EXECUTE PROGRAM → プログラム選択。(PD4ファイル)

この機能がONの場合、電源を入れると、電源をOFFにした時点からスタートする。
工場出荷時はON。

OFFに設定して、電源を入れた時には常にアプリのスタート画面から開始するようにした方がいいと思う。
(意図しないエラーが発生していた時、ユーザではどうにもならないケースが多いし)

 

通信設定(ハンディ⇔ハンディ)
システムメニューを開き、

 4:SET SYSTEM → 5:COMMUNICATION → 3:COM PORT → Optical
 4:SET SYSTEM → 5:COMMUNICATION → 4:PROTOCOL TYPE → Ymodem

※双方のOpticalのパラメータを合わせる

 

音量調整
[M1]キーを長押し

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で確認できる値) アプリ側で、この値をハンディ識別子として使用している場合は要注意。意外と忘れがち。

BHT-BASIC:INKEY$を使用した、[BS/C]と[ENT]の判定方法

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

INKEY$を使用した場合の[BS/C]と[ENT]の判定方法。 

Const KEY_BS$ = CHAR$(8)

Const KEY_ENT$ = CHAR$(13)

 

IN$ = INKEY$

SELECT IN$

    CASE  KEY_ENT$

   ( [ENT]キー入力時の処理)

    CASE KEY_BS$

   ( [BS]キー入力時の処理)

 と、キャラコードで判定可。

BHT-BASIC:キー入力内容取得方法まとめ

DENSO製ハンディターミナルで使用するDSL、「BHT-BASIC」にて、キー入力内容を取得する関数と、その使用方法について、簡単にまとめてみた。

 

INKEY$ (使用例: IN$ = INKEY$ )

キーボードから1文字読む込む。入力内容は画面に表示されない。設定により、[BS/C]などのファンクションキーをスペースキーとして取得するケースがある。

 

INPUT (使用例:INPUT = IN$ )

キーボードからデータを読む込む。入力内容を画面に表示させる事ができ、[ENT]キー入力時に変数に値が入る。[BS/C]キーで末尾の1文字が削除される。最大12文字。

 

INPUT$(文字数) (使用例: IN$ = INPUT$(3) )

キーボードから(文字数)分読み込む。入力内容は画面に表示されない。デバイスファイルから読み込む事もできる。

 

INP(ポート番号) (使用例: IN$ = INP(&H6041) )

入力ポートから1byte読む込む。ファンクションキーの入力判定が可能。(ビット計算が要るけど。)ポート番号については公式マニュアルを参照。

 

番外編

VRAMからデータを読む事も出来るが、処理がビット単位。細かすぎて使いづらい。

BHT-BASIC:変数の種類とスコープ

DENSO製ハンディターミナルで使用するDSL、「BHT-BASIC」の変数の種類とスコープについて簡単にまとめてみた。 

<その他の変数>

  • コモン変数・・・チェイン間で有効。ユーザプログラム起動時にメモリに割り当てられる。
  • レジスタ変数・・・電源をOFFにしても内容は失われない。恒久的な設定などに。

この2つは性質上、グローバル扱い。

 

BHT-BASIC:配列のサイズ変更

DENSO製のハンディターミナルについての話。

サポートセンターに問い合わせてみた。

Q.

BHT BASICにて、配列のサイズを途中で変更する事は可能でしょうか。(VBのRedimにあたる関数はありますでしょうか。)

回答

A.

配列のサイズを変更する事はできません。

ご了承いただけますようお願い致します。

むぅ。代替案すら無しか。

BHT-BASIC:レコード登録可能件数の拡張方法

DENSO製のハンディターミナルについての話。

サポートセンターに問い合わせてみた。ユーティリティ関数を使用してテキストファイルを作成すると、レコード登録可能数がデフォルトでは1000件になるので、何とかならないものかな、と思って。

Q.

ファイルの最大登録可能レコード数を、ソースから変更する事はできますか?

回答

A.

ファイルの最大登録は、ファイル作成時のみ設定可能です。ソースから変更する場合には、そのファイルを削除し、最大登録可能レコード数(レコード長)を増やして、改めてファイルを新規作成して下さい。

既存のファイルのデータを残したままで、ファイルの最大登録レコード数をソースから変更する事はできませんが、以下の手順を行っていただくことでファイルの最大登録可能レコード数を増やすことは可能です。

  1. 該当のファイルをPCなどにアップロードします。
  2. BHT内の該当ファイルを削除します。
  3. PCなどにアップロードしておいたファイルを、BHTにダウンロードします。

PCなどからダウンロードした場合、そのファイルの最大登録可能レコード数は最大の 2,147,483,647件となりますので、上記手順を行って頂くことで登録可能レコード数を増やす事が可能です。

何かしらの小細工が必要との事。

PCにアップロードする(クレードル経由となる)のは、運用面で納得してもらえない可能性が高そうなので、現実的なのはFTPを使用する事だろうか。