2011年3月2日水曜日

BHT-100Qを卓上ハンディターミナルのように活用

 
すでに、サポート終了でリプレース対象になっているBHT-100Qが数台あまってきている。

状態は悪くないため、このまま捨ててしまうには少々もったいない。

そこで、卓上ハンディターミナル(GT10Qとか)の変わりにならないか検証を行なった。


必要な物
  • BHT-100QのCOMポートにつなぐケーブル
  • BHT-100Qのコントロールソフト
 
【ケーブル】
ケーブルはDENSO WAVEから購入すると高い(8000円ぐらい?)ので自作した
自作の内容については、次回まわしで・・・

【ソフト】
ハンディターミナル用のソフトは次のような単純なプログラムを作成した。
PCとHTとの通信条件は

通信パラメタ

伝送速度(bps) 9600
垂直パリティ なし
文字長 8 ビット
ストップビット長 1 ビット
とした。


'==================================================================
'
' BHT010 BHT100Q like GT10Q  for BHT100Q
'
'==================================================================
'
'2009.06.05 オリジナル
'2011.03.02 外部公開で問題になりそうな箇所を修正

    On Error Goto errorProg:


'+===========================================================================+
'|  変数の定義                                                               |
'+===========================================================================+
    const pgmno$ = "010"                    'プログラム管理番号
    const ver$ = "110302.0001"              'バージョン

    private tempkey$

    const BarFile = 1                       'バーコードファイル番号
    const CPORT = 3
    const CSET = "COM2:9600,N,8,1"


'+---------------------------------------------------------------------------+
'|                                                                           |
'|  【関数名】  inpbar$(f.no%, bar$, keylist$)[255]                          |
'|  【機能】    バーコード読み取りを待つ                                     |
'|                デバイス番号      f.no%                                  |
'|                    バーコードタイプ  bar$                                 |
'|                    終了キーリスト    keylist$                             |
'|               読み込んだバーコード                                        |
'|                                                                           |
'|  【処理内容】                                                             |
'|    ・バーコード入力を待ち、そのバーコードデータを戻り値とします。         |
'|    ・指定されたキーが押された場合、そのキーデータを戻り値として終了       |
'|      します。                                                             |
'|                                                                           |
'+---------------------------------------------------------------------------+

    Function inpbar$(f.no%, bar$, keylist$)[255]
        private barlen%
        private wk$[255]
        if bar$="QM" Then
            open "BAR:f" as #f.no% code "Q","M"
        else
            open "BAR:f" as #f.no% code bar$
        end if
        while 1
            wait 0,&h03
            If (Inp(0) And &h02) = &h02 Then    '// CODE39あり(Eof(#portBar%) = 0)
'                Print "24=";loc(#f.no%),eof(#f.no%)
                wk$ = Input$(loc(#f.no%), #f.no%)    '// 全データ
                beep
                inpbar$ = wk$
                close #f.no%
                exit Function
            endif
            If (Inp(0) And &h01) = &h01 Then    '// KeyBoard
                wk$ = inkey$
                if instr(1,keylist$,wk$) > 0 then
                    inpbar$ = wk$
                    close #f.no%
                    exit Function
                endif
            endif
        wend
    end Function



'+---------------------------------------------------------------------------+
'|  タイトルバーの表示                                                       |
'+---------------------------------------------------------------------------+
    Sub DispTitle(msg$)
        private strTemp$[100]
        '                1234567890123456789012
        strTemp$=msg$ + "                      "
        strTemp$=left$(strTemp$,22)
        screen 1,1 : locate 1,1 : print strTemp$;
        screen 1,0
    end Sub


'+===========================================================================+
'|  初期設定                                                                 |
'+===========================================================================+
    
    screen 1,0

    Print "system cold start"



    Print "BHT-CTL";pgmno$;" ";ver$ : Print
    Print "ComPort設定:";
    Print CSET : print

    Print "complite!!"

    beep 3
    Print
    Print "Press any buttom."
    wait 0,&h01
    tempkey$ = inkey$


'+===========================================================================+
'|  メインメニュー                                                           |
'+===========================================================================+
    private ibar$[255]
main:
    beep 1,1,1,1
   '【画面表示】
    cls
    DispTitle(" バーコード読み込み") : print
    
    while 1
       ibar$ = inpbar$(BarFile,"QM","0123456789")    'QRバーコードor[0123456789]キーを待つ
        if len(ibar$) = 1 then '読み取りが1文字の場合はキーと判断する
            beep 1,1,1,1
        else
            open CSET AS #CPORT
            print #CPORT,ibar$
            close #CPORT
            print len(ibar$);",[";ibar$;"]"
        end if
    wend



'==========================================================
'   エラー処理
'==========================================================
errorProg:
    screen 0,0
    Print
    Print "BHT";pgmno$;" ";ver$ : Print
    Print    "Err="; Hex$(Err);" "
    Print    "Erl="; Hex$(Erl);" "
    tempKey$    = Input$(1)
    Resume Next

結果は、良好!!
ただ、少しだけ問題はあり。

  • 行末が0x0Dではなく 0x0D 0x0A なので、PC側の受信ソフトも多少の変更で対応
  • 充電のためにCU7001へ置くときにCOMポートケーブルが邪魔

1 件のコメント:

  1. えだまるさんこんにちは。会社のハンディーBHT-100Qが壊れておりこの機種をさがしていました。まだBHT-100Qをお持ちですか?

    返信削除

デル株式会社

最近人気の投稿