バーコードを読み、読んだデータをデータファイル(BDATA.DAT)に書き込みます。
[M1]キーが押されたらデータファイル(BDATA.DAT)を送信し、その後ファイルを削除します。
[M2]キーが押されたら、処理を終えます。
const BarFile = 1 'バーコードファイル番号
const DatFile = 2 'データファイル番号
const ComFile = 3 '通信ファイル番号
const ProtBHT = 0 'BHTプロトコル
const ProtBIr = 2 'BHT-Irプロトコル
const ProtYmd = 3 'Ymodemプロトコル
private datfname$ 'データファイル名
datfname$ = "bdata.dat"
'+---------------------------------------------------------------------------+
'| |
'| 【関数名】 inpbar$(f.no%, bar$, keylist$) |
'| 【機能】 バーコード読み取りを待つ |
'| [in] デバイス番号 f.no% |
'| バーコードタイプ bar$ |
'| 終了キーリスト keylist$ |
'| [out] 読み込んだバーコード |
'| |
'| 【処理内容】 |
'| ・バーコード入力を待ち、そのバーコードデータを戻り値とします。 |
'| ・指定されたキーが押された場合、そのキーデータを戻り値として終了 |
'| します。 |
'| |
'+---------------------------------------------------------------------------+
function inpbar$(f.no%, bar$, keylist$)
private barlen%
private wk$
open "BAR:" as #f.no% code bar$
while 1
wait 0,&h03
barlen% = loc(#f.no%)
if (barlen% > 0) then
beep
input #f.no%,wk$ 'バーコードデータ取り込み
inpbar$ = wk$
close #f.no%
exit function
else
wk$ = inkey$
if instr(1,keylist$,wk$) > 0 then
inpbar$ = wk$
close #f.no%
exit function
endif
endif
wend
end function
'+---------------------------------------------------------------------------+
'| |
'| 【関数名】 putfile%(f.no%, data$) |
'| 【機能】 データをファイルに書き込む |
'| [in] ファイル番号 f.no% |
'| 書き込みデータ data$ |
'| [out] なし |
'| |
'| 【処理内容】 |
'| ・データをファイルへ書き込みます。 |
'| ・ファイル形式は、本関数内で指定します。 |
'| |
'+---------------------------------------------------------------------------+
sub putfile%(f.no%, data$)
private fdata$
open datfname$ as #f.no% 'データファイルオープン
field #f.no%,13 as fdata$
fdata$ = data$
put #f.no% 'データファイルに書き込み
close #f.no%
end sub
'+---------------------------------------------------------------------------+
'| |
'| 【関数名】 sendfile%(f.no%, para$, prot%, flname$) |
'| 【機能】 ファイルを送信する関数 |
'| [in] ファイル番号 f.no% |
'| 通信パラメータ para$ |
'| 通信プロトコル prot% |
'| 0:BHTプロトコル |
'| 1:BHT-Irプロトコル |
'| 2:Ymodemプロトコル |
'| ファイル名 flname$ |
'| [out] 正常終了時、0 |
'| エラー発生時、エラー番号 |
'| |
'| 【処理内容】 |
'| ・ファイルを送信します。 |
'| |
'+---------------------------------------------------------------------------+
function sendfile%(f.no%, para$, prot%, flname$)
out &h6060,prot% '通信プロトコル指定
open para$ as #f.no% '通信ファイルオープン
on error goto err.xf
xfile flname$,"sp" 'データファイル送信
on error goto 0
close #f.no%
sendfile% = 0
exit function
err.xf:
sendfile% = err
resume err.xf1
err.xf1:
close #f.no%
on error goto 0
end function
'===============================================================================
' Main
'===============================================================================
private ibar$
private tmp%
key 30,"m" '[M1]キー定義
key 31,"n" '[M2]キー定義
while 1
locate 1,1 : print "Read bar code!";
locate 1,4 : print "M1:Transmit ";
locate 1,5 : print "M2:End ";
ibar$ = inpbar$(BarFile,"A:A","m,n") 'バーコードor[M1][M2]キーを待つ
if len(ibar$) > 1 then
locate 1,2 : print ibar$
putfile%(Datfile,ibar$)
else
select ibar$ '各キーの処理へ
case "m" '[M1]キー処理
cls
locate 1,1: print "Transmitting...";
tmp% = sendfile%(ComFile, "com:115200,n,8,1", ProtYmd, datfname$)
'ファイルを送信
if tmp% = 0 then
beep 10
locate 1,2: print "Completed";
kill datfname$ 'データファイル削除
else
beep ,,3
locate 1,2 : print "Err";hex$(tmp%);"h"
endif
timea = 10 : wait 0,&h10
cls
case "n" '[M2]キー処理
end '終了
end select
endif
wend