おすすめ本

最近のトラックバック

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

AccRanking

Ad

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

2016年4月12日 (火)

BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法

DENSOのハンディターミナルBHT-1300へのプログラム転送は「BHT-BASIC4.0 Creator」を使って行えます。 この場合、通信方法としてRS232C通信などを選択します)

しかし「BHT-BASIC4.0 Creator」がインストールされていないパソコンからプログラムを転送する場合、 BHT-1300の機種の様に直接USBケーブルでMTP接続で処理ができればいいのですが、 赤外線通信でUSBユニットでの通信しかない場合、DENSOさんの推奨ではWindowsの 「ハイパーターミナル」を使う様になっています。
Windowsの「ハイパーターミナル」は古いソフトで、 Windows7では標準では存在しないので、それに代わるターミナルソフトとして普及している 「TeraTerm」を利用します。(Vectorの以下のURLでダウンロードできます)

http://www.vector.co.jp/soft/win95/net/se320973.html

インストールは簡単で、メッセージに従えば特に問題無くできます。

以下に、「TeraTerm」を使った転送手順を記します。
■ActiveUSB-COMポートドライバの確認

パソコンにDENSOの「ActiveUSB-COMポートドライバ」がインストールされていることを確認します。 更に、USBで光通信ユニットと接続します。 (既に、光通信ユニットを使ってパソコンからデータファイルを転送できていればインストール済みです)
■ハンディをファイルダウンロード待ちにする

光通信ユニットにハンディターミナルを装着し、 「1」+「SF」キーを押しながら電源ボタンを押して、電源を入れます。 「SYSTEM MENU」が表示されますので、「2:DOWNLOAD」を選択します。 その後「DOWNLOAD」メニューが表示されますので、「1:FILE」を選択します。
■TeraTarmを起動し、新しい接続開始
TeraTarmを起動すると最初に新しい接続の開始要求が行われます。 そこで、以下の図の様に「シリアル」の方を選択し、 「ポート」を「DENSO WAVE Active USB-COM Port」に設定します。
Set1

■TeraTarmのUSB-COM Portの設定
メニューの「設定(S)」⇒「シリアルポート(E)...」を選択すると以下の設定画面が表示されます。 Set2
項目名 設定値
ポート COM5(ActiveUSB-COM)
ボー・レート 115200
データ 8 bit
パリティ none
ストップ 1 bit
フロー制御 hardware


■TeraTermからのファイル送信
メニューの「ファイル(F)」⇒「転送(T)」⇒「YMODEM」⇒「送信(S)...」を選択すると以下のファイル選択画面が表示されます。 Set4
ここでは、ファイル名「HDY.PD4」を選びます。

その後、以下の様な転送中の画面が表示されます。
Set5
ハンディターミナル側も受信中の画面が表示されます。 ファイルの転送が終わるとハンディターミナル側ではブザー音が鳴り、 「Completed」が表示されるはずです。 これで、ハンディターミナル側は完了ですので、 電源を切って電源再投入で新しいプログラムが起動されるはずです。

「TeraTerm」側は以下の gC が表示されますが、 この状態で「ファイル(F)」⇒「接続断(D)」で接続を切ってください。
Set6

楽天市場
転職を本気で考えている方向けのプログラミングスクール!【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: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等)とのデータファイルの送受信について


2016年4月 9日 (土)

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

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

関数定義 引数 戻り値
指定された文字列を分離文字列で分解
Sub GsSplit$(
Byval pstrSrc$,
Byval pstrSplit$,
Byref parr$())
pstrSrc$:分離元文字列
pstrSplit$:分離文字列
parr$:分解先配列
 
指定文字で埋めて、右詰又は左詰で返す
Function GfPadd$(
Byval pintMode%,
Byval pstrBuf$,
Byval pintLen%,
Byval pstrPadChar$)[255]
pintMode%:左詰(GcTrue%),右詰(GcFalse%)
pstrBuf$:文字列
pintLen%:最終文字列長(最大255)
pstrPadChar$:埋める文字
GfPadd$:結果文字列


これらの関数の実行ソースは以下の様になります。
これを実行すると以下の様な表示になります。
102

楽天市場

【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:文字列を扱うユーザ定義関数についてその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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社

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

文字列を扱うユーザ定義関数としてよくある感じのものを作成してみました。
関数定義 引数 戻り値
半角空白文字列生成
Function GfSpc$(byval pintCnt%)[128]
pintCnt%:文字数を指定 GfSpc$:空白文字列
右側半角空白削除
Function GfRTrim$(pstrValue$)[255]
pstrValue$:対象文字列 GfRTrim$:結果文字列
左側半角空白削除
Function GfLTrim$(pstrValue$)[255]
pstrValue$:対象文字列 GfRTrim$:結果文字列
前後の半角空白削除
Function GfTrim$(pstrValue$)[255]
pstrValue$:対象文字列 GfTrim$:結果文字列
文字列繰り返し
Function GfString$(pintSize%, pstrChr$)[255]
pstrChr$:対象文字
pintSize%:文字数(最大1~255)
GfString$:結果文字列

以下のソースが5個の関数を宣言しています。
エラー処理を各関数に入れましたが、必要ないかもしれません。 また、引数の文字列の長さチェックは行っていませんので、必要ならば追加して下さい。

これらの関数の実行ソースは以下の様になります。
これを実行すると以下の様な表示になります。
101

楽天市場

【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:文字列を扱うユーザ定義関数についてその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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)

以前、ユーザ定義関数の値渡し・参照渡しについて記事にしましたが、 抜けていた項目もありますので、再度紹介します。

ユーザ定義関数を作成する場合に、何がしかの引数(ひきすう)を持つことはよくあります。 この引数の渡し方には、値渡し(call by value)と、 参照渡し(call by reference)の2種類があります。

値渡しとは、引数で渡された値を関数内では参照・変更できるが呼出し元の変数に影響を与えない。
参照渡しとは、引数で渡された値を関数内で変更した場合、呼出し元の変数に影響を与えます。 言い方を変えれば、関数内で参照する変数は、 呼出し元の変数を直接アクセスしています。 C言語的に言えば、参照つまり変数のポインタを引数で渡すことでしょうか。

よく関数は独立性を持たせるために、値渡しが推奨されますが、参照渡しには参照渡しの良さもあります。 値渡しの値そのものは関数を呼出す時に、ユーザ定義関数用スタックに格納されます。 (スタックなので積むと表現した方がしっくりきますが)
渡される値が文字列で非常に長い場合などは、スタックの消費が多くなりますし、 値そのものをスタックにコピーされる時間が多くかかります。 これを抑えるために参照渡しにすることがあります。

また、配列データを引数で渡す時には値渡しではできなく、参照渡しにしなければなりません。 配列データは多くのメモリ領域を必要とするため、BHT-BASICではメモリもそんなに多くないので、 参照渡しの仕様にしたのだと思います。

以下のソースがその例なのですが以下の4個の関数を宣言しています。
・TestByval の名前で値渡し関数
・TestByref の名前で参照渡し関数
・TestByval2%% の名前で値渡し値を返す関数
・TestArrByref の名前で配列・参照渡し関数


このソースの実行の様子は以下の様になります。(最初のキー入力待ちまでの表示)
91
値渡しの関数ではWK%が変更されないことが確認できます。 また、参照渡しの関数ではWK%が変更さたことが確認できます。

その後、配列データの変更がされたことを確認する表示が以下の様になります。
92

楽天市場

転職を本気で考えている方向けのプログラミングスクール!【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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

2016年4月 8日 (金)

BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)

前回はBHT-BASICのキー入力の INPUT 命令はいまいち使いにくいのを記事にしましたが、 それを補うために汎用的な数値用キー入力関数を作ってみました。

以下のソースがその関数なのですが GfGetNum% の名前で、 引数は入力文字列を返す変数と、入力桁数を指定する変数があります。 この関数の戻り値としては[ENT]キー、[F1]キーのどちらで戻ったかを示す整数値フラグです。

実際のプログラムの実行はラベル Main の次からです。 プログラムの中で使用されるユーザ定義関数は、 使用される位置よりも前に宣言されていなければなりません。 そのため、実行開始がユーザ定義関数より下の方に位置しています。

この件ですが、一般的なコンパイラであれば、同じソース内のローカルなユーザ定義関数の宣言を上の方で出来る様にして、 ユーザ定義関数よりも前に実行している行が在っても良いようにしてほしいものです。 共通関数的なユーザ定義関数は常にソースの最初の方に持ってこないといけないのでソースの位置制限があるのは問題だと思います。 (もっとも、共通関数は別ファイルにして関数定義のみを宣言させる方法もありますが)

このソースの実行の様子は以下の様になります。
81
この関数ですが、[F1]キー戻りはありますが、F2,F3,F4での戻りも必要かとは思いますので、 この関数を利用される場合は、それらの拡張をしてみてください。


楽天市場

転職を本気で考えている方向けのプログラミングスクール!【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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

2016年4月 7日 (木)

BHT-BASIC4.0:キー入力について(BHT-1300)

今回はBHT-BASICのキー入力について説明したいと思います。
私が使った BHT-1306B ですが、 商品コードなどはバーコードでスキャンすれば入力できますが、 数量などを入力するにはキー入力が必要になります。

以下のソースは、画面モードを「漢字モード」に設定し、キー入力を数字入力方式に設定して 文字列入力を行います。 カーソル表示の制御は LOCATE 命令で、ブロック表示になる様に行います。

このソースの実行の様子は以下の様になります。
71
この場合、入力はずっとできるのかと思いきや、40文字を入力したところでカーソルが止まります。 BHT-BASICでは INPUT 命令では文字変数の最大文字列長までしか入力できない様です。

当然以下の様に文字列変数の領域を4文字までとすれば、4文字までしか入力できません。

この INPUT 命令の仕様は便利なように思いますが、 キー入力の途中で何かを行いたい場合は別の方法が必要だと思います。


このソースでは桁数が短い場合は問題無く数値入力ができますが、 下図の様に桁数を長く入力すると以下の実行時エラーが発生します。
72
エラーコード(&H06)(演算結果が許容範囲をこえています。)
この結果から業務プログラムでは INPUT 命令は使えない様に思います。
ではどうすればいいのかは今後の記事にご期待ください。

楽天市場

転職を本気で考えている方向けのプログラミングスクール!【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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社

BHT-BASIC4.0:画面への表示について(BHT-1300)

今回はBHT-BASICの画面への表示について説明したいと思います。
私が使った BHT-1306B ですが、液晶画面の仕様は以下の様になっています。

・ドット数:240(横)×320(縦)ドット

・表示文字数:(文字フォントサイズと画面モードで変わります)
フォントサイズ 画面モード 表示文字数(桁×行) 文字ドット数(横×縦)
標準 ANKモード 20桁×20行 12×16
標準 漢字モード 8桁×10行(16桁×10行) 30×30(15×30)
ANKモード 20桁×20行 12×16
漢字モード 10桁×13行(20桁×13行) 24×24(12×24)
40 ANK・漢字 6桁×8行(12桁×8行) 40×40(20×40)
30 ANK・漢字 8桁×10行(16桁×10行) 30×30(15×30)
24 ANK・漢字 10桁×13行(20桁×13行) 24×24(12×24)
16 ANK・漢字 15桁×20行(30桁×20行) 16×16(8×16)

画面モードの切り替えはSCREENステートメント(命令)で行います。
また、フォントサイズの指定は、 OUT命令により&H6080のアドレスに値を出力することで行います。
ソース的には以下の様な感じです。


そこで各モードとフォント設定でどの様な表示なるのかを試してみました。

■標準フォント・ANKモード


ここで、FOR文が出てきましたが、 このステートメントはいろんな言語で既によく使われていますのでFOR文自体の 説明はしませんが、 20文字の文字列を20回画面に表示を行います。 実行結果は以下の様になります。
61


■標準フォント・漢字モード


62


■小フォント・ANKモード


63
シミュレーションでの表示ですが、「標準フォント・ANKモード」と同じになりました。

■小フォント・漢字モード


64

■40ドットフォント


65

■30ドットフォント


66

■24ドットフォント


67
この最後の表示は、「小フォント・漢字モード」と同じ結果になります。

私がBHT-1306Bを使ったシステムを作成した時には、 漢字の文字数などから判断して「小フォント・漢字モード」の表示を採用しました。

楽天市場

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


■関連記事
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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

BHT-BASIC4.0:演算子について(BHT-1300)

今回はBHT-BASICの演算子について説明したいと思います。
BHT-BASICには、算術演算子、関係演算子、論理演算子、関数演算子、文字列演算子と 普通の言語にはだいたいそろっている演算子があります。

■演算子の優先順位
優先順位 演算子名称 演算子
1 括弧 ( ) 括弧の中が優先して演算
2 関数演算子 組込み関数,ユーザ関数の実行
3 算術演算子 ※演算子の中で更に優先度がある
優先順位 演算 演算子
1 負号 -
2 乗算、除算 * , /
3 剰余演算 MOD
4 加算、減算 + , -
4 関係演算子 = , <> , >< , < , > , <= , >= , =< , =>
5 論理演算子 ※演算子の中で更に優先度がある
優先順位 演算 演算子
1 否定 NOT
2 論理積 AND
3 論理和 OR
4 排他的論理和 XOR
6 文字列演算子  

演算子は特に目新しいものは無く、よくあるものばかりですので、 各演算子毎に細かくは記しませんが、少し注意するものをピックアップします。

■算術演算子・剰余演算(MOD)

MODは割り算の余りを返すものです。 以下の例の様に数値は四捨五入し整数にしてからMOD演算が行われます。

Basic51

■オーバーフローとゼロによる除算

演算結果がオーバーフローしたり、ゼロで割った場合には実行時エラーが発生します。 以下のソースはその例を示します。

Basic52

■関係演算子について

関係演算子は2個の式を比較して、真「-1」または偽「0」を返します。 この値を使って、プログラムの流れを制御できます。 以下のソースは、IF文を使った各関係演算子の例を示します。

また、関係演算子の計算結果を変数に入れて使うこともできます。

Basic520


■論理演算子を式で使う

論理演算子は、複数の関係演算子での判定結果を関連付ける演算子です。

Basic53

■文字列演算子について

文字列の演算では結合しかなく、+マークで行います。 また、数値の様に文字列の比較ができます。

Basic54

楽天市場

■関連記事
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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社

2016年4月 6日 (水)

BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)

ハンディターミナルの開発言語であるBHT-BASIC4.0についての4回目になります。 今回はユーザ定義関数について説明したいと思います。

■ユーザ定義関数

ユーザ定義関数とは、BHT-BASICが既に備わっている関数ではなく、ユーザが任意で作成する関数のことです。 ユーザが定義できる関数には大きく分けて2種類のものがあり、 DEF FN及びFUNCTIONで定義される値を返す関数と、 SUBで定義される値を返さない関数があります。
このうちFUNCTION関数SUB関数DECLAREステートメントで宣言することで 別モジュールで使用することができます。

DEF FN関数及びFUNCTION関数には返す値により 関数の最後にデータ型を示す記号を付加します。
ユーザ定義関数のデータ型 DEF FN関数の書式 FUNCTION関数の書式
整数型 FN関数名% 関数名%
長整数型 FN関数名& 関数名&
実数型 FN関数名 関数名
文字型 FN関数名$ 関数名$
文字型
(文字列長指定)
FN関数名$(・・・)[NNN]
(NNN:に文字列長指定)
関数名$(・・・)[NNN]
(NNN:に文字列長指定)

値を返す関数は、私は専らFUNCTION関数を使い、DEF FN関数は殆んど使っていません。 なぜならば、DEF FN関数ではSTATIC変数が使えませんし、 他のモジュールから参照することができないからです。

尚、値を返さない関数は当然のことSUB関数で宣言します。

関数には値を渡さない場合は引数の宣言をしませんが、値が必要な場合には関数の宣言のところで引数の宣言を行います。 この引数の渡し方には、値渡し(call by value)と、参照渡し(call by reference)の2種類があります。

■値渡し・参照渡し

以下のソース「MODULE1.SRC」を見てください。


これを実行すると以下の表示の様になります。 Basic41
FUNCTION関数の宣言はFUNCTIONで始まり、END FUNCTIONで終わります。 関数の引数は仮引数名で宣言し、値渡しはBYVALキーワードで宣言し、 参照渡しはBYREFキーワードで宣言します。 BYVALBYREFが無い場合はデフォルトで値渡しになりますが、 引数の意味合いをはっきりさせるため、必ずこのキーワードを付加すべきだと思います。

関数の戻り値は関数名に値を代入することで戻します。
このソースでは、Func1%は値渡し、Func2%は参照渡しの例です。

楽天市場

■関連記事
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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社

BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)

ハンディターミナルの開発言語であるBHT-BASIC4.0についての3回目になります。 前回は変数宣言について説明しましたが、追加でいくつかの内容を記します。

■変数宣言されない変数

コンパイラの指定で「オプション」の「宣言されていない変数をエラーにする」チェックをOFFすると変数の宣言が無くても、 変数を初めて使用した時点で変数が宣言されたことになります。
以下のソース「MODULE1.SRC」を見てください。


これを実行すると以下の表示の様になります。 Basic31
コンパイラはソースの先頭からスキャンするため、 最初に関数Test1の中のWK$が出てきた時に、自動変数として宣言します。 この変数はTest1の中でのみ有効です。

Test1のすぐ下でWK$への値に代入が出てきた時点で、 このモジュール内の変数として、WK$が有効となります。

関数Test2の中でWK$を使用していますが、 これは直前のモジュール変数を参照することになります。

上記のソースを実行すると、考え方としてはCall Test1から走るような感覚です。
この例でも分かるように、自動変数を許可するとどこで変数の値が変化してしまうのかがデバッグ時に混乱してしまいます。 それで通常は、コンパイラオプションの「宣言されていない変数をエラーにする」チェックをONにして、変数は必ず宣言する様にします。

■文字列変数について

今まで気にせずに文字列変数を宣言してきましたが、 実は文字列の格納できる長さについての制限があります。 以下のソースを見てください。

モジュール変数を例にしていますが、最初はWK1$として変数名そのままで宣言しています。 この場合、文字列として格納できる最大の文字数は 40 までです。 暗黙の了解として文字数のMAXを宣言しなければ、40なのです。これは忘れがちなので注意して下さい。
(配列変数の場合は20文字がデフォルトです)
また、この文字数の最大を超えて値を設定すると実行時エラーとして「0Fh:文字列長が範囲外です。」が発生します。 以下のソースでも7行目でエラーが発生します。

さて、2番目の宣言WK2$[10]ですが、 これはWK2$の文字数が最大10であることを宣言しています。 そこで以下のソースの中で7行目をコメント行にして実行すると、当然13行目でエラーが発生します。


ちなみに、文字列の文字数宣言で最大は8192文字までです。

文字列処理はエラーが発生しない様に、文字数宣言を超えない様に文字数を大きくとるか、 または、最大文字数を超えない様な文字列連結の関数を作るかするしかないと思います。

楽天市場

■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
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-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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社