"脱着可能なバッテリを内蔵し、レーザ光でバーコードを走査してその反射光からバーコードを読み取る光学情報読取装置であって、該光学情報読取装置に組み込まれているプログラムのアップデートを行うことができる光学情報読取装置において、前記光学情報読取装置に給電可能な電源の種別を検知する電源種別検知手段と、該電源種別検知手段の検知結果に基づいて、前記プログラムのアップデートを行う際に前記光学情報読取装置に安定して給電可能であるか否かを判別する安定給電判別手段と、該安定給電判別手段の判別結果に基づいて、前記プログラムのアップデートを行うアップデート実行手段とを有することを特徴とする光学情報読取装置。ユーザが操作するモード切り替え入力手段を更に有し、該入力手段をユーザが操作することで、前記光学情報読取装置がアプリケーションのアップデートを行うことのできるアップデートモードに切り替わる、請求項1に記載の光学情報読取装置。前記安定給電判別手段は、前記電源種別検知手段が、前記光学情報読取装置に給電可能な電源の種別として、前記光学情報読取装置に装着されたバッテリを検知したとき、前記プログラムのアップデートを行う際に前記光学情報読取装置に安定して給電可能であると判別する、請求項2に記載の光学情報読取装置。前記電源種別検知手段により検知されたバッテリの電池残量が所定の閾値よりも高いときに、前記安定給電判別手段が、前記プログラムのアップデートを行う際に前記光学情報読取装置に安定して給電可能であると判別する、請求項1~3のいずれか一項に記載の光学情報読取装置。前記光学情報読取装置が表示部を更に有し、前記安定給電判別手段が、前記光学情報読取装置がバッテリを取り外した状態、内蔵したバッテリの電池残量が所定の閾値よりも低いときに、前記プログラムのアップデートを行う際に前記光学情報読取装置への給電が不安定であると判別し、該安定給電判別手段が前記光学情報読取装置への給電が不安定であると判別したとき、アップデートをするか否かをユーザに確認するための報知手段を備えている、請求項1又は2に記載の光学情報読取装置。通信制御にACKNACK制御を含んでいる、請求項5に記載の光学情報読取装置。光学情報読取装置は脱着可能なバッテリによって動作する。仮に、アップデート中に何らかの原因で光学情報読取装置の電力が欠乏したとき、アップデートは途中で強制終了してしまい、これが原因でプログラムが破損してしまう虞がある。具体的に説明すると、例えば、バッテリが装着されたバーコードハンディターミナルをクレードルに置いた後、作業者がクレードルに接続されたACアダプターのケーブルに引っ掛かり、ケーブルが抜けてクレードルからバーコードハンディターミナルへの電源供給がストップしたとする。このとき、バーコードハンディターミナルに装着されたバッテリの電池残量が十分でなかった場合には、電力欠乏によってアップデートを適正に行うことができなくなる虞がある。例えば、新規に購入して間もないバッテリは電池残量ゼロであることが多く、このようなバッテリがバーコードハンディターミナルに装着されているとは知らずにアップデート処理をしている際、上述したような不慮の事故が生じると、アップデート作業に支障が出る虞がある。本発明の目的は、光学情報読取装置に組み込まれているプログラムのアップデートを実行している最中に光学情報読取装置の電力が欠乏してアップデートの途中でアップデートが強制終了してしまう事態の発生を未然に防止することのできる光学情報読取装置を提供することにある。上記の技術的課題は、本発明によれば、脱着可能なバッテリを内蔵し、レーザ光でバーコードを走査してその反射光からバーコードを読み取る光学情報読取装置であって、該光学情報読取装置に組み込まれているプログラムのアップデートを行うことができる光学情報読取装置において、前記光学情報読取装置に給電可能な電源の種別を検知する電源種別検知手段と、該電源種別検知手段の検知結果に基づいて、前記プログラムのアップデートを行う際に前記光学情報読取装置に安定して給電可能であるか否かを判別する安定給電判別手段と、該安定給電判別手段の判別結果に基づいて、前記プログラムのアップデートを行うアップデート実行手段とを有することを特徴とする光学情報読取装置を提供することにより達成される。本発明よれば、安定した電源つまりアップデート中に電力不足に陥ることのない状態であることを光学情報読取装置が確認した上でアップデートを実行することから、電源の問題でアップデートの途中で強制終了してしまう事態の発生を未然に防止することができる。本発明の他の目的、作用効果は、以下の本発明の好ましい実施例の詳しい説明から明らかになろう。以下に、添付の図面に基づいて本発明の好ましい実施例を説明する。図1は実施例の携帯式光学情報読取装置であるバーコードハンディターミナルを斜め前方から見た斜視図である。この図1を参照して、実施例のバーコードハンディターミナル100は、その上部の前面に表示部10を有し、表示部10は液晶ディスプレイLCDで構成されている。バーコードハンディターミナル100は、その前面において、上記LCDで構成された表示部10の下方に位置する入力部11を有する。入力部11は、メニューキー12、バーコードのスキャンの開始を指示するトリガーキー13、4方向キー14、ENTキー15、キャンセルキー16、テンキー群17、テンキー群17の下方に横並びに配置されたファンクションキー群18、電源スイッチ19で構成されている。他方、バーコードハンディターミナル100の後面には、その上端部にバーコード読み取り窓が従来と同様に形成され、また、下端に、従来と同様に接続端子が配列されている。また、バーコードハンディターミナル100の入力部11の後側にバッテリが脱着可能に取り付けられる。図2は実施例のバーコードハンディターミナル100の分解斜視図である。図3は、バッテリパックを取り外した状態のバーコードハンディターミナル100を後方から見た図である。図4はバーコードハンディターミナルの全体システムを示す図である。図5はバーコードハンディターミナルのブロック図である。図2を参照して、バーコードハンディターミナル100の部品を説明すると、図中、参照符号20は合成樹脂成型品の表示窓20aを備えたフロントケースであり、21は合成樹脂成型品のリヤケースであり、22はメインパッキンを示す。メインパッキン22は、フロントケース20とリヤケース21との突き合わせ面に沿って連続する形状を有し、このメインパッキン22を介在した状態でフロントケース20とリヤケース21は合体されてバーコードハンディターミナル100の筐体を構成し、フロントケース20とリヤケース21とで囲まれた内部空間に種々の部品が位置決めした状態で収容される。リヤケース21には、その上端部つまりLCD10の上方の端部に横長の矩形の読み取り窓25が形成されている。リヤケース21には、また、上下の中間部分に電池端子窓26が形成され、この電池端子窓26に臨んで電池端子基板27が取り付けられる。リヤケース21の下部にはバッテリパック28を受け入れる凹部29が形成されており、バッテリ28は、その容量によって、比較的大容量のバッテリ28Aと比較的小容量のバッテリ28Bを選択でき図4、これに対応したバッテリカバー30A、30Bが用意され、バッテリカバー30A、30Bはリヤケース21に対して脱着自在である。図2の参照符号31はバッテリカバー用のパッキンを示す。バッテリパック28には、その上端面に給電端子28aが設置されており、バッテリパック28をリヤケース21のバッテリ受け凹所29に設置することでバッテリパック28がバーコードハンディターミナル100の電池端子基板27の受電端子図示せずと電気的に接続され、このバッテリパック28の電気エネルギーによってバーコードハンディターミナル100が駆動される。上述したように、バーコードハンディターミナル100は、バッテリパック28を装着するための装着部としてバッテリ受け凹所29を有している。本実施例では、バッテリ受け凹所29はリヤケース21の下方に設けられているが、装着部はどこに設けられていてもよい。装着部にバッテリパック28が装着されると、装着部凹部29に形成された受電端子80とバッテリパック28の給電端子28aとが接触する。そして、受電端子80と給電端子28aとが接触した状態で、バッテリパック28の電力がバーコードハンディターミナル100に供給される。リヤケース21の下端には、端子窓31が形成されており、この端子窓31に臨んで、端子ホルダ32に組み込まれた端子基板33がリヤケース21の下端に取り付けられる。この端子基板33に設けられた端子作図上の理由で図面には現れていないは端子窓31を通じて外部に露出し、この端子窓31を通じて、後に説明するクレードル34図4を通じて外部と交信することができると共に、充電ユニット95、96図4によってバッテリパック28の充電が可能である。図2の参照符号36は端子ホルダテープを示す。より具体的には、バッテリパック28が取り付けられたバーコードハンディターミナル100が、充電ユニット73に載置されると、充電ユニット73からバッテリパック28に電力が供給され、バッテリパック28の充電が行われるとともに、外部機器PC70等との通信に必要な電力がCPU101や通信回路等に供給される。バッテリパック28の充電が完了すると、充電ユニット73からの電力は、必要な分だけCPUや通信回路等にのみ供給される。このような電力供給の切り替えは、後述する電源回路103図5が担っている。リヤケース21には、上記の電池端子基板27に関連して電池保護テープ40,電池端子クッション41を介して電池端子押さえ部材42が設置され、この電池端子押さえ部材42がリヤケース21にネジ止めされることにより、電池端子基板27の端子部27aがリヤケース21から遠ざかる方向へ変位するのが電池端子押さえ部材42によって規制される。この電池端子基板27の側方にバイブレータ44が配置され、このバイブレータ44はリヤケース21に取り付けられる。リヤケース21の上記の読み取り窓25には、リヤケース21の外側からスキャナフィルタ46が取り付けられ、他方、リヤケース21の内側には、リヤクッション47を介してスキャナホルダ48がリヤケース21にOリング49を介してネジ止めされる。スキャナホルダ48にはスキャナモジュール50が搭載されており、このスキャナモジュール50が発するレーザ光を読み取り窓25に導き及び対象物に付されたバーコードから戻ってくる光をスキャナモジュール50に導くための反射ミラー51がスキャナホルダ48に組み付けられている。スキャナモジュール50は、従来と同様に、半導体レーザ発光素子、受光素子であるフォトダイオード、ガルバノミラー、スキャナ基板などを含んでおり、半導体レーザ発光素子が発したレーザ光を所定の周期で揺動するガルバノミラーで反射して読み取り窓25を通じてバーコードに向けて出射すると共にバーコードを走査し、バーコードから戻ってくる光をスキャナモジュール50に取り込んでフォトダイオードで受光する。フォトダイオードが受光すると、その受光信号がスキャナ基板の受光回路及び増幅回路で増幅される。なお、スキャナ基板にはミラー駆動回路が設けられており、このミラー駆動回路によってガルバノミラーが駆動され、ガルバノミラーは上述した揺動運動を行う。図2の参照符号53は第1のスキャナクッションを示す。このスキャナクッション53はスキャナホルダ48の前方に配置され、その前方に位置するスキャナクッション板金54はスキャナホルダ48にネジ止めされる。このスキャナクッション板金54の前方には第2のスキャナクッション55が位置し、更に、その前方にメイン基板57が配置される。メイン基板57は上述したLCD10とほぼ同じ大きさを有し、このメイン基板57には制御用CPU101やメモリ図5の参照符号58を含む比較的大きな回路規模を有するメイン回路が設けられており、バーコードハンディターミナル100の全体制御や取得したバーコードの読み取り処理を行うと共にその読み取り結果をメモリ58図5に保存し、また、LCD10に表示するための信号を生成する。メイン基板57は、その前方に位置するLCDホルダ60と共通のネジを使ってスキャナホルダ48に固定される。すなわち、LCDホルダ60はメイン基板57を挟み込んだ状態でスキャナホルダ48にネジ止めされる。LCDホルダ60にはLCD10がきつく嵌合される。メイン基板57の下方にはキー基板61が配設され、このキー基板61には、その前方のメインキートップ62がネジ止めされる。メインキートップ62には、上述した操作部11つまりメニューキー12、トリガーキー13、テンキー群17などが設けられている図1。上述した部品を組み込んだリヤケース21に対してフロントケース20が上述したメインパッキン22を介して組み付けられることになるが、それに先立ってLCD10の周辺部にLCDフロントクッション63が配置され、このLCDフロントクッション63によってLCD10はフロントケース20によって押さえ付けられた状態となる。フロントケース20には、その前面に光透過性のフロントパネル64やフロントシート65が組み付けられる。図4を参照して、実施例のバーコードハンディターミナル100はメインフレームサーバー70とRS-232ケーブル71やUSBケーブル72を介して交信可能であり、また、クレードル34に置くことでメインフレームサーバー70と交信可能である。バーコードハンディターミナル100はメインフレームサーバー70と交信することで、バーコードハンディターミナル100にインストールされているプログラムファームウエア、アプリケーションのアップデートが実行される。また、このアップデートは、SDカードのような脱着可能な外部メモリSDカード80によって行うこともできる。また、IrDAやWLANやBluetoothなどの無線通信を使ってのアップデートも可能である。図5を参照して、バーコードハンディターミナル100は、電源の種別を検知する手段及びバッテリの残量を検知する手段82と、クレードル34から電源供給を受けていることを検知する手段84とを有する。電源の種別を検知するとは、具体的には、バーコードハンディターミナル100がバッテリパック28を搭載した状態でクレードル34に置かれて、このクレードル34から電源の供給を受けている状態では、商用電源外部電源とバッテリパック28の双方が電源となりうる、バーコードハンディターミナル100からバッテリパック28を取り外した状態でクレードル34に置かれた状態では、商用電源外部電源が電源となる、バッテリパック28を搭載したバーコードハンディターミナル100を、バーコードハンディターミナル100に給電できない状態の通信クレードルに設置された状態では、バッテリパック28が電源となる。この電源の種別の検出は、上記の場合には例えば、電源種別検知82がバッテリの接続を検知した状態で、かつ、外部給電検知手段84が充電クレードルの接続を検知することによって検出することができ、上記の場合には例えば、電源種別検知82がバッテリの接続を検知していない状態で、かつ、外部給電検知手段84が充電クレードルの接続を検知することによって検出することができ、上記の場合には例えば、電源種別検知手段82がバッテリの接続を検知した状態で、かつ、外部給電検知手段84が充電クレードルの接続を検知していないことによって検出することができる。バーコードハンディターミナル100はクレードル34に置いたときに、バーコードハンディターミナル100がクレードル34の所定位置に位置決めされたことを例えばクレードル34の所定の端子とバーコードハンディターミナル100の所定の端子が接続した状態になることで検知され、これによりバーコードハンディターミナル100のアップデートを開始する準備が整ったとしてアップデートモードに切り換えられる。クレードル34を介して又はUSBケーブル72、無線通信などを通じてバーコードハンディターミナル100がメインフレームサーバー70と交信して、メインフレームサーバー70からアップデートの用意があることをバーコードハンディターミナル100が受信したときに、これをバーコードハンディターミナル100のLCD10に表示し、ユーザがアップデート開始を指令するボタン操作をすることでバーコードハンディターミナル100のプログラムをアップデートする動作モードに切り換えられる。また、バーコードハンディターミナル100に外部メモリSDカード80からアップデートを行う方法がある。外部メモリ80を挿入すると、外部メモリ80内にアップデートをすべきファイルがあった場合に自動的にアップデートに移行する。また、アップデートが可能である旨をバーコードハンディターミナル100のLCD10に表示し、ユーザがアップデート開始を指令するボタン操作をすることでバーコードハンディターミナル100がアップデートモードに切り替わる方法もある。バーコードハンディターミナル100がアップデートモードに切り替わったとしても次の条件を満足しない限り、アップデートが実行されない。すなわち、アップデートは、バーコードハンディターミナル100の電源がアップデート中に欠乏しない状態であることを確認した後に実行される。換言すると、バーコードハンディターミナル100の電源がアップデート中に欠乏するリスクがあるときにはアップデートは実行されない。アップデートの実行条件成立の有無を確認する制御の一例を図6に示すフローチャートに基づいて説明する。先ず、ステップS10でアップデートモードに切り替わると、ステップS11に進んで、バーコードハンディターミナル100に接続されている電源の種別が検出される。より具体的には、CPU101は、外部給電検知回路84を介して、バーコードハンディターミナル100に給電可能な電源の種別を検知する。商用電源外部電源とバッテリパック28の双方から電源供給を受けることのできる状態、つまりバッテリパック28を搭載した状態のバーコードハンディターミナル100がクレードル34の所定位置に位置決めされたときには、ステップS12に進んでバーコードハンディターミナル100への給電の電圧が所定の電圧値内蔵しているバッテリパック28の電圧が例えば38Vよりも大きいか否かの判定が行われる。この給電の電圧値つまり内蔵しているバッテリパック28の電圧値は、図4の参照符号86で示す電源回路に組み込まれた給電電圧値検出回路図示せずによって検出される。このステップS12は給電している電源が安定した電源であるか否かを判定する安定給電判別手段を構成するものである。給電の電圧値内蔵しているバッテリパック28の電圧値が38V以上のときには、CPU101が安定な電源にバーコードハンディターミナル100が接続されていると判断してステップS13に進み、バーコードハンディターミナル100のプログラムのアップデートが開始される。バーコードハンディターミナル100は、クレードル34から供給される電源によってアップデート処理を行うことになる。この場合、ユーザからの入力を待たずにアップデートを開始できるので、利便性が与えられる。他方、バーコードハンディターミナル100への給電の電圧値が38Vよりも低いときには、CPU101が不安定な電源からバーコードハンディターミナル100に給電される状態にあると判断してステップS14に進み、バーコードハンディターミナル100のLCD10に注意を促す表示、例えばクレードル34のACアダプターを抜かないバッテリパック28の残量が不足などの表示を行う。これを見たユーザはアップデート中に電力が不足する可能性があることを知ることになり、必要な注意やバッテリパック28を交換することになる。この表示つまりアップデートをするか否かをユーザに確認する報知はLCD10に代えて又はLCD10と共にスピーカからの音やバイブの振動によってユーザに知らせるようにしてもよい。そして、ユーザがアップデート実行を指令する手動操作つまりボタン操作を行ったときには前記ステップS13に進んでアップデートが実行される。他方、ステップS14でユーザがアップデート中止を指令するボタン操作を行ったときにはステップS15に進んでアップデートの実行が見送られる。なお、ステップS12においてバーコードハンディターミナル100への給電電圧値が38Vよりも低いときには、ステップS15に進んでアップデートの実行を強制的に見送るようにしてもよい。バーコードハンディターミナル100の給電がバッテリパック28だけの場合や商用電源外部電源だけの場合には、ステップS11でこれを検出すると、不安定な給電状態にあるとして、バーコードハンディターミナル100のLCD10に注意を促す表示すると共に上述したステップS14に進んでユーザの意図したアップデート実行指令操作又はアップデートをキャンセルする操作を待って、前述したようにステップS13でアップデートの実行又はステップS15でアップデートをキャンセルする処理が行われる。上述したように、バッテリパック28を搭載し且つクレードル34を通じて商用電源から給電される状態にあり且つバーコードハンディターミナル100への給電電圧が所定の電圧値よりも高いときに限定してアップデートが実行されるため、仮にクレードル34のACアダプターが抜けて商用電源からの電力供給が途絶えたとしてもアップデートは内蔵したバッテリパック28の電源を使って最後まで行うことができる。したがって、アップデートの途中でバーコードハンディターミナル100が強制終了して、更新データの供給が途中で停止したときに発生し易いプログラムの毀損事故を未然に防止することができる。換言すれば、ステップS12で説明したように、CPU101は、ステップS11で検知した電源の種別外部電源とバッテリが安定した電源であるか否かを判定する。特に、バッテリについては、電池残量が所定の閾値よりも高いときに、安定した電源であると判定する。これにより、例えば、バッテリが装着されたバーコードハンディターミナル100をクレードル34に置いた後、作業者がクレードル34に接続されたACアダプターのケーブルに引っ掛かり、ケーブルが抜けてクレードル34からバーコードハンディターミナル100への電源供給がストップした場合であっても、アップデート作業に支障が出てしまうのを防ぐことができる。なお、バーコードハンディターミナル100の通信制御にACKNACK制御が加えられている。したがって、アップデート実行中にバーコードハンディターミナル100がクレードル34から外れたり、外部メモリSDカード80がバーコードハンディターミナル100から外れるなどの事故が発生したとしても、ACKNACK制御によってタイムアウト期間内に復帰させることができればアップデートを正常に再開させることができる。実施例のバーコードハンディターミナル100は一次元コードいわゆるバーコードの読み取りに適用されているが、本発明は一次元コードに限定されるものではない。QRコードなどのマトリックスコードや一次元バーコードを上下に複数重ねたスタックコードのような二次元コードを読み取る光学情報読取装置にも本発明を好適に適用できる。したがって、この明細書及び請求の範囲において使用したバーコードは特に限定しない限り、当業者が認識する広義の意味つまり一次元コード、二次元コードを含む意味であると理解されるべきである。"