技術情報

アプリケーション開発ガイド | バーコード読取り→データファイル作成→送信

機能

バーコードを読み、読んだデータをデータファイル(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

お問合せ

QBdirect