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対応版
コメント(0)