おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

カテゴリ「BHT-BASIC」の32件の記事 Feed

2016年4月23日 (土)

BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3


さらに、文字列を扱うユーザ定義関数として使えそうなものを作成してみました。

関数定義 引数 戻り値
指定バイト数内に収まる文字列を戻す
Function GfCut$(pstrValue$, pintMax%)[255]
pstrValue$:対象文字列
pintMax%:指定バイト
GfCut$:結果文字列
横幅一杯でのテキスト表示
Sub GsPrintFull(Byval pstrSrc$)
pstrSrc$:対象文字列  


尚、GfCut$関数は、 以前存在した「ハンディターミナル(BHT)の部屋」というサイトからの引用です。
また、GsPrintFull関数は画面の横幅を20文字と限定しています。(フォントの設定が24ドット)

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

楽天市場


デル株式会社

BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方

前回はバイナリサーチ(SEARCH.FN3)の紹介を行いましたが、 この検索では1個のコードに対して処理する機能しかありません。
コードは昇順にしないとバイナリサーチは利用できないので、 1レコードの中に複数コードが存在しソートできない場合などのデータファイルの場合には利用できません。

複数コードの条件付けを行い検索できるのが、 拡張関数の サーチ処理関数(SEARCH.FN3) です。 今回はこの拡張関数について説明します。

■サーチ処理関数(SEARCH.FN3)について

この関数は以下の4個の機能があります。
機能番号 処理内容
.fcAndSrch 1 「AND」サーチ(レコード番号検索)
.fcOrSrch 2 「OR」サーチ(レコード番号検索)
.fcAndSrchN 11 「AND」サーチ件数(件数のみ検索)
.fcOrSrchN 12 「OR」サーチ件数(件数のみ検索)

「レコード番号検索」と「件数のみ検索」で関数に渡す引数の書式が異なります。
[書式1]
 CALL "SEARCH.FN3" .fcAndSrch FILENO%, RSTART, REND, RECORD, STRING1$, STRING2$...

  RSTART, REND, RECORD は、整数型(%),長整数型(&),実数型(指定無し)が使用可能

[書式2]
 CALL "SEARCH.FN3" .fcAndSrch FILENO%, RSTART, REND, RECORD, STRING$(), STRINGN%

  RSTART, REND, RECORD は、整数型(%),長整数型(&),実数型(指定無し)が使用可能
<引き数>
  .fcAndSrch:機能番号指定
  FILENO%   :ファイル番号
  RSTART    :検索開始レコード番号
  REND     :検索終了レコード番号
  FIELDNO%  :フィールド番号
  STRINGn$  :検索条件
  STRING$() :検索条件(配列指定時)
  STRINGN%  :検索条件数(配列指定時)

  STRINGn$やSTRING$()は「検索方法」+「フィールド番号」+「検索文字列」で指定します。
  「検索方法」、「フィールド番号」は数値を
CHR$関数
で文字列化

<戻り値>
  RECORDNO :検索結果(レコード番号)
  ・RECORDNO には、検索条件に一致するデータが見つかったレコード番号が返されます。
   見つからなかった場合、0 が返されます。
  ・RECORDNO は、整数型の最大値(32767)を超える場合あるので、
   変数に代入する場合、長整数型変数か実数型変数を推奨します

今回の検索関数を使用する例のために以下の様なデータファイルを想定します。 これは今まで使ってきたTEST.DATに削除フラグを追加しています。 ファイル名はTEST2.DATとします。
項目名 フィールド長 内容
品番 16 商品コードの文字列
数量 12 商品の数量を文字列で格納
削除フラグ 1 "1":削除済み 、 "0"削除されていない

サーチ処理関数(SEARCH.FN3)  を使う上で OR条件 よりも  AND条件 を 使う方が多いと思うので、  AND条件 を例にとります。
品番と削除フラグの AND条件  でデータファイル( TEST2.DAT ) を検索する 関数が以下の様になります。 関数コールの書式は検索条件に文字列配列を使った「書式2」で行っています。
■検索関数の利用
上記の検索関数の動作をテストするソースを以下に記します。

最初のテストデータの書き込みで使っている関数  MfPutData2% は、 下の方にソースがありますのでそちらを参照下さい。 また、これによって作成された TEST2.DAT は以下の図の様になります。 (デバッガ上でのシミュレーションでのファイル参照ですが)
202
品番コードと削除フラグの指定を合わせて検索しています。
このソースの実行結果は以下の図の様になります。
201
関数 MfPutData2% のソースです。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

2016年4月18日 (月)

BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方

マスタデータファイルを検索する場合によく使われるバイナリサーチがあります。 バイナリサーチとは日本語では二分検索と言われるもので、 プログラマの方ならば説明の必要もないぐらい一般的なものだと思います。

前提条件として検索対象となるコードを、昇順ソートしてファイルに登録しておきます。
バイナリサーチでは最初に先頭レコード(左側)と最終レコード(右側)の中央に位置するコードが、 検索コードより大きいかまたは、小さいかを比較します。
中央のコードが大きい場合は、中央の位置を次の処理の右側とします。 また、中央のコードが小さい場合は、中央の位置を次の処理の左側とします。 再度、左側と右側の中央の位置を求めて、中央のコードと検索コードの比較を行います。
これを繰り返すことで領域を狭めていき最終的に目的のコードが見つかるまで行います。 (結果的に見つからない場合もありますが)

これらの一連の処理を BSEARCH.FN3 は行っています。

■バイナリサーチ処理関数(BSEARCH.FN3)について

CALL "BSEARCH.FN3" .fcBSrcOp FILENO%, FIELDNO%, STRING$, RECORDNO

<引き数>
  .fcBSrcOp: オープンされているファイルのバイナリサーチ指定
  FILENO% : ファイル番号
  FIELDNO%: フィールド番号
  STRING$ : 検索文字列
  FILENUM%: 検索ファイル数

<戻り値>
  RECORDNO:検索結果(レコード番号)
  ・RECORDNO には、検索条件に一致するデータが見つかったレコード番号が返されます。
   見つからなかった場合、0 が返されます。
  ・RECORDNO は、整数型の最大値(32767)を超える場合あるので、
   変数に代入する場合、長整数型変数か実数型変数を推奨します

オープンされていないファイルのサーチもできるのですが、検索した結果、 対象のレコードデータを取得して何かの処理を行うのが普通だと思いますので、 オープン済みファイルが対象のものだけを扱います。
それではこれを使った検索の関数をテストデータファイルを例に使ったものが以下に様になります。
■検索関数の利用

上記の検索関数の動作をテストするソースを以下に記します。

最初のテストデータの書き込みは、コードが重複せずに昇順に行っています。 このファイルはマスタデータとして考えていますので、コードの重複はあり得ません。

尚、ユーザ関数 MfPutData%  は以下の記事にありますので、参照して下さい。
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)

バイナリサーチの3番目まではレコードの内容を読めていますが、 4番目のコード"CD0005"はテストデータ書込みで行っていないのでレコードは検索できません。
このソースの実行結果は以下の図の様になります。
191

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

BHT-BASIC4.0:ファイルの存在確認関数を作ってみました

前回使用した拡張関数 ファイル情報提供関数(FILE.FN3) を利用して、 データファイルの存在確認を行う関数を作ってみます。

尚、この拡張関数の1番目の機能である .fcInfGetF(指定されたファイルの情報の獲得) を使いますが、 これの説明は以下の記事にありますので、参照して下さい。

データファイルの削除等について(KILL、CLFILEのラッパ関数)

この拡張関数を使用した、ファイル存在確認関数は以下の様になります。

ファイル情報の結果が返される文字列変数(INF$)の内容がNULLであれば、 ファイルが存在しないことを示しています。

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

2016年4月16日 (土)

BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)

データファイルのファイル削除やレコード削除を行う場合、 その都度 KILL命令  CLFILE命令  を実行するよりもラッパ関数を作って、それをコールする方がソース的にすっきりすると思います。

■KILL命令のラッパ関数について

KILL命令の定義は以下の様です。

KILL <ファイル名>

 <ファイル名>:"[ドライブ名:]ファイル名[<S>]"の書式の文字列式
     ("ファイル名"は"ファイル名称"+"."+"拡張子")
KILL命令のラッパ関数は以下の様になります。
エラー処理は何もしていませんが、ここでエラー内容などを表示するといいと思います。

■CLFILE命令のラッパ関数について

データファイルに書き込む関数を以下の様に定義します。
CLFILE命令の定義は以下の様です。

CLFILE [#]<ファイル番号>

 <ファイル番号>:1~16の値を返す数値式
      (OPEN命令で指定したファイル番号を指定)
CLFILE命令のラッパ関数は以下の様になります。

この関数は、"TEST.DAT"ファイルのレコード削除しかできない関数をラップしたものです。
FIELD命令はフィールド変数を固定でしか宣言できないのでこの様な感じになりました。 この部分を汎用性を持たせるのは少し大変なので、固定でもいいかなと思います。 方法が無いことは無いのですが、やはりFIELD命令がネックになります。

以下の関数は無理やり汎用性を持たせたCLFILE命令のラッパ関数です。

ファイルのフィールド数、各フィールド幅の取得を行う為に、 拡張関数の "FILE.FN3" を使用しています。
CALL "FILE.FN3" .fcInfGetF FILENAME$, INF$

 FILENAME$:ファイル名

 INF$:ファイル情報が返される(40 文字、または、ヌル文字)
    (必ず40 バイト以上の領域を確保しておく)

INF$の内容は以下の通りです。
位置 文字数 データ内容
1 12 ファイル名 文字列
13 2 (システムリザーブ) -
15 2 最大レコード数 1~32767
17 2 レコード数 1~32767
19 2 1クラスタあたりのレコード数 0
21 1 レコード長 1~255
22 1 フィールド数 1~16
23 16 各フィールドのフィールド幅 1~254
39 2 (システムリザーブ) -

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

2016年4月15日 (金)

BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点

ユーザ関数の引数の仮変数を普通の変数の様に使用することができます。 但し、文字列型変数の場合文字列長に関して注意する点があります。

今回は仮のユーザ関数として以下の様なものを宣言します。

この関数は仮変数である pstrCD$  に3文字~5文字までのテストデータを代入し単にその内容を表示しています。
尚、エラー処理では発生したエラーコードを表示させています。

上記の関数の動作をテストするソースを以下に記します。

関数 MsTest の中でブレークポイントを設定し  pstrCD$ の 内容を表示させてみます。 以下の図は MsTest に制御が移った直後の  pstrCD$ ですが 文字列のサイズが4文字になっています。
161
呼出し元の変数 W$ はサイズが40文字のはずですが、 引き数としては4文字になっています。
162
さらにステップ実行すると以下の図になります。  pstrCD$ に"123"が設定されている様子です。
そのまま実行を継続すると、以下の図の表示なります。
160
5文字の設定のところでエラーが発生し、 エラーコードが 0F(16進数) と表示されます。 このエラー内容は  「文字列長が範囲外です。」 です。
※結果的に、ユーザ関数の引数の文字列型仮変数に代入する場合は 文字列長に注意が必要だということになります。

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

BHT-BASIC4.0:データファイルの検索について(SEARCH関数)

データファイルの読み込みで、最初に既に入力されているコードを検索し、 そのコードに対応したレコード番号で行う場合があります。 データのメンテナンス処理ではこの方法が普通かと思います。

今回は標準関数の SEARCH関数 を使ってみます。

■SEARCH関数について

SEARCH関数の定義は以下の様です。
SEARCH([#]<ファイル番号>,<フィールド変数>,<検索データ>[,<開始レコード>])

 <ファイル番号>:1~16の値を返す数値式
      (OPEN命令で指定したファイル番号を指定)
 <フィールド変数>:文字型単純変数
      (FIELD命令の前に宣言されている変数を指定)
 <検索データ>:文字列式

 <開始レコード>:数値式
      (検索を開始するレコードの番号を指定、省略時は先頭から)

 返す値:検索できたレコード番号、見つからない場合は0が返る
      (返す値は長整数型変数か実数型変数で代入)

データファイルからコードを指定し検索する関数を以下の様に定義します。

SEARCH関数 に指定する検索データは、 関数[MfPutData%]でコードの後ろにスペースを付加したので、その処理を行っています。
この時、ワーク変数の W$ を宣言していますが、 引き数の変数 pstrCD$ は、 コール元で代入された文字列長分しかサイズが無いので、 それ以上の長さの文字列を代入できないためです。

レコード番号の指定が0の場合は、ファイルの先頭からの検索を行います。

GcTEST.DAT$ 等の定数定義等に付いては以下の記事を参照して下さい。
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)

■検索関数の利用

上記の検索関数の動作をテストするソースを以下に記します。

2番目の検索から分かるように、コードは順番に並んでいなくても検索できています。 つまり SEARCH関数 は、指定されたレコード位置からベタに検索し、 指定された検索データが等しいものが見つかった時点で、検索を止めるようです。

SEARCH関数 は特にバイナリサーチで行うわけではないので、 データ件数が多くて最後の方に目的のものが在る場合、時間が掛かるはずです。

ハンディターミナルで入力されたデータを検索する場合は、 そこまで入力件数が多いわけではないと思うので、 この SEARCH関数 でも 問題無いのでしょう。
このソースの実行結果は以下の図の様になります。
151
※尚、バイナリサーチに関しては、 拡張関数の中にバイナリサーチ処理関数(BSEARCH.FN3)があり、 これを使えば可能です。 この関数の使い方については別の記事で紹介します。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

楽天市場


デル株式会社

2016年4月14日 (木)

BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)

データファイルの書き込み、読み込みの処理を行う場合、 その処理を行うそれぞれの場所で PUT命令  GET命令 を 行うのも冗長なので、 通常は関数化してそれをコールします。

今回テストデータファイルとして以下の2個のフィールドを持つファイルを想定します。

・第1フィールド:コードデータ(16バイト)
・第2フィールド:数量データ(12バイト)

 FIELD命令 は以下の様になります。
フィールドサイズをわざわざCONST命令で定義していますが、 この後でこれを有効に使います。 フィールドサイズをどこかで定義しておけば、 リテラルで FIELD命令 に記述するよりはソースがわかりやすと思います。

■書き込み関数について

データファイルに書き込む関数を以下の様に定義します。

フィールド変数に値を設定するところで、 コードデータは右側に空白を付加してサイズ分のみ設定しています。 また、数値は文字列化後、左側にに空白を付加してサイズ分のみ設定しています。

レコード番号の指定が0の場合は、ファイルの最後尾に追加書込みし、 番号が呈されている場合はその番号で上書きします。

■読み込み関数について

データファイルに書き込む関数を以下の様に定義します。

フィールド変数から値を返す変数に設定するところで、 GfTrim$ ユーザ関数で前後の空白を省いています。
レコード書込関数も読込関数もエラー処理では何もしていませんが、 エラー内容等を表示することも必要ではと思いますので、 実際のシステムで利用される方はご自身で追加してみて下さい。

尚、これらの関数を利用してテストしてみます。以下のソースにテスト処理を記述します。

このソースの実行結果は以下の図の様になります。
131
MfGetData%関数のコールをレコード番号を1から順次カウントアップして与えています。 実際のレコードが無くなった時点で戻り値としてGcFalse%が返ってくるので、 その時にWHILEループが終わります。

■実際のファイルについて

実際にTEST.DAT をMTP接続か何かでパソコンにアップロードし内部を見てみると、 1レコードの区切りとしてCR,LFコードが付加されています。 これはいわゆるテキストファイルの改行コードそのものです)
よって、ファイルのサイズはレコード数×2バイト分増えることになります。


楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】



■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社

2016年4月13日 (水)

BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)

ハンディスキャナのプログラムとして当然データを入力するわけですが、 何処に格納するかと言えば、やはりファイルとしてハンディスキャナの内部に書き込むことになります。

最近私が作成したシステムでは、 パソコンとのデータは全てデータファイル(テキストファイル)でやり取りを行うことにしました。 出庫処理などでは、作成された指示データをパソコンからダウンロードし、 そのデータに従って出庫の作業を行います。 また、入庫処理では検品チェックを行い、 ハンディに入庫処理データを登録します。 入庫処理では作業が終わった時点で、パソコンにアップロードし 後処理をパソコン側で行う様にしました。

パソコンとハンディターミナルを切り離して作業ができるので 既存のシステムにハンディターミナルのシステムを付加する場合には有効だと思います。

ハンディターミナルにはLAN接続できるものもありますので、 直接データベースにアクセスして処理を行うこともできますが、今回は見送りました。

ファイルの操作は昔のBASICと同じように  OPEN命令 でファイル番号を指定してオープン処理を行います。 データの読み書きは GET/PUT命令 で必ずレコード単位で行います。 処理後は CLOSE命令 でファイルをクローズします。

ファイルの格納先は内部Flashメモリと外部のmicroSD カードがあります。 それぞれの制約は以下の通りです。
仕様項目 内部メモリ(Flash) 外部メモリ(microSD カード)
最大ファイル数 420個 FAT32準拠
フォルダ作成 不可 可能
ファイル名の使用可能文字 英数字のみ
英字は,大文字/小文字の区別無
英数字,文字,スペース,ピリオドと
22種類の特殊文字
ファイル名の長さ制限 ファイル名:1~8文字
拡張子:1~3文字
(ファイル名と拡張子をピリオドで繋ぐ
但し、拡張子が無い場合はピリオドは要らない)
255文字
(ドライブ名およびフォルダ名を含めた場合は、259文字)
ドライブ名 Aドライブ
Bドライブ
Dドライブ


データファイルのレコード、フィールドの制約は以下の通りです。

項目 制約内容
最大レコード件数 2,147,483,647(2G)※BHT搭載メモリサイズに依存
最大レコード長(バイト) 65,535
フィールド変数サイズ(文字) 8192
フィールド個数(個) 254

■レコードについて

レコードとはデータファイルを読み書きする時の基本単位で、データ1件分のことです。 レコードは FIELD命令 でフォーマットを定義します。 1レコードの最大長は、各フィールドのサイズの合計です。

■フィールド定義について

FIELD命令 の定義は以下の様になっています。

FIELD [#]<ファイル番号>,<フィールド幅> AS <フィールド変数>
            [,<フィールド幅> AS <フィールド変数>・・・]

 <ファイル番号>:1~16の値を返す数値式
      (OPEN命令で指定したファイル番号を指定)

 <フィールド幅>:1~8192 の値を返す数値式を指定
      (対応するフィールド変数の大きさ(バイト数)を指定)

 <フィールド変数>:文字型単純変数
      (FIELD命令の前に宣言されている変数を指定)


■OPEN命令について

説明が前後しますが OPEN命令 の定義は以下の様になっています。
OPEN <ファイル名> AS[#]<ファイル番号>[RECORD <ファイル長>]

 <ファイル名>:"[ドライブ名:]ファイル名[<S>]"の書式の文字列式
     ("ファイル名"は"ファイル名称"+"."+"拡張子")
     (<S>はフィールド末尾のスペース除去オプション
      ドライブ名に"D:\"指定のみ)

 <ファイル番号>:1~16の値を返す数値式

 <ファイル長>:1~2147483647の数値型定数
     (ファイルに登録できる最大レコード数を指定:未指定は1000個)

・同時にオープンできるのはバーコード、通信デバイスと合わせて16個までです。
・ファイル長は新規にファイルをオープンする時にしか機能せず、 既存のファイルをオープンする時には無視されます。

■CLOSE命令について

CLOSE命令 の定義は以下の様になっています。
CLOSE[[#]<ファイル番号>[,[#]<ファイル番号>...]]

 <ファイル番号>:1~16の値を返す数値式

・ファイル番号を省略するとオープン済みのファイルが全てクローズされます。
・クローズすればファイル番号は再利用可能です。
・オープンされていないファイル番号を指定しても、エラーは発生しません。


■PUT命令について

OPEN命令 CLOSE命令 はファイル操作の最初と最後の処理で、 実際にデータを書き込む命令としての PUT命令 があります。
PUT [#]<ファイル番号>[,<レコード番号>]

 <ファイル番号>:1~16の値を返す数値式
      (OPEN命令で指定したファイル番号を指定)

 <レコード番号>:1~2147483647の値を返す数値式
      (最小値:1、最大値:OPEN命令で指定した最大登録レコード数)

・レコードへの書込みは FIELD命令 で定義された、 フィールド変数を介して行われます。(PUTする前にフィールド変数へ値を設定します)
・レコード番号を省略すると、現在の最大レコード番号+1の位置にレコードが書き込まれます。
・レコード番号は順番通りに指定しなくても書込みはOKで、 飛ばしたレコード番号の位置のレコードには空白が設定されます。
・レコードはテキストデータ(ASCII文字列)しか扱えないので、 数値データは STR$関数 で文字列に変換してからフィールド変数に設定します。

■GET命令について

GET命令 の定義は以下の様になっています。
GET [#]<ファイル番号>[,<レコード番号>]

 <ファイル番号>:1~16の値を返す数値式
      (OPEN命令で指定したファイル番号を指定)

 <レコード番号>:1~2147483647の値を返す数値式
      (最小値:1、最大値:OPEN命令で指定した最大登録レコード数)

・ファイル番号で指定されたデータファイルから、レコード番号で指定されたレコードを読み込み、フィールド変数にデータを設定します。
・レコードが1件もないと実行時エラーが発生します。
・レコード番号を省略したときは、1つ前のGET命令で読んだレコード番号+1の番号のレコードが読まれます。
 (最終レコードの次をGETすると実行時エラーが発生します。)
・レコード番号が最大レコード数より大きいと実行時エラーが発生します。

■各命令の順番について

データファイルを扱う命令は基本的に以下の様な順番で行います。

(1)フィールド変数の宣言
(2) OPEN命令 
(3) FIELD命令 
(4) PUT命令 
(5) GET命令 
(6) CLOSE命令 

実際はこの順番でなくても良くて、PUT命令しかなかったり、GET命令だけの処理かもしれません。

以下の簡単なソースで例を示します。

このソースの実行結果は以下の図の様になります。

121
フィールド変数REC2$には文字列を多目に設定していますが、 あふれた分は無視されていることが分かります。
また、REC3$には文字列を少な目に設定しましたが、 GETした結果は同じ文字列が返ってきました。 データファイルの中身には足りない分には空白が入っているようですが、 実際に読みだすと削除されてくるようです。
もし空白も読み出したいのであれば、 REC3$の設定で後ろの方に空白文字列を付加する必要があります。

楽天市場

【DENSO】ハンディターミナルBHT-1306BWB+USB通信ユニットCU-1321+ACアダプタAD2+標準バッテリBT-130L-C【送料無料・代引手数料無料】【02P05Nov16】

価格: 208,980円
(2016/11/26 22:01時点 )


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

2016年4月12日 (火)

BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)

今までは何となく OUT命令  WAIT命令 を使ってきましたが、 ここで関連するI/Oポートの説明を行いたいと思います。 I/Oポートとは入力・出力ポートの略称で、 ハンディのCPUから見て外部装置に該当する キーボード、 LEDランプ、ブザーなどを制御するためのポート(外部メモリの様なもの)です。 I/Oポートは制御対象毎に別々のアドレスが割り当てられていて、 それへの入力命令が INP関数 で、 出力命令が OUTステートメント です。 また、I/Oポートの状態が指定状態になるまでプログラムを止めておく  WAITステートメント があります。

以下に私がプログラムで使用したポートについて一覧を記します。 ここに上げた以外のポートは各装置のマニアルを参照して下さい。
ポートNO
(HEX)
bit 制御対象 R/W データ 初期値
.pnEvent
 (0000)
0 キーボードバッファ R - 0 データ無 -
.pvEvKeyOn 1 データ有
1 バーコードバッファ - 0 データ無 -
.pvEvBarOn 1 データ有
2 トリガスイッチ - 0 OFF -
.pvEvTrgOn 1 ON
3 受信バッファ - 0 データ無 -
.pvEvtCmOn 1 データ有
4 TIMEA関数 - 0 関数の値が0以外 -
.pvEvTma0 1 関数の値が0
5 TIMEB関数 - 0 関数の値が0以外 -
.pvEvTmb0 1 関数の値が0
6 TIMEC関数 - 0 関数の値が0以外 -
.pvEvTmc0 1 関数の値が0
7 CS(CTS)信号 - 0 常に0を返す -
.pvEvCsOn 1 -
.pnLEDCtrl
 (0001)
0 表示LED(赤) W - 0 消灯 0
.pvLEDRed 1 点灯
1 表示LED(緑) - 0 消灯 0
.pvLEDGrn 1 点灯
2 表示LED(青) - 0 消灯 0
.pvLEDBle 1 点灯
.pnFont
 (6080)
0 表示フォント R/W .pvFtStd 0 標準フォント 0
.pvFtSmall 1 小フォント
サイズ指定(16,24,30,40)
.pnKeyEnt
 (60B0)
0 キー入力方式 R/W .pvKyNm 0 数字入力 0
.pvKyAlpNm 1 英数字入力
.pnKeyMd
 (60B1)
0 キー入力状態 R/W .pvKMNm 0 数字 0
.pvKMAlp 1 英字

例として先ずは、WAIT命令について説明します。
WAIT <ポート番号> , <AND パターン>[,XOR パターン]

 <ポート番号>:入力ポート番号を指定
 <AND パターン>:チェックしたいビットを1 にして、AND パターンに設定

ポート番号で指定された入力ポートの内容を読込し、 AND パターンとXOR パターンで指定された値になるまで、 ユーザプログラムをこの命令で待つ様にします。

指定されたパターンになるまで命令が終わらないので、 指定値が間違っていると、命令から帰って来なくなり、 プログラムが止まってしまいますので、注意して下さい。
以下のソースがWAIT命令の使用例の関数なのですが、 ポート(0000)の0ビット目が1になるまで待っています。 WAIT命令を抜けてきた時点で、キーボードバッファにキー入力が在ることになるのでキーデータを1文字取得しています。

次は、INP関数について説明します。
INP(<ポート番号>)

 <ポート番号>:入力ポート番号を指定

INP関数が返す値は整数型になります。 I/Oポートのデータは1バイトなので、整数型では最大でも255となります。
WAIT命令のところの関数の例をINP関数で置き換えると以下の様になります。
(ちょっと冗長すぎますね)

次は、OUT命令について説明します。
OUT <ポート番号>,<データ>
 <ポート番号>:入力ポート番号を指定  <データ>  :ポートに出力するバイトデータ(0~255)

I/Oポートに割り振られていないポート番号を指定すると無視されます。 また、使用されているポート番号でも意味の無いBIT位置にデータを設定しても無視されます。

最後にTIMER命令について説明します。
書式1:(タイマ値を参照するとき)
  W% = TIMEA
  W% = TIMEB
  W% = TIMEC
  (W%は宣言済みとする)

書式2:(タイマ値を設定するとき)
  TIMEA = <カウント値>
  TIMEB = <カウント値>
  TIMEC = <カウント値>

  <カウント値>:指定可能範囲は0~32767、単位は100ms
タイマは値を設定されてからカウントダウンが始まり、 カウント値が0になった時点で動きを止めます。 例えばある時間の待ちを作る場合に、カウンタに値を設定し、 カウンタを読込をループで行い その値が0になるのを待ちます。
ソースの例としては以下の様な感じです。

この方法ですが、以下の様にしても同じことができます。

尚、.pnEventなどのシステム定義定数は 「BHT-BASIC定義ファイル(BHTDEF.INC)」をプログラム先頭でインクルードする必要があります。 (このファイルですがDENSOの会員登録と装置の製品番号登録が必要なはずです。 DENSOのホームページからダウンロードして下さい)

楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】



■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社