Rakuten

  • 楽天ダウンロード

おすすめ本

天気予報

最近のトラックバック

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

カウンタ

VC

admax

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

2017年6月21日 (水)

BHT-BASIC4.0:[BS/C]キー入力ではまった件について

BHT-BASICのシステムで処理の実行を行うかどうかを、 [BS/C][ENT]キーで処理を行っているのですが、 もちろん[BS/C]キーは処理中断で、[ENT]キーは処理続行としています。

処理を中断しようとして[BS/C]キーを押すのですが、中断できない場合があるとの現象が発生しました。

ソース的には以下の様な組み方で、[BS/C][ENT]キーのどちらかのキーのみの反応行う様にしています。


DENSOさんのサンプルプログラムを見ても、 処理の中断の判定は「バックスペース(&H08)」のみで処理しているので、 深く考えずに「BS」のみで中断処理をしていました。

しかし、たまに「BS」が利かない場合があるとのことで、 バグの連絡を受けたので、少し調べてみました。 なんと、「BHT1300_Programmers_Manual_J1.pdf」にはちゃんと説明がされていました。 「付録Eキーボードとキー番号」のページからの引用ですが、以下の通りです。

==========================
[BS/C] *1 *2

*1 BSはバックスペース(08h)、CRはキャリッジリターン(0Dh)、Cはキャンセル(18h)、SPはスペース(20h)コードを表します。

*2 一定時間(デフォルト500ms)以上長押しでキャンセル(18h)コードを返します。
==========================
[BS/C]キーの長押しだとキャンセル(18h)コードが返ってくるのでした。

そこで、中止の判定をキャンセル(18h)コードでも行う様に変更し、バグを解消しました。



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


デル株式会社

2017年6月17日 (土)

BHT-BASIC4.0:ハンディBHT-1306Bへの送信エラー(Active USB-COMポートドライバ)

私事なのですが、最近更新したシステムで客先より「データファイルをハンディへ送信できない」との連絡が在りました。
1か月以上は問題なく稼働していたのですが、ある日送信できなくなった様です。 その日の午前中には送信できたのですが、 午後での送信でエラーが発生しました。

その日の1回目は送信できたが、 2回目には送信できないとはプログラムのエラーでもなさそうですが、 原因がすぐには分かりませんでした。
DENSOにも問い合わせましたが、いままでそんな事例は無いとのことで、 原因がはっきりしませんでした。

よくよく客先に伺ってみると、 去年の2016年にはOSがWindows7だったものをWindows10にアップされたとのことでした。
(マイクロソフトが無償でWindows10へのアップを推奨していたので、お客様もアップされた様です)

DENSOの「Active USB-COMポートドライバ」を確認すると、 最新バージョンが「2.1.0.0」でWindows10に対応となっていました。 去年の「2.0.1.8」からは既にWindows10対応だった様です。

客先のバージョンは「2.0.1.5」でWindows8.1までの対応だったので、 早速、バージョン「2.1.0.0」のものを 再インストールしてもらい、通信が出来る様になりました。

Windows8.1までのUSB-COMドライバで、 OSがWindows10にアップしても動いていたことも不思議なのですが、 途中までは何とか動いていたが、ついに限界が来たんでしょうか?
とにかく、ドライバのバージョンアップで事無き得て良かったというところでしょうか。 USB-COMドライバが以前のドライバのままで、 人知れずWindows10にOSがアップされていてハンディへの通信が出来なくなった場合には、 ドライバのアップをお勧めします。

■DENSO
Active-USB-COMポートドライバ


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



デル株式会社

2016年11月29日 (火)

BHT-BASICの入門編の本について等

今までBHT-BASICについてこのブログでいろいろ書いてきましたが、 このBASICでハンディターミナルを使ったシステムの開発する当初は、 この言語について全く知識が在りませんでした。

そこで、入門書的なものが無いかを調べたのですが、ネットでも全く検索できませんでした。
だれしも初めての言語での開発を行う場合は、 まず言語の形態から学び始めてから どの様にプログラムするのが最適なのかを勉強するはずです。 DENSOさんもこの言語の開発元なので、 入門と言うかプログラムの基本的組み方の本を出してほしいものです。

このBHT-BASICですが命令語をみると昔のBASIC、おそらくMS-BASICを元にしていると思われます。 30年以上前、まだNECのパソコンのPC-8001,PC-8801,PC-9801などが全盛期の時代、 それらのパソコン上にはBASICが搭載されていました。 そのBASICはMicrosoftのMS-BASICが元になっていました。 (この辺りの話は確かでは無いかもしれませんが、その様に記憶しています。)

思い起こせば、PC-8001MkⅡ・PC9801などでよく制御関係のシステムを作成したものです。 昔のパソコンはBASICから全てのI/Oを制御できたので、結構細かい処理もやれたのです。 こんな昔語りは今更何の自慢にもならないですが・・・

昔のBASICの本としては以下の様なものあります。 BHT-BASICとは言語仕様的に拡張されているのですが、基本的な部分は参考になると思います。



いずれにしてもBHT-BASICのプログラムを走らせるハンディターミナルは 型番毎に表示機能・通信機能などが異なるので、その機種に対応したDENSO提供の取扱説明書は 熟読すべきです。

また、プログラミングのマニュアルであるDENSO提供の「BHT1300_Programmers_Manual_J1.pdf」は全て目を通しました。 それでも足りない分はDENSOのサイトのサンプルプログラムを参考にしました。

後は試行錯誤して実際に組んでみてだとは思います。

中古パソコン 【Windows7】 [T14B] 東芝 dynabook R731/B Core i5 2520M 2.5GHz 2GB 250GB 13.3ワイド DVD Multi Win7 Pro 【中古ノートパソコン】【ノートパソコン】【PC】【アウトレット】【中古】【1ヶ月保証】【RCP】【おすすめ】

価格: 20,800円
(2016/11/24 11:57時点 )

感想:1件

2016年11月 7日 (月)

BHT-BASIC4.0:配列のリサイズについて

BHT-BASICでは、直接配列のサイズを変更することはできません。 VisualBasicの様に Redim命令 があればいいのですが、  DIM命令 しかなく配列のサイズを変更する命令を持っていません。

配列のサイズ変更を無理やりやろうとすれば、 配列を削除する ERASE命令  DIM命令 を組み合わせて行うしかありません。

 ERASE命令 は関数の引数として  BYREF で渡された配列を操作することが不可能なので、  ERASE命令  DIM命令 は同じところでやります。

以下にサンプルのソースを記します。

このプログラムは少し面倒なのですが、 拡張したい配列と同等のワーク配列を用意し、 元の配列のサイズを取得後、ワーク配列に内容を退避した後で、 元の配列の大きさを拡張し、 再度、ワークファイルからの逆コピーを行っています。

配列の拡張は結構面倒なので、他の方法としては、 配列の代わりとしてデータファイルを用いて、 エミュレートしてやった方がすっきりするかもしれません。

次回は、データファイルで行う方法を考えてみたと思います。

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


デル株式会社

2016年6月 7日 (火)

BHT-BASIC4.0:データファイルのFIELD文での注意点

私事なのですが、最近収めたシステムで客先より 「エラーコードが3DHが表示されてデータが登録できない」との連絡在りました。  3DH のエラーコードの内容は取説より

「3Dh:FIELD ステートメントで指定されたフィールド幅が、ファイルと異なっています。」
とのこと、こちらでいくら再現しようとしてもエラーが発生しませんでした。

そこで客先で該当するデータファイルの情報をシステムメニューから表示してもらったところ、 データファイルのフォーマットが昔のままで、そのためにエラーが発生している様でした。
(最初に納入したプログラムで動作させてそのままにしておいて、 フォーマットが変更された最新のプログラムを動作させて為に発生しました)

この FIELD命令 ですが、 既に存在するファイルと違っている場合に新しい  FIELD命令 では機能せずにエラーが発生します。

以下に FIELD命令  でエラーが発生するソースを記します。 最初の FIELD命令 で作成された 「TEST.DAT」は2個のカラムを持っていますが、 2度目の FIELD命令 でエラーが発生します。

このプログラムを実行すると以下の画面になります。 060700001h
エラーコードが「3D」で、  FIELD命令 でのエラーであることがわかります。

データファイルのフォーマットが変更された場合には、 手動でハンディターミナル内部の該当ファイルを削除するか、 もしくは、プログラムで判定して削除してから、 再度の FIELD命令 を行う必要があると思います。

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


中古パソコン 【Windows7】 [T14B] 東芝 dynabook R731/B Core i5 2520M 2.5GHz 2GB 250GB 13.3ワイド DVD Multi Win7 Pro 【中古ノートパソコン】【ノートパソコン】【PC】【アウトレット】【中古】【1ヶ月保証】【RCP】【おすすめ】

価格: 20,800円
(2016/11/24 11:18時点 )

感想:1件

2016年4月29日 (金)

BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について

Bluetooth通信を備えたハンディスキャナではその通信でプリンタなどへのデータの送受信ができます。
■Bluetooth機器との送受信について

Bluetooth通信で外部機器とデータの送受信を行う場合は、以下の一連の命令の実行で行います。

・OPEN命令によりBluetoothデバイスファイルをオープンする。
 (リモートデバイスへのシリアルポート接続が行われる)
・シリアル通信処理を行う。
 (送信処理:PRINT #命令
 (受信処理:INPUT$関数LOC関数EOF関数などを使用)
・CLOSE命令によりBluetoothデバイスファイルをクローズする。

Bluetoothデバイスのオープンの OPEN命令 について説明します。
[書式]
 OPEN "COM4:M, サービスプロファイル [, [デバイスアドレス][, [パスキー][, [タイムアウト][, [セキュリティモード]]]]]" AS [#] ファイル番号
<引き数>
・[COM4:M]は自分自身をマスタとして接続先をスレーブとする
・サービスプロファイル
 ■SDAP:サービス検索
 ■SPP:シリアルポートプロファイル
 ■DUN:ダイヤルアップ接続プロファイル

・[デバイスアドレス]:Bluetooth デバイスアドレス
  12 文字の16 進数文字列で指定

・[パスキー]:Bluetooth パスキー

・[タイムアウト]:接続が完了までの最大待ち時間(1~255秒)

・[セキュリティモード]:接続時のセキュリティモード
  1:セキュリティなし
  2:セキュリティあり
  3:セキュリティあり、暗号化あり
  4:シンプルペアリング

上記の他の詳しい内容については各BHTの取説を見てください。
■オープン指定の例
OPEN "COM4:M,SPP,112233AABBCC,,30,1" AS #2

この例では自分自身をマスタとして、 シリアルポートプロファイルを使用してBluetooth 通信行います。 Bluetooth デバイスアドレスは 112233AABBCC で、接続タイムアウトは30秒です。
このオープン例を使ったプログラムは以下の様になりますが、 各機器に合わせてシリアル送受信処理は組む必要があります。
■Bluetoothデバイスアドレス取得について

対応する機器のアドレスが前もってわかっているのであれば、 直接そのアドレスをプログラムに埋め込んでもいいのですが、 実際の場合は機器交換などもありますので、 Bluetoothデバイスから通信で取得できた方がいいと思います。

Bluetoothデバイスアドレス取得を行う簡単なプログラムを以下に示します。


Bluetooth機器が複数あった場合にはその台数分のアドレスが検出できます。 但し、1台だけに絞る場合は、対象Bluetooth機器のみを電源投入し検出すればできるとは思います。
転職を本気で考えている方向けのプログラミングスクール!【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:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


デル株式会社

VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

以前、ハンディターミナル側から送受信を行う関数等の記事を掲載してきましたが、 ハンディターミナルの相手側としてのパソコン側のプログラムが必要になります。

パソコン側のファイル送受信用のツールがDLLの形でDENSOさんの方から提供されています。 以下の所にDENSOのURLを貼っておきますので、そちらを参照下さい。

・BHT-BASIC4.0転送ユーティリティ

このユーティリティを購入して、送受信を行うパソコンにライセンス登録が必要です。 プログラムのインストールなどは無く、必要なDLL等を実行プログラムのフォルダに登録します。 この辺りのことは購入後、取説をDENSOからダウンロードし確認してみて下さい。
■VB.NETプログラムの場合の必要なDLL

VB.NETのプログラムの実行フォルダ内に以下のDLL等が必要です。
・Bhtprtdm.dll  -- BHT-BASIC4.0 転送ユーティリティライブラリ
・Bhtprt.ini    -- BHT-BASIC4.0 転送ユーティリティライブラリ設定
・Ymodem_pd.dll -- YMODEMプロトコルライブラリ
・BHTIr_pd.dll  -- BHT-Irプロトコルライブラリ
実際の転送処理で呼出すのはBhtprtdm.dllで、その中の送受信関数(ExecProtocol)を呼出して処理をさせます。
Declare Function ExecProtocol Lib "Bhtprtdm.dll" (_
	ByVal hWnd As IntPtr, _
        ByVal Param As String, _
        ByVal FileName As System.Text.StringBuilder, _
        ByVal Protocol As Integer) As Integer
[引数]
 hWnd	 :DLLを呼び出すウィンドウハンドルを設定
 Param	 :ファイル転送の動作を制御するオプションの文字列
          (1つのファイル名と複数のオプションをスペースで区切った文字列)
 FileName:転送したパス名/ファイル名を格納
 Protocol:プロトコル番号を指定

[戻り値]
 Integer型の値で、0(Er_NOERROR)はエラー無しで、
 0以外は伝送エラー在り
 (エラー内容はDENSO提供のBASICソースを参照)

上記のほかにいろんな指定がありますが、それは各BHTの取説を見てください。
■オプションの文字列
オプション 内容 デフォルト
【伝送速度】
     +B
    
"+B9600"     9600 bps
"+B19200"   19200 bps
"+B38400"   38400 bps
"+B57600"   57600 bps
"+B115200" 115200 bps
"+B230400" 230400 bps
"+B460800" 460800 bps
YMODEM時
"+B115200"

BHT-Ir時
"+B9600"
 
【通信ポート】
 +Pn
+Pn (n = 1 ~ 99)
"+P1"
【フィールド】
 +Fn
 +F
 -F
[+Fn]の場合:"+Fa,b,c..."
 a:フィールド1桁数
 b:フィールド2桁数
 c:フィールド3桁数
 ...
[+F]の場合:既存フィールドファイルによる
  (YMODEMのみ)
 ※受信の場合はフィールドファイルを
    受信しない

[-F]の場合:フィールド指定なし(YMODEMのみ)
 
【伝送方向】
 +R
 -R
"+R" ファイル受信
"-R" ファイル送信
"-R"
【追加書込】
 +A
 -A
"+A" 既存データファイルに追加書込み
"-A" 追加書き込みしない
"-A"
【CR-LFの扱い】
 +C
 -C
"+C" CR-LFをデータとする
"-C" CR-LFをレコードの区切り
"-C"

オプション文字列の一般的な例としては以下の様になります。
送信の場合:"TEST.DAT +P5 +F16,12 -R"
受信の場合:"TEST.DAT +P5 +F16,12 +R"
この場合、YMODEMでの伝送を想定していて、 通信ポートはパソコンにUSB-COMポートを インストールした時に COM5 になったので"P5"としています。
また、フィールド指定は以下の記事のデータファイルを使っています。
・BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
■VB.NETの送受信テストプログラム

上記のオプション例を使った簡単なVB.NETのテストプログラムを以下に示します。

フォームの画面表示は以下の感じです。 送信ボタンと受信ボタンをフォームに配置しそれぞれのボタンクリックで送受信処理を行っているだけです。 受信時のオプションはフィールド指定が無い違いがあります。 24a1
■BHT-BASICの送受信テストプログラム(ハンディ側)

ハンディターミナル側の簡単な受信・送信テストプログラムを以下に示します。
■VB.NETの送受信テストプログラムの実行
送信時の画面は、以下の様にYMODEM送信のダイアログが表示されて、 件数の様な数字がカウントアップします。 24a2
送信処理後に、 TEST.DAT の存在するフォルダを確認すると  TEST.FLD ファイルが作られているのがわかります。 この TEST.FLD ファイルの内容は以下の様にフィールドの定義ファイルの様です。
* created by BHT-BASIC 4.0 Transfer Utility DLL Version 1.14
*   Copyright (C) DENSO WAVE INC. 2001-2013 all rights reserved
file	TEST.DAT
fields	16 12
受信時の画面は、以下の様な表示になります。 24a3
受信後は、ハンディから送られてくる TEST.FLD ファイルが生成される様です。 以下はその内容です。
* created by BHT
file	TEST.DAT
size	150
records	5
fields	16 12

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


.NET開発テクノロジ入門2016年版Visual Studio 2015対応版

2016年4月28日 (木)

BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について

ハンディターミナルを使用する最大の要因は、バーコードの読込みを行うことです。 商品に貼られたバーコードや、商品棚に印刷されたバーコードを読み取り、 いろいろな作業を行います。

BHTシリーズで読込み可能なバーコードには EAN-13(JAN-13)、EAN-8 (JAN-8)、NW-7、Code39、Code93、Code128等があります。

バーコードを読込む処理は以下の一連の命令の実行で行います。

・OPEN命令によりバーコードデバイスをオープンする。
・バーコードが読込まれるのを待つ。
・バーコードバッファから読込まれた文字列を取得する。
・CLOSE命令によりバーコードデバイスをクローズする。

■バーコードデバイスのオープン

バーコードデバイスのオープンの OPEN命令 について説明します。
[書式1:パラメタを直接指定]
 OPEN "BAR:[読取モード][ブザー制御][LED制御]" AS [#]ファイル番号 CODE 読取コード[,読取コード...]

[書式2:パラメタをシステム設定値から指定]
OPEN "BAR:SP" AS [#]ファイル番号
<引き数>
・[読取モード]:
 ■モメンタリスイッチモード(M):
  トリガスイッチを押している間だけ照明LEDが点灯し、
  バーコードを読み取ることができる。

 ■オートオフモード(F)
  トリガスイッチを押すと照明LEDが点灯し、トリガスイッチを放すか、
  またはバーコードを読み取ると、照明LED は消える。

 ■オルタネートスイッチモード(A)
  トリガスイッチを押すと照明LEDが点灯し、トリガスイッチを放しても、
  照明LED は点灯している。バーコードデバイスファイルがクローズされるか、
  またはトリガスイッチを再度押すと照明LED は消える。

 ■連続読み取りモード(C)
  トリガスイッチに関係なく照明LEDはバーコードデバイスファイルが
  クローズされるまで点灯しています。

 ※4モードとも照明LEDが点灯している間は、
  バーコードを読み取ることができます。

・[ブザー制御]:"B"
 バーコードの読み取り成功時にブザー(バイブレータ)を作動

・[LED制御]:"L"
 バーコードの読み取り成功時に青LED が点灯しないようにする

・ファイル番号:(OPEN命令で指定したファイル番号を指定)

・読取コード:
 ■共通商品コード("A","B","C")
   先頭文字(国フラグ)やアドオンの指定ができますが
   "A"のみ指定でEAN-13(JAN-13),EAN-8(JAN-8),UPC-E全てが
   読込める

 ■NW-7("N"):
   書式:N[:[最小桁数[-最大桁数]][スタート ストップ][CD]
       [,[最小桁数[-最大桁数]][スタート ストップ][CD]]
       [,[最小桁数[-最大桁数]][スタート ストップ][CD]]]

 ■Code39("M"):
   書式:M[:[最小桁数[-最大桁数]][CD]
       [,[最小桁数[-最大桁数]][CD]]
       [,[最小桁数[-最大桁数]][CD]]]

 ■Code93("L"):
   書式:L[:[最小桁数[-最大桁数]
       [,[最小桁数[-最大桁数]]
       [,[最小桁数[-最大桁数]]]

 ■Code128("K"):
   書式:K[:[最小桁数[-最大桁数]
       [,[最小桁数[-最大桁数]]
       [,[最小桁数[-最大桁数]]]

上記のほかにいろんな指定がありますが、それは各BHTの取説を見てください。
■オープン指定の例

OPEN "BAR:M" AS #1 CODE "A", "M:4-25",  "K:4-25"

この例では読取モードとしてはモメンタリスイッチモードで、 読取コードは 共通商品コード、Code39の4桁~25桁、 Code128の4桁~25桁を可能としています。

このオープン例を使った簡単なテストプログラムを以下に示します。

実際の処理としては、上記のテストプログラムでは不十分です。 商品などのバーコードコードをスキャンする場合、 そのバーコードが準備されていればいいのですが、 準備できていないことがあります。
そんな時には、バーコードスキャンでもキー入力でも コード入力が可能な様に組んでおくことが必要です。
■バーコード・キー入力の両方を行える関数例

以下のソースはバーコードスキャンを途中でやめて、 キー入力出来る様にしたバーコード入力関数の例です。

この関数の処理は以下の様な仕様になっています。
(1)最初にカーソル位置を退避する。
(2)バーコードデバイスオープンを行い、キー入力とバーコードスキャンを待つ。
(3)バーコードスキャンがあれば、コードを変数に戻し、関数を終わる。
(4)[F4]キーが押下された場合は、戻り値にそのフラグを持って関数を終わる。
(5)[F1]キーが押下された場合は、キー入力処理になる。
(6)数字キーであれば入力文字列に追加する。
(7)[F2]キーが押下された場合は、バーコードスキャン(2)に戻る。
(8)[F4]キーが押下された場合は、戻り値にそのフラグを持って関数を終わる。

この関数はまだまだ足りない点があると思いますので、改造をして下さい。

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

デル株式会社

2016年4月27日 (水)

BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方

ハンディターミナルはそれ自身単体で使用するわけではなく、 データファイルの送受信処理をパソコンと行い、 そのデータファイルのデータを使用して処理を進めることはよくあります。

それで今回は、ファイルの送受信を行う  XFILE命令 について説明します。
[書式]
 XFILE "[ドライブ名:]ファイル名"[, "プロトコル指定"]

<引き数>
 ドライブ名:ドライブ指定("A" OR "D")
       <各ドライブに対応する通信プロトコル>
        "A":Ymodem, BHT-Ir, BHT
        "D":Ymodemのみ
 ファイル名:ファイル指定

 プロトコル指定:以下の各指定を文字列で行う。
  ■伝送方向:
   ・省略時(デフォルト):BHTからファイル送信
   ・"R"または"r"   :パソコンまたは他BHTからファイル受信

  ■シリアル番号:
   ・省略時(デフォルト):シリアル番号の付加無し
   ・"S"または"s"   :伝送ブロックにシリアル番号を付加

  ■水平パリティチェック(BCC):
   ・省略時(デフォルト):水平パリティの付加無し
   ・"P"または"p"   :伝送ブロックに水平パリティを付加

  ■伝送モニタ:
   ・省略時(デフォルト):シリアル番号の表示無し
   ・"M"または"m"   :伝送ブロックのシリアル番号を表示

  ■ファイル受信時のフィールド末尾の空白の扱い:
   ・省略時(デフォルト):空白をデータとして扱わない
   ・"T"または"t"   :空白をデータとして扱う

  ■リンク確立時のタイムアウト時間:
   ・"1"~"8":30秒~240秒で30秒間隔
   ・"9"   :タイムアウトなし

  ■ファイル名同一チェック:
   ・省略時(デフォルト):同一チェックを行う
              (ファイル名で指定した名前と同じ
               名前で送られてきたファイルのみ受信)
   ・"N"または"n"   :同一チェックを行わない
              (送信側と異なるファイル名にて受信可能)

■プロトコル指定の例

XFILE "TEST.DAT", "RSPMT1"
この例はほぼ全てのプロトコル指定を行っています。 つまり、ファイル「TEST.DAT」の受信でシリアル番号の付加、 水平パリティの付加、シリアル番号の表示、フィールド末尾の空白をデータ、 リンク確立時のタイムアウト時間30秒の指定です。

私があるシステムで XFILE命令  を使った受信時は以下のコマンドでした。 フィールド末尾の空白ですが、データとしないと  FIELD命令 で指定した分の桁数が確保されない気がしました。 でもファイルを読込んだ時には、文字列の右側の空白を取除く(トリム)必要があります。
XFILE "TEST.DAT", "RPMT"

■XFILE命令 をラップした関数について

受信と送信に分けて関数を作ってみました。

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


デル株式会社

2016年4月23日 (土)

BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について

簡単なメニュー表示・選択を行うユーザ関数を作ってみました。
この関数はメニュー表示データを文字列の配列で渡して、 ハンディの「△」「▽」キーで選択行を移動させて、 「ENT」キーの押下でメニュー選択を行います。
実際の表示は以下の様な感じです。 221
各数字キーを押下することで、メニューの選択が直接その行に移動します。 但し、この関数なのですが問題が在りまして、 各数字キーで直接移動するのはいいのですが、 1~9までにしか対応していません。 そのため、9個までのメニューは良いのですが、 それ以上のメニューの場合は問題が在ります。
この辺りは、参考にされた場合は改造等をして下さい。
では以下にこの関数のソースを示します。

尚、この関数を実行する例のメインのソースは以下になります。

【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:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について

デル株式会社