忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

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命令 をラップした関数について

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

'---------------------------------------
'ファイル送信
'---------------------------------------
'Function GfSndFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$)
'引 数:
'	pintFp%		:ファイル番号
'	pstrSpeed$	:送信スピード
'	pstrFile$	:送信ファイル名
'	pstrOption$	:送信オプション
'戻り値:
'	GfSndFile%	:送信OK(GcTrue%)NG(GcFalse%)
'---------------------------------------
	Function GfSndFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$)
		On Error Goto GfSndFile.ErrProc
		OPEN "COM1:" + pstrSpeed$ AS pintFp%
		XFILE pstrFile$, pstrOption$
		GfSndFile% = GcTrue%
GfSndFile.Return		'終了処理
		CLOSE pintFp%
		On Error Goto 0
		Exit Function
'-----
'エラー処理
'-----
GfSndFile.ErrProc
		GfSndFile% = GcFalse%
		Resume GfSndFile.Return
	End Function

'---------------------------------------
'ファイル受信
'---------------------------------------
'Function GfRcvFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$)
'引 数:
'	pintFp%		:ファイル番号
'	pstrSpeed$	:受信スピード
'	pstrFile$	:受信ファイル名
'	pstrOption$	:受信オプション("R")以外のオプション
'戻り値:
'	GfRcvFile%	:受信OK(GcTrue%)NG(GcFalse%)
'---------------------------------------
	Function GfRcvFile%(pintFp%, pstrSpeed$, pstrFile$, pstrOption$)
		On Error Goto GfRcvFile.ErrProc
		OPEN "COM1:" + pstrSpeed$ AS pintFp%
		XFILE pstrFile$, "R" + pstrOption$
		GfRcvFile% = GcTrue%
GfRcvFile.Return		'終了処理
		CLOSE pintFp%
		On Error Goto 0
		Exit Function
'-----
'エラー処理
'-----
GfRcvFile.ErrProc
		GfRcvFile% = GcFalse%
		Resume GfRcvFile.Return
	End Function




=====
2016/04/02:の時の情報











PR

コメント

コメントを書く