おすすめ本

最近のトラックバック

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

AccRanking

Ad

« 2016年3月 | メイン | 2016年6月 »

2016年4月

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月26日 (火)

ゆうちょ銀行を名乗ったフィッシングメール「登録変更完了のお知らせ」にご注意を!!

今日、なにげにメールソフトの「迷惑メール」フォルダをのぞいたら、 ゆうちょ銀行?から「登録変更完了のお知らせ」なるメールが届いていました。

ゆうちょ銀行から何かあったのかなと思ったのですが、 「迷惑メール」フォルダに入っていたので、ちょっとゆうちょ銀行のサイトを確認しました。

やはりフィッシングメールだそうで、パスワードなどが盗まれる可能性がありますので 絶対にリンクをクリックしない様にしてくださいとのことでした。
メールの内容は以下の様な感じです。 しかし、ほんとに腹立ちますよね。

ゆうちょ銀行

このメールは登録パスワードを変更された方へのメールです。

===============================================
確認のためにメールを送信しています。
お客さまご自身で変更した場合は、このメールを無視しても問題ありません。

お客さまご自身で変更していない場合は盗用の可能性がございます。
至急以下のURLをクリックしてください。
(PC?スマートフォンからご利用ください。)
https://www.jp-bank.japanpost.jp//*****


※このメールアドレスに返信頂きましても、ご返答はできませんので、
お問い合わせはヘルプのサポートフォームよりお願い申し上げます。

URL : https://yucho-moneyguide.jp/otoku/*****

 今後ゆうちょ銀行もをよろしくお願いいたします。

---------------------------------------------------------------
 ゆうちょ銀行について

URL : https://www.jp-bank.japanpost.jp/index.html


デル株式会社

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等)とのデータファイルの送受信について

楽天市場


デル株式会社

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等)とのデータファイルの送受信について


楽天市場


デル株式会社