本発明は、パーソナルコンピュータ(以下「PC」と略称する)やワークステーション等をホスト装置としてこれに周辺装置が接続された通信システムと、それに使用する周辺装置とに関する。
特開2005−18645号公報
特開2005−107875号公報
近年、フラッシュメモリなどの不揮発性メモリがカード型にパッケージングされたいわゆるメモリーカード(記録メディアの一例)が広く知られている。このメモリーカードは、デジタルカメラや携帯音楽プレーヤーなどのデジタル機器に用いられるデータの記憶媒体として急速に普及している。メモリーカードの仕様は統一されておらず、例えば、コンパクトフラッシュ(登録商標、以下「CF」と略称する)、スマートメディア(登録商標、以下「SM」と略称する)、メモリースティック(登録商標、以下「MS」と略称する)、SDメモリーカード(登録商標、以下「SD」と略称する)など、種々のものが市場に出回っている。
上記メモリーカードは、PCなどに接続されてメモリーカードの読み書きを行なうメモリーカードリーダライタ(周辺装置の一例、以下「リーダライタ」と略称する)を用いることで、PCから上記メモリーカードへのアクセスが可能となる。これにより、PCとメモリーカードとの間でデータ通信が行なえるようになる。こうしたリーダライタには、メモリーカードを挿入するスロットを一つ備えたシングルスロットタイプと、複数のスロットを備えて複数のメモリーカードに対するデータの読み書きが可能なマルチスロットタイプなどがある(特許文献1〜2)。
ところで、上記のようなリーダライタは、マルチメディアの普及によりデータ転送容量が飛躍的に増大した背景から、PCとの間のデータ伝送をシリアル通信にて行なうことも一般化してきている。しかしながら、データアクセスのための制御には、複数記憶媒体の取り扱いが容易、といった観点から、パラレル通信用周辺機器の調停/アクセス制御にて使用されていた方式を引き継いだ機器も数多く存在する。その典型例として、PCとリーダライタとのデータ通信を、いわゆるSCSI規格で定義されたプロトコル(以下、SCSIプロトコルともいう)に基づいて行われるように設計されたシステムを例示できる。SCSI規格は、ANSI(American National Standard Institute;米規格協会)によって規格化され、国際的に広く準拠されている通信プロトコルである。該プロトコルは、PC及びリーダライタの汎用性を高めることができるため広く用いられている。なお、以下の説明において、SCSI規格とは主としてSCSI−2を示すものとする。
SCSIプロトコルにおいては、ホスト装置となるPCは、通信イベントの起動決定権が与えられたイニシエータとして機能し、周辺装置は該ホスト装置の通信対象であるターゲットとして定められる。通信イベントを実行命令するためのコマンドはPCから周辺装置に向けて順次発行される一方、発行されたコマンドを受領した周辺装置が当該コマンドに対応する処理(例えば、データの読出しや書き込み、消去、及び種々の付随的な処理)を逐次実行し、その実行結果に応じた応答情報をホスト装置側に返信する。そして、通信イベントの実行を司るコマンドの発行方向は、ホスト装置側から周辺装置側への一方向に規制されている。
上記のごとく、SCSI通信はPCと周辺装置との間での双方向通信ではあるが、通信イベントの実行を司るコマンドの発行方向が、上記のごとく、PC側から周辺装置側への一方向に規制されており、通信処理開始の主導権は常にイニシエータとなるPC側が握る形となる。つまり、SCSIプロトコルに従う限り、周辺装置側でホスト装置側に通信イベント始動のためのコマンドを逆発行することは不可能であり、周辺装置側で特定の通信イベントを自発的に起動する方法が存在しなかった。例えば、リーダライタに装着したメモリーカードに記憶されたデータファイルをPC側で読み出したり、あるいはハードディスクドライブ(HDD)等のPC側の記憶装置に保存したりする場合、ユーザーは必ずPC側でそれら読み書き処理の操作(つまり、コマンド実行入力)を行なわなければならない。このため、PCから離れた場所に配置されたリーダライタにデータファイルが格納されたメモリーカードを装着しても、そのデータファイルをPCに保存したい場合、わざわざPC位置まで赴かなければ保存のための操作を行なうことができず、非常に不便であった。
本発明の課題は、通信イベントの実行を司るコマンドの発行方向が、上記のごとく、PC側から周辺装置側への一方向に規制されているにも拘わらず、周辺装置側でのユーザー操作により特定の通信イベントを自発的に起動することが可能な通信システムと、それに使用する周辺装置とを提供することにある。
課題を解決するための手段及び発明の効果
上記課題を解決するための本発明の通信システムは、
通信イベントの起動決定権を有するとともに、ファイルやフォルダを用いてデータを管理するためのファイルシステムを備えたホスト装置と、該ホスト装置に接続され少なくともデータの読出しに係るデータアクセスが可能とされた記憶媒体が着脱可能に装着されて通信イベントにより該記憶媒体に対してデータアクセスを行なう記憶装置として構成された周辺装置とを含み、通信イベントを実行命令するためのコマンドをホスト装置から周辺装置に向けて順次発行する一方、発行されたコマンドを受領した周辺装置が当該コマンドに対応するデータ処理を逐次実行し、その実行結果に応じた応答情報をホスト装置側に返信するようになっており、かつ、コマンドの発行方向がホスト装置側から周辺装置側への一方向に規制された主通信プロトコルを有する通信システムにおいて、
周辺装置に設けられ、記憶媒体の装着を検出した場合に予め定められた内容の対象通信イベントの起動をホスト装置に促すための周辺装置側トリガを発生させる記憶媒体装着検出手段、記憶媒体内のデータファイルを選択するためのファイル選択操作部を含む手動操作部、及び当該手動操作部による操作信号を周辺装置側トリガとして発生させる操作信号発生部を有する周辺装置側トリガ発生手段と、
ホスト装置側に設けられ、周辺装置における周辺装置側トリガの発生を監視するために、周辺装置側トリガの発生の有無を反映したトリガ発生報告情報を応答情報として要求するためのトリガ報告要求コマンドを、主通信プロトコルに従い周辺装置に向けて発行するトリガ報告要求コマンド発行手段と、
周辺装置側に設けられ、トリガ発生報告情報を応答情報としてホスト装置に主通信プロトコルに従い返信するトリガ発生報告情報返信手段と、
ホスト装置側に設けられ、トリガ発生報告情報を周辺装置から受領する報告情報受領手段と、当該トリガ発生報告情報の内容に基づいて周辺装置側トリガの有無を判定し、該周辺装置側トリガがありと判定された場合に、対象通信イベントを起動させる対象通信イベント起動手段とを有し、
記憶媒体の記憶装置への装着に伴う記憶媒体装着検出手段による周辺装置側トリガの発生を、周辺装置からのトリガ発生報告情報によりホスト装置側で把握するに伴い対象通信イベントして、
ホスト装置から記憶媒体に記憶されたデータファイルを検索して得られるファイルリストの文字表示情報をファイルシステムを用いて作成し周辺装置側に送信するとともに、該文字表示情報を周辺装置にて受信し、該周辺装置に設けられた表示部にファイルリストの内容を文字表示させるファイルリスト表示イベントが実行され、
そのファイルリスト表示イベントに続きファイル選択操作部による周辺装置側トリガの発生を、周辺装置からのトリガ発生報告情報によりホスト装置側で把握するに伴い、ファイル選択操作部によるファイルリスト中のデータファイルの選択内容の送信を周辺装置に要求し、該データファイルの選択内容を該周辺装置からの応答情報として受信するデータファイル選択イベントが実行され、
ファイルリスト中のデータファイルの選択内容の送信が要求されたとき表示部に表示されたファイルリストのうちの少なくとも1つのデータファイルがファイル選択操作部により選択された選択状態にある場合に、その選択状態をホスト装置へ送信するデータファイル送信イベントが実行され、
さらに、選択状態にある場合に選択されたデータファイルの転送を周辺装置に要求し、かつ、転送されたデータファイルを該ホスト装置側に設けられたホスト装置側記憶装置上の予め定められた保存領域に保存する処理が実行されることを特徴とする。
また、本発明の周辺装置は、上記本発明の通信システムを構成する周辺装置であって、
予め定められた内容の対象通信イベントの起動をホスト装置に促すための周辺装置側トリガを、該周辺装置側でのユーザー操作に基づいて発生させる周辺装置側トリガ発生手段と、
周辺装置側に設けられ、ホスト装置からのトリガ報告要求コマンドに対応するトリガ発生報告情報を応答情報としてホスト装置に主通信プロトコルに従い返信するトリガ発生報告情報返信手段と、
ファイル名を文字表示するための表示部と、
を有してなることを特徴とする。
上記本発明によると、対象通信イベントの起動をホスト装置に促すための周辺装置側トリガをユーザー操作に基づいて発生させ、ホスト装置側では、周辺装置における周辺装置側トリガの発生を監視するためのトリガ報告要求コマンドを、主通信プロトコルに従い周辺装置に向けて発行する。これを受けた周辺装置からのトリガ発生報告情報をホスト装置側で受領し、当該トリガ発生報告情報の内容から周辺装置側トリガがありと判定された場合に、対象通信イベントを起動させる。これにより、通信イベントの実行を司るコマンドの発行方向が、ホスト装置側から周辺装置側への一方向に規制されているにも拘わらず、特定の通信イベントを周辺装置側でのユーザー操作により(ホスト装置側にて)自発的に起動することが可能となる。
そして、本発明では上記の対象通信イベントとして、周辺装置の記憶媒体に記憶されたデータファイルをホスト装置側から検索して得られるファイルリストの文字表示情報を、該ホスト装置側で作成し周辺装置側に送信するとともに、該文字表示情報を周辺装置にて受信し、該周辺装置に設けられた表示部にファイルリストの内容を文字表示させる。これにより、記憶装置として構成された周辺装置側に特にファイル管理用のソフトウェア(例えばファイルシステム)が搭載されていなくとも、該周辺装置に設けられた表示部に記憶媒体内のファイルリストを表示することができ、記憶媒体の記憶内容を容易に確認することができる。
主通信プロトコルとしては、本発明においてはSCSIプロトコル(SCSI−1、SCSI−2及びSCSI−3のいずれか:特に、現在も多くのOSカーネルで使われつづけているSCSI−2)を採用することができるが、これに限定されるものではない。
周辺装置側トリガ発生手段は、記憶媒体の記憶装置への装着を検出して周辺装置側トリガを発生させる記憶媒体装着検出手段を備えたものとして構成でき、ファイルリスト送信要求イベント実行手段は、記憶媒体の装着に伴う周辺装置側トリガをファイルリスト送信トリガとして使用するものとできる。このように構成すると、周辺装置への記憶媒体の装着に伴い、その表示部にファイルリストを自動的に表示することができる。
また、本発明の通信システムにおいて周辺装置側トリガ発生手段は、周辺装置に設けられた手動操作部と、当該手動操作部による操作信号を周辺装置側トリガとして発生させる操作信号発生部とを有するものとすることができる。また、該手動操作部は記憶媒体内のデータファイルを選択するためのファイル選択操作部を含むものとすることができる。そして、対象通信イベントの実行手段として、さらに、
周辺装置側トリガとして、ファイル選択操作部による選択操作トリガの発生を、周辺装置からのトリガ発生報告情報によりホスト装置側で把握するに伴い、ファイル選択操作部によるファイルリスト中のデータファイルの選択内容の送信を周辺装置に要求し、該データファイル選択内容を周辺装置からの応答情報として受信するデータファイル選択イベントを、ファイルリスト表示イベントに続く対象通信イベントとして実行するデータファイル選択イベント実行手段と、
選択されたデータファイルを、周辺装置にて読み出してホスト装置へ送信するデータファイル送信イベントを実行するデータファイル送信イベント実行手段と、を有するものとして構成できる。
これにより、ホスト装置から離れた場所に配置された周辺機器にデータファイルが格納された記憶媒体を装着した場合、周辺機器側では、ファイルリストの表示内容を参照してユーザーは所望のデータファイルをファイル選択操作部により容易に選択でき、さらに、選択されたデータファイルをホスト装置へ送信できるので、周辺機器がホスト装置から離れて接続されている場合でも、該データファイル送信を周辺機器側からの遠隔操作により行なうことができる。
この場合、ホスト装置側には、対象通信イベントにて周辺装置から受信したデータファイルを該ホスト装置側に設けられたホスト装置側記憶装置上の予め定められた保存領域に保存するデータファイル保存手段を設けることができる。これにより、記憶媒体のデータファイルのホスト装置側への送信及び保存処理を、周辺機器側でのユーザー操作により実行でき、周辺機器がホスト装置から離れて接続されている場合でも、該データファイルの保存処理を周辺機器側からの遠隔操作により行なうことができる。
また、記憶媒体は、データの読出し、書き込み及び削除に係るデータアクセスが可能とされたものとされる場合、ホスト装置側には、データファイル保存手段による保存領域へのデータファイルの格納に対応して、周辺装置に対し記憶媒体上の送信元のデータファイルを削除させるファイルムーブイベントを起動するファイルムーブ制御手段を設けることができる。これにより、データファイルの移動(ムーブ)処理も、周辺機器側からの遠隔操作により行なうことができる。
また、ホスト装置側には、データファイルの保存領域への保存環境を設定する保存環境設定手段を設けることができる。これにより、ホスト装置側でデータファイルの保存環境を設定でき、周辺機器側からの遠隔操作により行なう保存処理をユーザーが望む環境(あるいは条件)にて実行することができる。保存環境設定手段は、具体的には、データファイルの保存領域を設定・変更するための保存領域設定変更手段を有するものとして構成できる。これにより、周辺機器側からの遠隔操作により、記憶媒体中のデータファイルをホスト装置側記憶装置内の所望の保存領域に保存することができる。
データファイルの移動(ムーブ)処理を可能とする前述の構成では、保存環境設定手段は、ファイルムーブ制御手段によるファイルムーブイベントの起動が禁止されるファイルコピーモードと、ファイルムーブイベントの起動が許可されるファイルムーブモードとを切り替えるファイル保存モード切替手段を有するものとすることができる。これにより、周辺機器側からの遠隔操作により記憶媒体中のデータファイルの保存モードを、コピーとムーブとの間で切り替え設定することができる。なお、コピー制限の付与されたファイルが検出された場合、自動的にムーブモードが選択されるように構成してもよい。
周辺装置側トリガ発生手段は、周辺装置に設けられた手動操作部と、当該手動操作部による操作信号を周辺装置側トリガとして発生させる操作信号発生部とを有するものとして構成することができる。周辺装置に設けられた手動操作部を操作することで、主通信プロトコルの介在により従来はホスト装置側からしか起動できなかった通信イベント(例えば前述のデータファイルの読出しや保存)を、周辺機器側からの遠隔操作により簡単に始動できるようになる。
トリガ報告要求コマンド発行手段は、トリガ報告要求コマンドを周辺装置に対し予め定められた時間間隔で繰り返し継続的に発行するものとすることができる。トリガ報告要求コマンドを繰り返し継続的に発行することで、周辺装置側トリガがどのようなタイミングで発生しても、ホスト装置側でこれを確実に取得することができる。
なお、本発明では、周辺装置との間でピア・ツー・ピア通信が可能な別プロトコルに準拠した通信インターフェース(例えば、IEEE1394ないし1394b)をホスト装置側に組み込み、その通信インターフェースの端子に周辺装置を接続する構成も可能である。このハードウェア構成では、周辺装置側から上記通信インターフェース(すなわち、ホスト装置)に通信処理用のコマンドを発行することができるので、トリガ報告要求コマンド発行手段(ホスト装置側)やトリガ発生報告情報返信手段(周辺装置側)などの主通信プロトコルに従う機能を省略した、本発明に属さない参考技術態様へのシフトが一応可能ではある。ただし、この参考技術態様は、ホスト装置側のシステムに上記ピア・ツー・ピア通信を可能とするための別プロトコルを取り扱うモジュールも組み入れねばならず、通信インターフェースの高コスト化も免れ得ない欠点があるので現実的ではない。
他方、本発明においては、周辺装置とホスト装置とを、ホスト装置側からの周辺装置のポーリングは可能であって、該周辺装置側からのホスト装置の逆ポーリングが不能なシリアル通信機構を介して接続し、通信イベントを実行するためのホスト装置と周辺装置との間における情報転送を、ホスト装置が周辺装置をポーリングする形式にてシリアル通信により実行されるものとして構成できる。この構成では、周辺装置側からホスト装置をポーリングすることができない(つまり、周辺装置側に通信開始の決定権が与えられない)形になるので、本発明の効果がより有効に発揮されるばかりでなく、周辺装置を直接接続するためのホスト装置側の通信インターフェースが大幅に簡略化され、システム構成の軽量・低コスト化を図ることができる。このようなシリアル通信の規格として、USB(Universal Serial Bus)を例示できる。また、本明細書では、主通信プロトコルとしてSCSIプロトコルが採用され、かつ、ホスト装置とUSBプロトコルに従うシリアル通信バスにより接続される周辺機器のことを、USB/SCSI型周辺機器とも称する。
USBを採用する場合、周辺装置は、より具体的には以下のように構成できる。すなわち、コマンドをホスト装置から受信してコマンド内容を解析するコマンド解析ステップと、該コマンドの解析内容を反映したデータ処理を実行するデータ処理ステップと、データ処理の結果を示す応答情報をホスト装置に返信する応答情報返信ステップとをこの順序で実行する形で周辺機器側の通信処理制御を行なうアクセス制御デバイスと、上記コマンド及び応答情報の相互転送を、前記ホスト装置が複数の前記アクセス制御デバイスをポーリングする形式にてシリアル通信により実行するシリアル通信部とを有するものとして構成する。アクセス制御デバイスは、シリアル通信部との間でコマンド及び応答情報を送受信する送受信部と、コマンドを解釈してその内容に応じたデータ処理を制御実行主体とからなるものとして構成される。なお、送受信部とシリアル通信部とは専用ICに集積することができる。この構成では、USBプロトコルに従うシリアル通信にバスを介して、SCSI等の主通信プロトコルに従うコマンドないし応答情報のやり取りを問題なく行なうことができる。
より具体的には、周辺装置側のシリアル通信部が、ホスト装置からのシリアル通信バスを接続する通信バス接続端子と、シリアル通信バスと送受信部との間でコマンド及び応答情報の転送通信処理を実行する通信制御部とを備え、該通信制御部が、通信バス接続端子に接続される通信処理のプロトコルエンジン部と、該プロトコルエンジン部にFIFOメモリからなる制御用の双方向エンドポイントを介して接続され、転送通信処理の制御を司る制御指令部とを備えたものとして構成できる。そして、送受信部は上記プロトコルエンジン部に対し、FIFOメモリからなる該プロトコルエンジン部への入力用エンドポイントと、FIFOメモリからなる該プロトコルエンジン部からの出力用エンドポイントとを介して入出力経路が分離された形で接続することができる。また、通信制御部は、ホスト装置側から、データアクセスの対象となる送受信部の特定情報と、該送受信部に対応するエンドポイントの特定情報とを受信して、各送受信部をターゲットデバイスとしてポーリングするものとなるように構成することができる。送受信のデータバッファとなるエンドポイントを送信側と受信側とで独立して設け、ポーリング時にいずれのエンドポイントを指定するかによって、データの転送方向も容易に特定することができる。
次に、本発明の通信システムにおいては、
ホスト装置側に設けられ、周辺装置に対し該周辺装置自身に対する調査報告処理を要求する調査要求コマンドを発行するとともに、該調査要求コマンドの発行に伴い、調査報告指示内容を示す予め定められたフレームフォーマットを有するとともに当該フレームの予め定められたフィールドに付加情報が書き込まれた調査指示データを作成する調査指示データ作成手段と、作成された調査指示データを周辺装置に送信する調査指示データ送信手段と、
周辺装置に設けられ、調査指示データを受けて、予め定められたフレームフォーマットを有する調査報告データを生成する調査報告データ生成手段と、
周辺装置に設けられ、調査報告データを応答情報としてホスト装置に送信する調査報告データ送信手段と、
周辺装置側に設けられ、受信した該調査指示データの予め定められたフィールドから付加情報を抽出する付加情報抽出手段と、を設けることができる。
本発明において主通信プロトコルは、周辺装置をなす記憶装置との間のデータファイルの送受信を行なうのが主目的であり、主通信プロトコルがサポートしていない制御処理(特に、周辺装置側で通信イベントを開始するような処理)に関与する情報は、主通信プロトコルがサポートする制御情報からは独立した付加情報として取り扱う必要がある。このような付加情報は、送受信の対象となるデータファイルの本体に書き込んでも意味がない。なぜなら、制御実行等のために付加情報の内容をホスト装置側あるいは周辺装置側で参照しようとした場合、そのデータファイルを開くためのアプリケーションソフトを立ち上げる必要が生じ、全く現実性がないためである。しかし、上記の構成によれば、ホスト装置側から周辺装置側へ送りたい付加情報を、周辺装置に対し該周辺装置自身に対する調査報告処理を要求する調査要求イベントを利用する形で、その調査要求コマンドの発行に伴い作成される調査指示データの予め定められたフィールドに書き込むことで、主通信プロトコルによる制御下でデータファイルを経由せずに確実に送信することができる。
また、調査報告データ生成手段は、調査報告データの予め定められたフレームにホスト装置側からの付加情報に対応する対応付加情報を書き込むものとすることができ、調査報告データ送信手段は、その対応付加情報が書き込まれた調査報告データを応答情報としてホスト装置に送信するものとすることができる。これにより、周辺装置側からホスト装置側へ送りたい対応付加情報を、上記調査要求コマンドに対する応答情報である調査報告データの予め定められたフィールドに書き込むことで、主通信プロトコルによる制御下でデータファイルを経由せずに確実に送信することができる。
具体的には、前述のトリガ報告要求コマンドとして調査要求コマンドを使用することができる。この場合、調査指示データに付加情報として周辺装置側トリガの発生報告指示情報が書き込まれるとともに、対応する調査報告データに対応付加情報としてトリガ発生報告情報が書き込まれる。これにより、周辺装置側トリガの発生報告指示を周辺装置側に適確に伝えることができ、また、周辺装置側での周辺装置側トリガを調査報告データ中のトリガ発生報告情報により確実に把握することができる。
他方、調査要求コマンドは、表示部に表示させる文字情報をホスト装置から周辺装置に送信する通信イベントの起動に使用することもできる。この場合、調査指示データには、付加情報として送信すべき文字を特定するための文字コード情報が付加情報として書き込まれる。また、周辺装置側には、表示部への表示用文字データを文字コードと対応付けて記憶する表示用文字データ記憶手段と、付加情報抽出手段が抽出する付加情報としての文字コード情報に対応する表示用文字データを表示用文字データ記憶手段から読み出して、表示部に表示させる表示制御手段とを設けておく。このようにすると、主通信プロトコルに文字列転送用のコマンドが存在しない場合でも(特に、SCSIプロトコル)、周辺装置側の表示部に表示したい文字の文字コードを、調査要求コマンドを用いて転送することが可能となる。そして、周辺装置側に表示用文字データ記憶手段を設けておくことで、受けた文字コードに対応する表示用文字データを用いて表示部に文字を表示することができる。なお、表示するべき文字列が長い場合は、複数回の調査要求コマンドの実行により分割送信することが可能である。また、2バイト文字(全角漢字や記号など)など、1つの文字に対応する文字コードのデータサイズが、調査指示データのフィールドサイズを超える場合、1つの文字コードを分割して複数回の調査要求コマンドの実行により送信することも可能である。
また、調査要求コマンドは、周辺装置から受信したデータファイルと重複するファイル名を有したデータファイルが保存領域に存在する場合に、これを周辺装置に通知する通信イベントの起動に使用することもできる。この場合、調査指示データには付加情報として重複ファイル名特定情報が書き込まれる。また、周辺装置には、受信した重複ファイル名特定情報に基づいて重複ファイル名を表示部に表示する重複ファイル名表示手段と、表示された重複ファイルに対しホスト装置に指示する対応処理を選択入力するための対応処理選択入力部とを設けることができる。この場合、調査報告データには対応付加情報として、対応処理選択入力部からの入力情報に基づいて対応処理を指示する対応処理指示情報が書き込まれ、ホスト装置側には、周辺装置から受領する対応処理指示情報の内容に基づいて、重複ファイルに対し指示された対応処理を実行する対応処理実行手段を設けることができる。
上記のように構成すると、周辺装置側で選択したデータファイルが、ホスト装置側の記憶領域に既に存在している場合に、その存在を通知する情報を周辺装置側で表示でき、当該重複ファイルへの対応処理も周辺装置側での対応処理選択入力部からの入力情報により適確に指示することができる。対応処理としては、ホスト装置側又は記憶媒体側のデータファイル名を変更するデータファイル名変更処理を実行することができる。この場合、ホスト装置側のデータファイルのファイル名を変更するか、記憶媒体側のデータファイルのファイル名を変更するかを選択できるように構成することができる。
調査指示データ作成手段は調査指示データにおいて、格納するべき主格納情報として発生報告指示情報以外の情報が格納されるよう主通信プロトコルに規定されたフィールドに、発生報告指示情報を主格納情報に兼用させる形で書き込むものとすることができる。主通信プロトコルがSCSIプロトコルのごとく既製の通信規格に従う場合などにおいては、本発明において初めて発生する技術概念である(トリガ)発生報告指示情報用の専用フィールドを、調査指示データのフレーム内に新たに設定できる余地が存在しない場合がある。このとき、上記のように本来発生報告指示情報とは全く別の主格納情報用に用意されたフィールドに、発生報告指示情報(を含む付加情報)を当該主格納情報に兼用させる形で書き込むようにすれば、上記のごとく専用フィールドを設ける余裕がない場合でも発生報告指示情報を問題なく書き込むことができる。
例えば、周辺装置が、少なくともデータの読出しに係るデータアクセスが可能とされた記憶媒体が内蔵されるか又は着脱可能に装着され、通信イベントにより該記憶媒体に対してデータアクセスを行なう記憶装置として構成される場合、調査指示データにおいて、主通信プロトコルに従い記憶媒体に対するデータの読み出し又は書き込みに係る通信イベントを実行する際に、該読み出し処理又は書き込み処理に割り当てられる当該記憶媒体上のメモリ領域のアロケーション長を設定するためのフィールドをアロケーション長設定フィールドとして確保することができる。この場合、該アロケーション長設定フィールドにおいてアロケーション長情報を主格納情報とする形で、該アロケーション長情報に兼用される発生報告指示情報を書き込むことができる。このようにすると、アロケーション長情報に兼用させる形で、主通信プロトコルに規定されていない固有の付加情報を周辺装置側へ送信することが可能となり、周辺装置側トリガの発生報告指示情報を周辺装置側へ問題なく送信できる。
主通信プロトコルにおいて、アロケーション長設定フィールドのサイズが一定ビット長に定められる場合、アロケーション長設定フィールドに上記付加情報を書き込む空き領域を形成するために、次のような巧妙な方法が存在する。すなわち、アロケーション長として設定可能な最大値をバイト単位にて表わしたときのビット数を、アロケーション長設定フィールドの総ビット数未満に設定する。そして、上記最大値を超えるアロケーション長がアロケーション長設定フィールドに記述された場合には、記述されたアロケーション長値とは無関係に上記最大値をアロケーション長の実設定値として定める。そして、該最大値を超える冗長なアロケーション長記述値に一義的に対応付ける形で、発生報告指示情報を含む、異なる付加情報内容を定義することができる。例えば、SCSIプロトコルにおける後述のInquiryコマンドのCDBを調査指示データとして使用する場合、このCDBはSCSIプロトコル制御用に割り振られたフィールドばかりからなり、ユーザーが新たなデータを書き込むための余裕は一見全く存在しないように見える。しかし、本来はSCSIプロトコルの主格納情報であるアロケーション長の設定フィールドにおいて、上記のごとくアロケーション長として設定可能な最大値をアロケーション長設定フィールドの総ビット数未満に設定することで、該最大値を超える冗長なアロケーション長の設定記述値に、発生報告指示情報を含む付加情報としての意味をもたせることができる。
次に、SCSIプロトコル等の場合、調査要求コマンドにはいくつかの種別が用意されている場合がある。この場合、どのような種別の調査要求コマンドをトリガ報告要求コマンドとして使用するかが問題になる場合がある。例えば、周辺装置が、データの読出し及び書込の双方に係るデータアクセスが可能とされた記憶媒体が着脱可能に装着され、通信イベントにより該記憶媒体に対してデータアクセスを行なう記憶装置として構成される場合、周辺装置には、記憶媒体の交換がなされた場合に当該記憶媒体の交換をホスト装置に通知するための交換通知情報を保持する交換通知情報保持手段と、ホスト装置から予め定められた第一種コマンドを受信した場合には、該コマンドの実行後に交換通知情報保持手段に保持されている交換通知情報をクリアし、同じく第一種コマンド以外の第二種コマンドを受信した場合は、該コマンドの実行後においても交換通知情報保持手段による交換通知情報の保持状態を保留する交換通知情報保持制御手段とが設けられる場合がある。この場合、トリガ報告要求コマンドとして使用する調査要求コマンドとしては、第二種コマンドの使用が強く推奨される。なぜならば、このような目的に第一種コマンドを使用した場合、交換通知情報を特に必要としないトリガ報告要求イベントであるにも拘わらず、処理終了時には交換通知情報がクリアされてしまい、ホスト装置側でこの交換通知情報を本来必要とするシステムコンポーネント(例えばファイルシステム)が、これを取得できなくなってしまう状況が発生し、記憶媒体の記憶内容が破壊されたりするといったトラブルにつながる場合があるためである。
調査要求コマンドとしては、例えば、周辺装置に対し該周辺装置自身の構成及び属性を特定する情報である構成/属性特定情報の報告を指示する構成/属性調査要求コマンドを採用することができる。このような周辺装置自身の構成及び属性の特定に係る通信イベントは、主通信プロトコル上では、例えばどのような種別の周辺装置(デバイス:SCSIの場合、ターゲット)が接続されているのかを、装置立ち上げ時に認識するために実行する目的で使用されることが多いが、これを本発明では、周辺装置における周辺装置側トリガの発生を監視用に、装置立ち上げ後においても所定のタイミングで繰り返し発行する。該構成/属性調査要求コマンドにより規定される通信イベントは、本来的には(装置使用中においては不変となる)周辺装置のいわば「素性」を認識することのみが目的であり、例えば、コマンドの発生の前後で記憶媒体の交換があった場合において、交換通知情報の保持状態等に不要な影響を与えるべきではないので、上記の第二種コマンドとして用意することが望ましいのである。これを周辺装置側トリガの発生監視用に流用することで、該コマンドを何度繰り返し発行しても交換通知情報の保持状態には影響が及ばず、前述のトラブルを防ぐことができる。
主通信プロトコルがSCSIプロトコルである場合、上記の調査要求コマンドとしてInquiry(照会)コマンドを使用することが望ましい。この場合、ホスト装置(イニシエータ)から周辺装置(ターゲット)に送られる調査指示データは、Inquiryコマンドの詳細内容を記述する、CDB(Command Descriptor Block:コマンド記述ブロック、コマンド毎にフレーム形式がSCSIプロトコルにて詳細に規定されている)であり、周辺装置(ターゲット)からホスト装置(イニシエータ)に返される調査報告データはInquiryデータ(フレーム形式がSCSIプロトコルにて詳細に規定されている)である。表1はInquiryコマンドに対応するCDBの形式を示すものである。
SCSIプロトコルでは、ホスト装置(イニシエータ)側で周辺装置(ターゲット)から返されるInquiryデータの種別を指定することができる。具体的には、Inquiryコマンドに対応するCDBには、EVPD(Enable Vital Product Data)と称されるフィールド(1ビット)と、ページコード(8ビット)と称されるフィールドが形成されている。表2に示すごとくEVPDフィールドに「0」が記述されているCDB(以下、CDB(0)と略記する)に対しては、Inquiryデータとして、表3に示すような、周辺装置の仕様に関係なく形式及び内容が共通に定められたスタンダードInquiryデータ(以下、S/Iデータと略称する)が返される。S/Iデータのうち、SCSIプロトコルによる通信制御に直接使用しない空き領域を、トリガ発生報告情報等、本発明特有の応答情報(以下、特有応答情報という)の記述フィールドとして使用することができる。
例えば、S/Iデータでは、デバイスのベンダに固有の情報を記述するための一定長のフィールド(以下、ベンダ固有領域という)が設けられており、このフィールドに空き領域がある場合は、これを本発明特有の応答情報の記述フィールドとして使用することができる。また、ビット数は僅少であるが、次のような空き領域も、本発明特有の応答情報の記述フィールドとして利用することができる。すなわち、8ビットに設定された追加データ長フィールド(S/Iデータのバイト5以降のデータ長)は、S/Iデータにおけるデータフレーム長の上限から、最大データ長が8ビットに満たないことがある。この場合、追加データ長フィールドに上記最大データ長を超えるデータ長が指定されている場合、追加データ長フィールドの記述内容によらず、最大データ長が指定されることとなる。その結果、最大データ長を超えるビット値の範囲は、実質的に特有応答情報を記述するための「空き領域」として活用できる。
一方、表4のごとく、EVPDフィールドに「1」が記述されているCDB(以下、CDB(1)と略記する)は、ホスト装置(イニシエータ)により詳細な、あるいはデバイス固有の情報を提供するための、表5のようなVPD(Vital Product Data)と称される特殊なInquiryデータが返される。
VPDにはいくつかの種類が規定されており、どの種別のVPDを指定するかをCDBのページコードフィールドに記述する(具体的には、ページコードリスト(ページコード:00h)、FRU ASCII情報(ページコード:01h〜7Fh)、ユニットシリアル番号(ページコード:80h)、動作モード定義(ページコード:81h)、ASCII動作モード定義(ページコード:82h)、及びベンダ固有の形式(ページコード:C0h〜FFh))。周辺装置はページコードフィールドで指定された種類のVDPを作成し、ホスト装置に返信する。特に、FRU ASCII情報形式及びASCII動作モード定義形式のVPDは、ページ長フィールドに続いて、必要なASCII情報を書き込むフィールドのデータ長のフィールドと、そのデータ長で指定されるASCII情報フィールドとが形成されるが、以降のフィールドはベンダ固有領域として、特有応答情報を記述するための「空き領域」として活用できる。例えば、ASCII動作モード定義形式のVPDにおいて、ASCII情報フィールドを、デバイスのバージョン情報などを記述するためのバイト数の小さい(例えば1〜3バイト)のフィールドとして定義すれば、ベンダ固有領域となる残りのフィールドの長さを比較的大きく確保することができ、ある程度サイズの大きい特有応答情報を書き込むことが可能となる。
SCSIプロトコルでは、ターゲット(周辺装置)、あるいはこれに含まれる1又は複数のロジカルユニット(周辺装置が記憶装置である場合は、1又は複数の記憶媒体装着スロットである)上で事象や状態の変化が、ホスト装置(イニシエータ)の動作とは非同期に発生した場合、これを該イニシエータに通知するためのユニット・アテンション・コンディションを生成する機能が設けられている。周辺装置にて記憶媒体の交換が発生した場合、その交換通知情報が生成されるユニット・アテンション・コンディションに反映されることとなる。SCSIプロトコルでは、そのようなユニット・アテンション・コンディションを保留中の周辺装置に向けてInquiryコマンドが発行された場合、該周辺装置は保留中のユニット・アテンション・コンディションをクリアせずに(ただし、Copy Aborded(CA)状態の生成前に限る)、発行されたInquiryコマンドが実行される(Inquiryデータの作成・返信)。従って、トリガ発生報告情報など特有応答情報の返信要求イベントを起動する際にあっては、Inquiryコマンドを用いることで、記憶媒体の交換がなされた場合も、その交換通知情報を含むユニット・アテンション・コンディションが保持され、交換通知情報の喪失を防ぐことができる。Inquiryコマンドが前述の第二種コマンドに該当するものであることは明らかである。
なお、SCSIプロトコルでは、Request Senseコマンドと称される別の調査要求コマンドも使用が可能である。Request Senseコマンドは、周辺装置(ターゲット)に例えばエラー原因や種類などを報告するためのセンスデータを要求するコマンドであり、調査報告データとして該センスデータが規定フォーマットのフレームに記述されて返される。本発明においては、このセンスデータの空き領域を利用してトリガ発生報告情報など特有応答情報を書き込み、ホスト装置に返すことも原理的には可能である。しかし、SCSIプロトコルでは、SCSIプロトコルでは、ユニット・アテンション・コンディションを保留中の周辺装置に向けてRequest Senseコマンドが発行された場合、該周辺装置は保留中のユニット・アテンション・コンディションをクリアするように(ただし、Copy Aborded(CA)状態の生成前に限る)決められており、記憶媒体の交換がなされた場合に、その交換通知情報を含むユニット・アテンション・コンディションがクリアされ、交換通知情報が喪失する惧れがある。つまり、Request Senseコマンドは前述の第一種コマンドに該当するものである。
以下、適宜図面を参照して本発明の実施形態に係る通信システム1について説明する。図1は通信システム1に適用されるマルチリーダライタ2(記憶装置:周辺装置の一例)の斜視図、図2はマルチリーダライタ2の概略構成を示すブロック図、図6は通信システム1に適用されるPC3(ホスト装置の一例)の概略構成を示すブロック図である。なお、以下に説明する通信システム1の構成は、本発明を具現化するための単なる一例であり、本発明の要旨を変更しない範囲で構成を適宜変更できることは当然である。
図1(a)に示すように、マルチリーダライタ2は、その前面に着脱可能な記憶媒体として、第1メモリーカード11(例えばCF)を挿入するための第1スロット16と、第2メモリーカード12(例えばSM)を挿入するための第2スロット17と、第3メモリーカード13(例えばMS)を挿入するための第3スロット18と、第4メモリーカード14(例えばSD)を挿入するための第4スロット19とを備えている。なお、本実施形態では、周辺装置としてマルチリーダライタ2を例示して説明するが、シングルスロットタイプのリーダライタにも適用可能である。また、CFやSMなどのメモリーカードに代えてCD−ROM、DVD−ROMあるいはリムーバブルハードディスクなどのディスク記録メディアとする場合は、該ディスク記録メディアを単数あるいは複数着脱可能に挿入可能な挿入部を備えてなる、いわゆるチェンジャー型ドライブ周辺装置となる。該周辺装置を備えて構成された通信システムにも本発明は適用可能である。
マルチリーダライタ2はUSB/SCSI型周辺機器として構成され、その背面には、図1B及び図2に示すように、USBケーブル25(図2参照)を接続するためのUSB端子24が設けられている。また、本実施形態では、主通信プロトコルとしてSCSI−2のプロトコルが採用されているものとする。図2に示すように、マルチリーダライタ2は、その内部に、各構成部を制御するCPU27と、制御プログラムや種々のデータ等を格納するROM28と、CPU27による演算の作業領域となるRAM29と、入出力制御LSI31と、USBチップ32とを備え、これらがバス33を介して相互にデータ転送が可能なように接続されている。マルチリーダライタ2は、該マルチリーダライタ2が接続されるPC3との間で、SCSIプロトコルに従うデータ通信を行なう。
具体的には、ROM28には、SCSIプロトコルに基づいて作成された通信制御プログラムと、PC3から送信されたデータ(CDB)を解析するために用いられる解析データのテーブルリストが格納され、CPU27は、リーダライタ2がSCSI対応機器のターゲットとして機能するための、受信したSCSIコマンドに対応した通信イベントの実行制御処理を行なう。また、各スロット16〜19に着脱可能に装着される各第1〜第4メモリーカード11〜14は、例えば、コンパクトフラッシュ(CF:登録商標)、スマートメディア(SM:登録商標)、メモリースティック(MS:登録商標)、SDメモリーカード(SD:登録商標)など、PC3によるデータの書き込み、書き換え、消去、読出し、メディア装着確認等のデータアクセスが可能なフラッシュメモリを搭載したカード型記憶メディアである。なお、記憶デバイスとしては、CD−ROM、DVD−ROM、リムーバブルハードディスク等の読出し専用の記憶媒体からデータの読出しを行なうドライブ装置を用いることもできる。
SCSIプロトコルに従い、PC3はホスト装置として通信イベントの起動決定権が与えられ、該PC3(ホスト装置:イニシエータ)に接続されるマルチリーダライタ2は、PC3(ホスト装置)の通信対象(ターゲット)となる。そして、通信イベントを実行命令するためのSCSIコマンドがPC3(ホスト装置)からマルチリーダライタ2(周辺装置)に向けて順次発行される一方、発行されたコマンドを受領したマルチリーダライタ2(周辺装置)が当該SCSIコマンドに対応するデータ処理を逐次実行し、その実行結果に応じた応答情報をホスト装置側に返信する。また、SCSIコマンドの発行方向は、PC3(ホスト装置)側からマルチリーダライタ2(周辺装置)側への一方向に規制されている。
次に、マルチリーダライタ2には、予め定められた内容の対象通信イベントの起動をホスト装置に促すための周辺装置側トリガを、該周辺装置側でのユーザー操作に基づいて発生させる周辺装置側トリガ発生手段の機能が具備されている。具体的には、周辺装置側トリガ発生手段を構成する手動操作部としてキーボード22が筐体上面に設けられている。キーボード22を構成する各ボタン22a,22b,22には、それらボタンの押圧操作により独立に付勢されるスイッチが設けられ、ボタンの押圧/解除に伴いスイッチ出力信号のレベルが変化する。このスイッチ出力信号を周辺装置側トリガ信号として利用できる。該周辺装置側トリガ信号は、図2において入力制御LSI30に入力される。また、表示部をなす液晶表示パネル(以下、LCDという)21が表示制御LSI34を介してバス33に接続されている。
入力制御LSI30は周辺装置側トリガ信号を受け、トリガ検出データ信号(レベル信号である)を、ボタン毎に異なるアドレスにてデータバス上に出力する。データバス上のトリガ検出データ信号は、後述のInquiryコマンド実行時に参照され、各ボタンに対応するアドレスのトリガ検出データが「トリガあり」の状態を示していれば、作成されるInquiryデータに、対応するボタンが操作された内容の対応付加情報を書き込む。つまり、キーボード22の操作状態の検出は、PC3からの指示に従って行われる。なお、Inquiryデータ作成後は、トリガ検出データ信号はリセットされる。本実施形態では、ボタン22a及びボタン22bが、LCD21に表示される複数行の文字列を上下にスクロールするためのスクロールキーであり(符号22aが上スクロールキー、符号22bが下スクロールキー)、ボタン22cは、LCD21に表示される文字列の選択(例えばシングルクリック時)、及び確定(例えばダブルクリック時)の操作を行なうための実行キーである。
次に、USBチップ32には、各外部メモリ入出力制御部51〜54に共通して設けられたコマンド・データ・ステータス送受信部(以下、単に「送受信部」という;転送要素送受信部)341と、USB端子(通信バス接続端子)24に接続されたUSBプロトコルエンジン(プロトコルエンジン部)321と、転送通信処理の制御を司るUSBコントロール部(制御指令部)331とが集積されてなる。
ここで、USBプロトコルエンジン(プロトコルエンジン部)321と、USBコントロール部(制御指令部)331とで構成される部分が通信制御部に該当し、また、この通信制御部と、USB端子(通信バス接続端子)24とで構成される部分がシリアル通信部に該当する。
各USBコントロール部331は、対応するUSBプロトコルエンジン321にFIFOメモリからなる制御用の双方向エンドポイントを介して接続されている。また、送受信部341は、USBプロトコルエンジン321に対し、FIFOメモリからなるUSBプロトコルエンジン321への入力用エンドポイントと、FIFOメモリからなるUSBプロトコルエンジン321からの出力用エンドポイントとを介して入出力経路が分離された形で接続されている。
USBプロトコルエンジン321とUSBコントロール部331とで構成される通信制御部は、それぞれ、PC側から、送受信部341の特定情報と、該送受信部341に対応するエンドポイントの特定情報とを受信して、該送受信部341をターゲットデバイスとしてポーリングすることにより、データアクセス先が外部メモリ入出力制御部51〜54であることと、データ送受信の方向とを特定する。なお、当然のことであるが、ターゲットデバイスとなる送受信部341側からホスト装置であるPC3を逆ポーリングすることは、USBプロトコルでは許されていない。
送受信部(転送要素送受信部)341は、USBプロトコルエンジン321との間でSCSIプロトコルに従う送受信するものである。ここで、転送要素とは、PC3との間でUSBバスを介してやり取りされる、通信イベントの内容を特定するコマンド(SCSIコマンド)と、通信イベント処理実行に対応して周辺装置側から返信される応答情報(ステータス)とを含む(SCSIコマンドに特定された処理内容が、メモリーカードに記憶されたデータの送受信に関係するデータアクセス処理であった場合は、そのデータも転送要素となる)。
また、送受信部341は、図3に示すように、コントロールレジスタ81(図4参照)、ステータスレジスタ82(図5参照)、SCSIコマンドバッファ83、SCSIステータスバッファ84、SCSIデータDMAアドレスレジスタ85、SCSIデータDMAカウントレジスタ86を有する。これらの詳細については後述する。
CPU27は、送受信部341が受信したSCSIコマンドを解析するコマンド解析ステップと、該SCSIコマンドに特定された内容の通信イベントを、対象となる外部メモリ入出力制御部51〜54(つまり、リーダライタ2をターゲットとした場合、それに含まれている複数のロジカルユニット)との間で行なうイベント実行ステップと、ステータスを送受信部341に送信させるステータス送信ステップと、をこの順序で実行する。
マルチリーダライタ2では、挿入されたメモリーカードに対してデータの読み書きを行なう場合は、該メモリーカードからデータを読み出すために使用するメモリ領域あるいは該メモリーカードにデータを記憶するために使用するメモリ領域の割り当てが行われる。この割り当てられるメモリ領域のデータ長はアロケーション長と呼ばれている。一般に、該アロケーション長はマルチリーダライタ2にアクセスするPC3からの指定されたデータ長に設定されるが、本実施形態では、マルチリーダライタ2で設定可能なアロケーション長の最大値が、PC3側から指定し得る最大数値未満に設定されている。
PC3は、図6に示すように、各構成部を制御するCPU41と、ROM42と、RAM43と、各種ソフトウェアプログラムやデータが格納されたHDD44と、ビデオコントロールLSI45と、USBチップ46と、ビデオ端子47と、複数の入出力ポートを有するUSB端子48などを備え、これらがバス100を介して相互にデータ転送が可能なように接続されている。これら各部はいわゆるマザーボードと呼ばれるメイン制御基板に一体的に組み込まれている。ビデオ端子47にはビデオケーブルを介してディスプレイ56が接続されている。USB端子48はUSBハブ機能を有する。このUSB端子48には、キーボード57及びマウス58等の入力手段が接続されており、さらに、マルチリーダライタ2が接続されている。
ROM42には、マルチリーダライタ2へ送信されるデータであって、マルチリーダライタ2のCPU27に所定の処理を実行させる指示データが格納されている。該指示データはテーブルリスト化された状態でHDD44又はROM42に格納されている。また、HDD44のプログラム格納領域には、PC3のオペレーションシステムであるWindows2000(登録商標)のSP3(以下「WIN2000」と称する)や、マルチリーダライタ2へのデータの書き込み及び読み出しを可能とするためのR/Wアプリケーションなどのソフトウェアプログラムが格納されている。これらソフトウェアプログラムがCPU41によって読み出されて所定の演算処理がなされることにより、各アプリケーションがPC3において動作可能となる。また、上記プログラム格納領域には、マルチリーダライタ2との間でSCSIプロトコルに従うデータ通信プログラムが格納されている。本実施形態では、WIN2000が搭載されたPC3を例示して説明するが、Linuxシリーズ、MacOSシリーズなどのOSが搭載されたものであってもよい。もちろん、Windows2000のSP3をSP4に代替することも可能である。
上記R/Wアプリケーション、PC3側のデータ通信プログラム及びリーダライタ2側の制御プログラムは、互いに協働して、以下の各手段を機能的に実現する処理を行なう。
・トリガ報告要求コマンド発行手段:PC3(ホスト装置)側のR/Wアプリケーションにより機能実現され、リーダライタ2(周辺装置)においてボタン(手動操作部)3が操作されるに伴い発生する周辺装置側トリガを監視するために、SCSIプロトコル(主通信プロトコル)に従い、トリガ発生報告情報を応答情報として要求するためのトリガ報告要求コマンドを、Inquiryコマンド、具体的には前述のCDB(1)を用いたInquiryコマンド(以下、Inq(1)コマンドという)として、リーダライタ2(周辺装置)に向けて発行する。
・トリガ発生報告情報返信手段:リーダライタ2側の制御プログラム(ROM28内)により機能実現され、周辺装置側トリガの発生の有無を反映したトリガ発生報告情報を応答情報としてPC3(ホスト装置)にSCSIプロトコルに従い返信する。
・報告情報受領手段:R/Wアプリケーションにより機能実現され、トリガ発生報告情報をリーダライタ2から受領する。
・対象通信イベント起動手段:R/Wアプリケーションにより機能実現され、受け取ったトリガ発生報告情報の内容に基づいて周辺装置側トリガの有無を判定し、該周辺装置側トリガがありと判定された場合に、対象通信イベントを起動させる。対象通信イベントの実行手段としては、次の各手段が機能実現される。
・ファイルリスト表示イベント実行手段:ホスト装置(PC3)側からメモリーカードに記憶されたデータファイルを検索して得られるファイルリストの内容を示す文字表示情報をホスト装置(PC3)側で作成し周辺装置(マルチリーダライタ2)側に送信するとともに、該文字表示情報を周辺装置にて受信し、該周辺装置に設けられた表示部(LCD21)にファイルリストの内容を文字表示させるファイルリスト表示イベントを、ファイルリスト送信要求イベントの完了を受けて実行する。
まず、図7を用いて、SCSIコマンドに基づいて、PC3と、USB−I/F78を介して該PC3とUSB接続されたリーダライタ2との間で行われるデータ通信の概略について説明する。OS70は、GUI(Graphical User Interface)71とファイルシステム72とOSカーネル73を備えてその基幹システムが構成されている。GUI71は、コンピュータグラフィックスとマウスなどのポインティングデバイスを用いてユーザーの入力操作を実現するユーザインターフェースであり、ファイルシステム72は、コンピュータ内部でファイルやフォルダを用いてデータを管理する方式及びその管理システムである。また、OSカーネル73はアプリケーションや周辺機器を監視する等の基本機能を実装したソフトウェアである。なお、PC3には、リーダライタ2へのアクセスが可能なようにドライバソフト74が予めインストールされており、該ドライバソフト74はモジュール化された状態でOSカーネル73に実装されている。
例えば、リーダライタ2へアクセスするためのアプリケーションの一例であるエクスプローラ75とR/Wアプリケーション76とがPC3上で起動されたとする。エクスプローラ75は周知のごとく、ファイルやフォルダを管理するためのものである。エクスプローラ75はOS70のシステムに準拠して作成されており、一般には、OS70の一機能として認識されている。従って、エクスプローラ75はファイルシステム72を介してリーダライタ2と通信する。一方、R/Wアプリケーション76は、例えばリーダライタ2の製造メーカが開発した独自のアプリケーションソフトであって、リーダライタ2に挿入された記録メディアに対してデータを書き込む処理あるいはデータを読み出す処理を行なうものである。一般に、R/Wアプリケーション76は、ファイルシステム72の仕様が公開されていないため、OS70には準拠せずに作成される。
まず、エクスプローラ75からリーダライタ2にアクセスする場合について説明する。OS70が起動され、エクスプローラ75が起動されると、エクスプローラ75によって、Inquiryコマンドがファイルシステム72を介してOSカーネル73に発行される。なお、Inquiryコマンドを含む全てのSCSIコマンドは、OSカーネル73において仮想的に設けられたSCSIコマンド処理入口79に対して発行されるようになっている。上記Inquiryコマンドが発行されると、リーダライタ2へは対応するCDB(ここではCDB(0);表2)が送信され、リーダライタ2は応答情報として、その型式やデバイス名、SCSI−ID、LUN(Logical Unit Number:ロジカルユニット番号)の有無、メモリーカードの種別などの構成情報を含むInquiryデータ(この場合、S/Iデータ(表3))を作成し、PC3に返信する。これにより、リーダライタ2が認識される。
リーダライタ2が認識されると、GUI71によってエクスプローラ75上にリーダライタ2のドライブアイコンが生成される。そして、ユーザーがマウスなどを用いて上記ドライブアイコンにアクセスするなどして、データの読出指示が入力されると、エクスプローラ75はファイルシステム72に働きかけて、OSカーネル73に対してReadコマンド(SCSIコマンドの一例)を発行させる。一方、同様に、書込指示を入力すると、OSカーネル73に対してWriteコマンド(SCSIコマンドの一例)を発行させる。これらのコマンドデータがUSBなどのI/Fを介してリーダライタ2に転送され、該コマンドに従った読み出し若しくは書き込みがリーダライタ2側で実行される。なお、上記InquiryコマンドはPC3にリーダライタ2が接続されたときや、リーダライタ2が接続された状態でPC3の電源がリセットされたときにも発行される。
次に、R/Wアプリケーション76からリーダライタ2にアクセスする場合について説明する。R/Wアプリケーション76が起動されると、OSカーネル73に対してR/Wアプリケーションにのみデータバスを開放する要求が出される。OSカーネル73はこの要求を受けてR/Wアプリケーション76にデータバスを占有させる。換言すれば、ファイル72からSCSIコマンド処理入口79に対して発行されたSCSIコマンドを該SCSIコマンド処理入口79で受け入れないようにする。従って、R/Wアプリケーション76の起動中は、ファイルシステム72はリーダライタ2へアクセスできなくなる。また、R/Wアプリケーション76が起動されると、GUI71によってR/Wアプリケーション76でプログラムされた入力画面(ユーザインターフェース画面)がディスプレイ上に表示される。また、ドライバソフト74によって、InquiryコマンドがOSカーネル73に発行されて、その応答情報であるInquiryデータ(この場合、表3のS/Iデータ)の返信により、リーダライタ2の型式やデバイス名などの構成情報が取得される。これにより、リーダライタ2が認識される。その後、ドライバソフト74によってOSカーネル73に対して出されたReadコマンドやWriteコマンドに従って、リーダライタ2側でデータの読み出し若しくは書き込みが実行される。
なお、リーダライタ2の認識は次のようにして行われる。すなわち、まず、OSカーネル73に対してInquiryコマンドを発行した際に生成されるCDB(0)(表2)をリーダライタ2に送信する。該CDB(0)を受信したリーダライタ2側では、CDB(0)に含まれる種々の情報を参照して、該情報に従った構成情報を生成し、該構成情報を含むS/Iデータ(表3)をPC3へ返信する。この返信されたS/Iデータに基づき、リーダライタ2が認識される。
なお、リーダライタ2(ターゲット:周辺装置)上のいずれかのスロット(あるいは外部メモリ入出力制御部:ロジカルユニット)上で、メモリーカードの交換(つまり、事象や状態の変化)がなされると、PC3(イニシエータ)に通知するためのユニット・アテンション・コンディションが生成される。PC3のファイルシステムは、このユニット・アテンション・コンディションを参照してメモリーカードの交換を認識し、FAT(ファイル・アロケーション・テーブル)等のファイル情報の更新を行なう。このようなユニット・アテンション・コンディションを保留中のロジカルユニットに向けてInquiryコマンドが発行された場合、該ロジカルユニットは保留中のユニット・アテンション・コンディションをクリアせずに、Inquiryコマンドを実行する。つまり、Inquiryコマンドが実行された場合でも、該ユニット・アテンション・コンディションに反映されているメモリーカードの交換通知情報は消去されずに保持されるので、PC3のファイルシステムは、交換後のメモリーカードに対するアクセスを問題なく行なうことができる。
次に、リーダライタ2のより具体的な動作について、図8のフローチャートを用いて説明する。なお、以下の説明では、1つのスロットに対する処理についてのみ行っている。複数のスロットに対しては、当該処理が割り込み処理により並列して行われる。CPU27は、PC3からUSBケーブルを介して供給される電源(バスパワー)によりONされると(T1)、USBチップ32からの割り込みを許可する状態となる(T2)。USBチップ32では、PC3側からUSBバス上を伝送してきたコマンドを、USBプロトコルエンジン321及びUSBコントロール部331の動作によって送受信部341へ転送する。なお、ここではまだ、コマンドを受け取ったことを示すレスポンスを返さない。
送受信部341は、コマンドを受け取ると、ステータスレジスタ82の「コマンド受信完了」bitを1にし、CPU27に割り込みを掛ける。この場合、CPU27は、ステータスレジスタ82を参照することで何のための割り込みなのかを把握することができる。また、受け取ったコマンドは、SCSIコマンドバッファ83に格納される。
CPU27は、割り込みがあり(T3:YES)、SCSIコマンドの受信が完了すると(T4:YES)、送受信部341が受け取ったコマンドの解釈を行なう(T5)。すなわち、CPU27は、送受信部341のステータスレジスタ82を参照し、送受信部341がコマンドを受け取ったことを知ると、SCSIコマンドバッファ83からコマンドを取得して、それを解釈する。これにより、CPU27は、SCSIデータの有無や伝送方向、大きさを把握する。
CPU27は、コマンドの解釈によって、SCSIデータが無いと把握した場合(例えば、InquiryコマンドやTest Unit Readyコマンドの場合)およびSCSIデータの伝送方向がデバイス→PC(送信)であると把握した場合(例えば、Readコマンドの場合)には(T6:YES)、送受信部341のコントロールレジスタ81の「コマンド受付完了」bitと「ステータスレジスタクリア」bitに1を書き込む(T7)。
送受信部341は、T7で「コマンド受付完了」bitに1が書き込まれた時点で、PCに対してコマンドを受け取ったことを示すレスポンスを返す。ここで、PC3側は、レスポンスを受け取ると、SCSIデータが無い場合には次がSCSIステータスの受信で、SCSIデータの伝送方向がデバイス→PCである場合には次がSCSIデータの受信であるので、デバイス待ちの状態に遷移する。
他方、CPU27は、コマンドの解釈によって、SCSIデータの伝送方向がPC→デバイス(受信)であると把握した場合(例えば、Writeコマンドの場合)には(T6:NO)、PC3からのSCSIデータを受信する準備をする(T8)。具体的には、RAM29上に受信に必要な領域を確保し、その先頭アドレスをSCSIデータDMAアドレスレジスタ85に書き込み、受信するバイト数をSCSIデータDMAカウントレジスタ86に書き込む。その後、送受信部341のコントロールレジスタ81の「コマンド受付完了」bitと「ステータスレジスタクリア」bitに1を書き込む(T9)。
送受信部341は、T9で「コマンド受付完了」bitに1が書き込まれた時点で、PC3に対してコマンドを受け取ったことを示すレスポンスを返す。ここで、PC3側は、レスポンスを受け取ると、デバイス側でコマンドを解釈してSCSIデータを受け取る準備が出来たと認識して、SCSIデータの送信を開始する。
そして、送受信部341は、SCSIデータDMAカウントレジスタ86が0になった時点で、ステータスレジスタ82の「データ受信完了」bitを1にし、CPU27に割り込みを掛ける。
CPU27は、割り込みがあると(T10:YES)、送受信部341のコントロールレジスタ81の「データ受取完了」bitと「ステータスレジスタクリア」bitに1を書き込んで、SCSIデータの受信を完了する(T11:YES)。ここで、PC3側は、SCSIデータがデバイスに到達されたことが通知され、次がSCSIステータスの受信であるので、デバイス待ちの状態に遷移する。
T7およびT11(YES)の後には、CPU27は、コマンドを実行する(T12)。例えばTest Unit Readyコマンドなら、第1〜第4メモリーカード11〜14が挿入されているか否かを判断する。例えばReadコマンドなら、第1〜第4メモリーカード11〜14からデータを読み出す。例えばWriteコマンドなら、この時点で書き込むべきデータをPC3から受け取っているので(上述のT8〜T11)、それを第1〜第4メモリーカード11〜14に書き込む。
次に、CPU27は、SCSIデータの伝送方向がデバイス→PC(送信)である場合(例えば、Readコマンドの場合)には(T13:YES)、読み出したデータをPC3へ送信する準備をする(T14)。具体的には、RAM29上に送信に必要な領域を確保して読み出したデータを格納するとともに、その先頭アドレスをSCSIデータDMAアドレスレジスタ85に書き込み、受信するバイト数をSCSIデータDMAカウントレジスタ86に書き込む。そして、送受信部341のコントロールレジスタ81の「データ送信開始」bitに1を書き込む。
送受信部341は、T14で「データ送信開始」bitに1が書き込まれた時点で、PC3へSCSIデータの転送を開始する。そして、送受信部341は、SCSIデータの転送が終わったら、ステータスレジスタ82の「データ送信完了」bitを1にし、CPU27に割り込みを掛ける。
CPU27は、割り込みがあると(T15:YES)、SCSIデータの転送が終わったことを把握するので、送受信部341のコントロールレジスタ81の「ステータスレジスタクリア」bitに1を書き込んで、SCSIデータの送信を完了する(T16:YES)。
T13(NO)およびT16(YES)の後には、CPU27は、SCSIステータスの送信を開始する(T17)。具体的には、CPU27は、上記処理の中で、PC3に返すべきステータスを既に決定しているので、そのステータスをSCSIステータスバッファ84に書き込み、送受信部341のコントロールレジスタ81の「ステータス送信開始」bitに1を書き込んで、SCSIステータスの送信を開始する。
送受信部341は、T17で「ステータス送信開始」bitに1が書き込まれた時点で、PC3へSCSIステータスの送信を開始する。そして、送受信部341は、PC3側からSCSIステータスを受け取ったレスポンスを受けると、ステータスレジスタ82の「ステータス送信完了」bitを1にし、CPU27に割り込みを掛ける。
CPU27は、割り込みがあると(T18:YES)、SCSIステータスの送信が終わったことを把握するので、送受信部341のコントロールレジスタ81の「ステータスレジスタクリア」bitに1を書き込んで、SCSIデータの送信を完了する(T19:YES)。これにより、送受信部341のステータスレジスタ82がクリアされて、元の状態に戻る。
次に、本通信システム1において、Inquiryデータを用いた本発明の主要機能に係るデータ通信処理の流れの一例について説明を行なう。なお、各ステップにおける処理(請求項に記載した機能実現手段)は、PC3のCPU41あるいはマルチリーダライタ2のCPU27によって各構成部が制御されることにより行われる。図9は、主処理の流れを示すフローチャートである。すなわち、PC3にマルチリーダライタ2が接続され、各装置に電源が投入されると、まず、PC3に接続されている不明なデバイスに対してドライブを割り当てるドライブ割当処理(S1)が実行される。本実施形態では、デバイスとしてマルチリーダライタ2だけが接続されているため、これのみにドライブが割り当てられる。
次に、ユーザーによって選択されたドライブを通信相手として設定するドライブ設定処理(S2)が行われる。ドライブが設定されると、設定されたドライブに対応するデバイス(本実施形態ではマルチリーダライタ2)が通信相手として認識される。そして、マルチリーダライタ2へのメモリーカード11〜14の装着(あるいは交換)発生の有無を監視するメモリーカード監視処理(S3)と、ファイル選択監視処理(S4)とが実施される。該主処理ルーチンは、起動管理タイマールーチンから定期的に出される起動トリガを用いる等により、一定の時間間隔(例えば100ms〜1000ms:例えば500ms)で繰り返し定常的に実行される。
図10は、PC3においてCPU41により実行されるドライブ割当処理(S1)の詳細を示すものである。まず、参照されるドライブ(以下「参照ドライブ」と称する)がAドライブに初期設定される(S101)。該参照ドライブは、PC3側で割り当て可能なドライブのことを意味するものであって、該ドライブが複数存在する場合はドライブの割り当て処理時に昇順で参照される。参照ドライブは、PC3のWIN2000のOSカーネルで管理されている。本実施形態では、割り当て可能なドライブ数をA〜Zの26個としている。
参照ドライブが設定されると、次に、CPU41によって、ドライブが割り当てられるデバイスからS/Iデータを返信させるためのInquiryコマンド(以下「Inq(0)コマンド」と称する)が参照ドライブに対して発行される(S102)。実際には、CPU41によって該Inq(0)コマンドがOSカーネルに対して発行され、該OSカーネルにおいて該Inq(0)コマンドが参照ドライブに発行されたものとして取り扱われる。そして、OSカーネルにより、EVPD領域が“0”に設定されたCDB(0)が生成されて、参照ドライブに関連づけられた不明デバイスに送信される。SCSI規格では、EVPD領域が“0”に設定されている場合はS/Iデータを返信するよう定義されている。CDB(0)の具体例は、前述のごとく表2に示している。なお、表2のデータ欄には、各データが16進数表記で示されている。本明細書において特に明示しない限り、データ欄は全て16進数表記で示すものとする。
参照ドライブに関連づけられたデバイスが存在する場合であって、該デバイスがSCSIコマンドを処理することができるデバイス(SCSIコマンド対応デバイス)である場合は、該デバイスからS/Iデータが返信される。一方、デバイスが存在しない場合、あるいは存在していても該デバイスがSCSIコマンドを処理することができない場合(SCSIコマンド非対応デバイス)は、該デバイスからS/Iデータは返信されない。S103では、S/Iデータの返信の有無に基づいてCPU41によってエラー判定が行われる(S103)。具体的には、S/Iデータの返信がない場合はエラーと判定される(S103のYes側)。この場合、その後の処理はステップS107に進む。また、S/Iデータの返信がある場合はエラーと判定されない(S103のNo側)。すなわち、当該参照ドライブに関連づけられたデバイスが存在すると判定される。この場合、その後の処理はステップS104に進む。
S103においてエラーでないと判定されると、返信されたS/Iデータに基づいて、参照ドライブに関連づけられたデバイスが通信対象となり得るデバイスであるかどうか、すなわち、通信可能なデバイスであるかどうかが判定される。本実施形態では、当該ステップは、参照ドライブに関連付けられたデバイスがマルチリーダライタ2であるかどうかを判定するために行われる。また、本実施形態では、マルチリーダライタ2から、表3に示すS/IデータがPC3へ返信されるようになっており、当該ステップにおける判定処理は、返信されたS/Iデータのバイト0の領域やバイト1の領域のデータ、あるいは、バイト8〜15の領域のベンダIDや、バイト16〜31の領域のプロダクトIDなどが、PC3側で予め登録しておいたID情報等と一致しているかどうかによって行われる。当該ステップで、通信可能なデバイスであると判定されると(S104のYes側)、処理はステップS105に進み、通信可能なデバイスではないと判定されると(S104のNo側)、処理はS107に進む。なお、表3中のバイト0領域のデータ「0x00」はダイレクトアクセスデバイスを示し、バイト1の領域のデータ「0x80」は可換記憶媒体を示すものである。上述の各バイト領域に記述される内容については、SCSI規格で定義されているため、詳細については、当該規格書を参照されたい。
処理がS105に進むと、ここでは、返信されたS/Iデータに基づいて、当該参照ドライブのLUNが“0”であるかどうかがCPU41によって判定される。かかる判定は、S/Iデータにおけるベンダ固有領域のバイト54の領域のデータに基づいて行われる。本実施形態では、上述したように、マルチリーダライタ2から、表3に示すS/IデータがPC3へ返信されるようになっている。また、表3のバイト54領域の備考欄にも記載しているように、マルチリーダライタ2では、S/Iデータを返信する際に、バイト54の領域の上位4ビットに該マルチリーダライタ2の物理的I/Fを示す情報(本実施形態ではUSBであることを示す情報)が格納され、下位4ビットにLUNの番号を格納するようにプログラミングされている。従って、CPU41は、バイト54の領域のデータを参照すれば、LUNの情報を取得することができる。これにより、当該ステップの判定処理を行なうことができる。例えば、バイト54の領域に「0x10」が格納されている場合は、物理的I/FがUSB接続コネクタであって、LUNが0であることが取得され、「0x23」が格納されている場合は、物理的I/FがSCSI接続コネクタであって、LUNが3であることが取得される。
S105で、LUNが“0”であると判定されると(S105のYes側)処理はS106に進み、LUNが“0”でないと判定されると(S105のNo側)処理はS107に進む。なお、WIN2000がインストールされたPC3と接続されている場合は、マルチリーダライタ2側でバイト54の領域に、例えばLUN=1の情報を格納したとしても、PC3側ではLUN=0として認識するようになっている。そのため、当該S105の処理は必ずYes側に進むことになる。この場合は、S105の判定処理は意味を成さないため省略してもよい。
S106では、現在の参照ドライブを対応ドライブリストに追加する処理が実行される。対応ドライブリストは、最終的にドライブが割り当てられる参照ドライブをリストアップしたものである。詳細には、該対応ドライブリストがRAM43の所定の記憶領域に展開されており、該当する参照ドライブが該記憶領域に書き込まれる。その後、処理はS107に進む。
S107では、参照ドライブがZドライブであるかどうかがCPU41によって判定される。例えば、カウンタメモリなどにドライブの参照順をカウントさせておき、そのカウンタ値をCPU41が監視することにより、現在の参照ドライブがZドライブであるかどうかの判定が可能である。かかる判定は、設定された参照ドライブが最後であるかどうかを判定するために行われる。ここで、参照ドライブがZドライブであると判定されると、参照可能なドライブが存在しないため、続く処理はS109に進む。参照ドライブがZドライブではないと判定されると、参照ドライブを次順のドライブに設定した後に(S108)、S102からの処理がS107においてYesと判定されるまで繰り返し行われる。
処理がS109に進むと、ここでは、対応ドライブリストに基づいてドライブの割り当てがなされる。これにより、一連のドライブ割当処理(S1)が終了する。なお、本実施形態では、外部ストレージデバイスとしてマルチリーダライタ2のみが接続されているため、Aドライブに対してマルチリーダライタ2が割り当てられ、他のドライブには何ら割り当てられないものとする。
続いて、図11は、ドライブ設定処理(S2)の詳細を示すものである。S201では、前記ドライブ割当処理(S1)によって割り当てられたドライブ(以下「対応ドライブ」と称する)が存在するかどうかが判定される(S201)。すなわち、PC3で割当可能なドライブのいずれかに所定のデバイスが割り当てられたかどうかが判定される。本実施形態では、マルチリーダライタ2が割り当てられたAドライブが存在するため、対応ドライブがあると判定される。その後、対応ドライブが1つであるかどうかが判定される(S202)。一方、S201で、対応ドライブが存在しないと判定されると(S201のNo側)、通信対象が存在しないため、処理が終了する。
S202で対応ドライブが1つであると判定されると(S202のYes側)、当該対応ドライブが通信対象として設定される(S205)。すなわち、当該対応ドライブに関連付けられたデバイスが通信対象に設定される。なお、本実施形態では、Aドライブが通信対象として設定される。換言すれば、マルチリーダライタ2が通信対象のデバイスとして設定される。
一方、対応ドライブが複数存在すると判定された場合は(S202のNo側)、対応ドライブを示すアイコンをダイアログ表示させる(S203)。その後、ユーザーからいずれかのアイコンが選択されることによって所望の対応ドライブが選択されると(S204)、選択された対応ドライブが通信対象として設定される(S205)。なお、いずれのアイコンも選択されない場合であっても、例えば、対応ドライブごとに優先度が設定されている場合は、最も優先度の高い対応ドライブが通信対象に自動的に設定される。これにより、一連のドライブ設定処理(S2)が終了する。
次に、図12は、周辺装置側トリガ監視処理(S3)の詳細を示すものである。まず、PC3側において、マルチリーダライタ2から該マルチリーダライタ2のVPD(Vital Product Data)を返信させるためのInquiryコマンド(以下「Inq(1)コマンド」と称する)がAドライブに対して発行される(S301)。実際には、該Inq(1)コマンドが、OSカーネル73に対して発行され、該OSカーネル73によってAドライブに対して発行されたものとして取り扱われる。上記Inq(1)コマンドが発行されると、OSカーネル73によって、EVPD領域が“1”に設定されたCDB(1)が生成されて、Aドライブに関連づけられたマルチリーダライタ2にUSBケーブル25を介して送信される。このとき生成されるCDB(1)を表4に示す。すなわち、該CDB(1)のバイト2の領域にはページコード「0xE0」が記述されている。
CDB(1)のバイト4の領域、すなわちアロケーション長領域には「0x10」(2進数表記では「00010000」)が格納されている。本来、アロケーション長領域には、接続されたデバイスに要求するデータ長が格納される。本実施の形態では、マルチリーダライタ2のアロケーション長の最大値が予め固定長(ここでは、仮に15バイトとしているが、これに限定されるものではない)に設定されている。この“15”という数は下位4ビットで表現できる。SCSI規格に従えば、マルチリーダライタ2において設定された上記最大値以上の数値がアロケーション長として指定されたとしても、マルチリーダライタ2のアロケーション長は上記最大値、すなわち、15バイトに設定される。従って、アロケーション長領域に「0x10」が記述されていても、また、「0x11」以上が記述されていても、アロケーション長は15バイトに設定される。これは、アロケーション長領域のデータのうち、上位4ビットのいずれかのビットが「1」である場合は、該アロケーション長領域のデータを(アロケーション長の設定値に兼用された)任意のデータ(付加情報)として自由に使用することができるということを意味する。すなわち、上位4ビットのいずれかのビットを「1」とすることにより、アロケーション長領域における当該ビット以外のビットを、いわば仮想的な空き領域として確保することができる。このように確保された仮想的な空き領域に任意のデータを付加することで、PC3とマルチリーダライタ2との間で、上記付加情報に係るデータ通信が可能となるのである。
なお、上記アロケーション長は常に固定長(ここでは15バイト)に設定されるのではなく、CDB(1)のページコードに応じてその最大値が設定されるようにしてもよい。例えば、ページコード「0xE0」の場合は、アロケーション長の最大値が15バイトの固定長に設定され、ページコード「0xE2」の場合は、9バイトの固定長に設定される。かかる設定処理は、CDB(1)を受信したマルチリーダライタ2のCPU27によってページコードの内容が読み取られ、読み取られた内容に応じて、予めROM28に格納しておいた固定長対応リストから該当する固定長を選定することにより行われる。もちろん、15バイトあるいは9バイトと定めた上記アロケーション長は任意に設定することができる。
表6及び表7に、上記アロケーション長領域に確保された空き領域に付加される通信データを類別して示す。各表のデータ内容欄に示すように、各データには、それ自体が何を意味するものであるのかが定義づけられている。具体的には、データ内容欄の記載を参照されたい。なお、表6はページコードが「0xE0」の場合に送信される通信データであり、表7は、ページコードが「0xE2」の場合に送信される通信データである。CDB(調査指示データ)において、このページコード(調査指示データ種別識別情報)を変更すれば、アロケーション長最大値や付加情報内容の異なる別の調査指示データフォーマットを生成することができる。
表6及び表7の左欄には、アロケーション長領域に記述されるデータそのものが、右欄にはそのデータの意味する内容が示されている。PC3側からマルチリーダライタ2に上記左欄のデータが送信されると、マルチリーダライタ2側では、CPU27により、受信したCDB(1)からアロケーション長領域のデータが抽出され、抽出されたデータの内容が解析され、そして、解析されたデータの内容に従った処理が実行される。なお、表6及び表7に示す内容は、テーブルリスト化されて、PC3のHDD44又はROM42と、マルチリーダライタ2のROM28に予め格納されている。
上記S301でInq(1)コマンドが発行されて生成されたCDB(1)には、表5に示すように、アロケーション長領域に「0x10」が記述されている。従って、Inq(1)コマンドは、PC3からマルチリーダライタ2に対して、メモリーカードの装着発生有無を検出させるための命令であることを意味する。一方、マルチリーダライタ2側では、送信されたCDB(1)が受信される。その後、CPU27によって、CDB(1)内のアロケーション長領域のデータ「0x10」が抽出され、そして、該データに従って、メモリーカードの装着発生有無を検出する処理が行われる(S302)。
メモリーカードの装着発生有無の検出が終了すると、その検出結果がCPU27によってPC3へ返信される(S303)。該返信処理は、具体的には、CDB(1)の受信後に生成されてPC3へ返信されるVPDに上記検出結果を書き込むことにより行われる。より詳細には、表8に示すように、バイト7の領域にメモリーカードの装着発生のありなしが書き込まれる。本実施形態では、装着発生なしの場合は「0x00」が書き込まれ、装着発生ありの場合は「0x01」が書き込まれる。なお、表8は装着発生ありの場合のVPDを示す。
続いて、PC3側では、マルチリーダライタ2から返信される表8のVPDを受信して、該VPDのバイト7の領域を参照することにより、メモリーカードの装着発生の有無が判定される(S304)。ここで、メモリーカードの装着なしと判定されると(S304のB側)、以下のステップは全てスキップされて処理は終了する。
他方、メモリーカードの装着ありと判定されると(S304のA側)、PC3側では、既に説明したファイルシステムを利用して、装着されたメモリーカード内のデータファイルを検索し、ファイルリスト(フォルダ構造を含む)を作成する。
その後、作成したファイルリストデータに基づいて、リーダライタ2側のLCD21に該ファイルリストを文字表示させるための文字列データが作成され(S308)、RAM29にファイルリスト用文字列データとして記憶される。文字列データは、表示対象となる文字に一対一に対応したビットコードデータ(文字コード)であり、JISコード、シフトJISコードあるいはASCIIコードなどの既製のコードをそのまま使用してもよいし、独自のコードを使用してもよい。ただし、周辺装置側の表示用文字データテーブル(例えばROM28内:表示用データ自体は、ビットマップ型あるいはアウトライン型のフォントデータである)が上記既製コードを用いて作成されたものである場合、上記独自コードとの対応関係を示すテーブルを別途周辺装置側にて用意しておき(例えばROM28内)、このテーブルを参照して該独自コードを上記既製コードに変換してから表示に用いるとよい。
作成された文字列データは、マルチリーダライタ2へ送信される(S309)。かかる送信処理は、図13のフローチャートに示すステップS401以降の処理手順に従って行われる。まず、Inq(1)コマンドが発行される(ステップS401)。このInq(1)コマンドが発行されることにより生成されたCDB(1)データはマルチリーダライタ2へ送信される。なお、Inq(1)コマンドの発行によりマルチリーダライタ2からVPDが返信されてくるが、文字列送信の場合の該VPDには返信データは付加されないように決めてある。それ故、ここではVPDの返信処理の説明を省略する。
より詳細には、ステップS401では、ページコードとしてバイト2の領域に「0xE2」が、アロケーション長領域に「0x18」が記述されたCDB(1)データが生成される。従って、該ステップで発行されるInq(1)コマンドは、表7に基づけば、「0x90」で示される文字列番号に対応する文字列記憶領域(RAM29内の記憶領域)の先頭にポインタをセットさせるための要求命令である。もちろん、この要求命令はマルチリーダライタ2に対してなされるものである。なお、上記ポインタとは、後述するステップS402によって切り出された文字を格納する位置を指示する指標を意味する。
続いてステップS402では、PC3のRAM43に格納されたファイルリスト表示用の文字列データから、その先頭から順番に文字が切り出される。その後、ステップS403において、ステップS402で切り出された文字が終端文字であるかどうかがCPU41によって判定される(S403)。かかる処理は、切り出された文字を示すデータが「0x00」であるかどうかによって判定される。「0x00」は文字を示すものではないため、このステップで、「0x00」であると判定されると、終端文字であると判定される。切り出された文字が終端文字であると判定されると、処理はステップS406に進む。一方、切り出された文字が終端文字でないと判定されると、処理はステップS404に進む。ここでは、Inq(1)コマンドが発行されて、ページコードとして「0xE2」が、アロケーション長領域に、ステップS402で切り出された文字データの記述されたCDB(1)データが生成される。そして、生成されたCDB(1)データがマルチリーダライタ2へ送信される。
CDB(1)データの送信後は、文字データの切り出し位置が次の文字に設定され(S405)、その後に、ステップS402からの処理が繰り返し実行される。その後、処理がステップS406に進むと、Inq(1)コマンドが発行されて、ページコードとしてバイト2の領域に「0xE2」が、アロケーション長領域に「0x17」が記述されたCDB(1)データが生成される。これは、現在の文字列記憶領域において、最後に格納された文字(即ち末文字)が格納された領域以降のすべてのビット領域を「0x00」で埋めるための要求命令である。換言すれば、マルチリーダライタ2に送信され、RAM29に格納されたデータの終端以降に「0x00」を付け加えて、格納されたデータを所定長さ(例えば128ビット)のビットデータに揃えさせるための要求命令である。該ステップS406の後に、上記図12の送信処理(S309)が完了する。
図12に示す上記送信処理(S309)によりデータが送信されると、送信されたデータは、マルチリーダライタ2側で受信され、該受信されたデータがRAM29に格納される(S310)。実際には、上記ステップS406(図8参照)で切り出された文字が一つずつ送信される毎に、その文字データが順次RAM29に格納される。
上記送信処理(S309)の後、再度、PC3側でInq(1)コマンドが発行され、これにより生成されたCDB(1)データがマルチリーダライタ2へ送信される(S311)。このとき生成されるCDB(1)データを表9に示す。表9に示すように、バイト2の領域に「0xE0」が、アロケーション長領域に「0x11」が記述されているため、表6に基づけば、このとき発行されたInq(1)コマンドは、次に送信されるデータが示す数に対応する文字列番号の文字列記憶領域(RAM29内の記憶領域)に格納されたデータをマルチリーダライタ2の液晶表示部21へ転送させる要求命令であることが理解できる。
その後、もう一度Inq(1)コマンドが発行され、ページコードとしてバイト2の領域に「0xE0」が、アロケーション長領域に文字データが記憶されている文字列番号を示すデータ「0x90」が記述されたCDB(1)データがマルチリーダライタ2へ送信される(S312)。従って、マルチリーダライタ2で該CDB(1)データが受信されると、CPU27によって、ステップS310で送信されてきた文字列番号に対応する文字列記憶領域に格納された受信データ(文字データ)が読み出されて、液晶表示部21へ転送される。これにより、PC3から送信されたデータが液晶表示部21で表示される。
本実施形態では、ファイルリスト表示用の文字データがメモリーカードの装着時に一括してリーダライタ2側に送信され、図2のRAM29に格納される。そして、そのLCD21への表示と、閲覧のためのLCD21上でのスクロール処理、及び表示されたファイルリスト上でのファイル選択処理は、全てROM28内のリーダライタ(周辺装置)側の表示制御プログラムにより、表示制御LSI34と協働して実行される。キーボード22の出力は表示制御LSI34にも分配入力されている。
以上説明したごとく、PC3側でのInq(1)コマンドの発行及び付加情報(上記の場合、画像データファイルの選択確定操作の有無を要求する情報)が書き込まれたCDB(1)データの印刷装置80(マルチリーダライタ2)への送信と、印刷装置80(マルチリーダライタ2)側からの該付加データに応答するための対応付加データ(上記の場合、選択確定操作の有無を報告する情報)を書き込んだVPEを返す本発明特有の一連の通信処理を、「Inq(1)/VPE付加通信」とも称する。
図15のステップ1は、LCD21におけるファイルリストの表示例を示している。上位フォルダFのフォルダ名を示す文字列データが複数取得されているが、LCD21の表示画面にはその一部だけが表示されている。図2Aのスクロールキー22a,22bを操作すると、ステップ2に示すように、文字列データ(上位フォルダF)が上下にスクロールされ、隠れていた文字列データを表示することができる。
表示されている上位フォルダFを選択し(本実施形態では、スクロールによりLCD21に表示させた状態が選択状態も兼ねているが、別途、カーソルを用いてもよい)、確定ボタン22cをシングルクリックすれば、ステップ3のごとく、上位フォルダFが開いてその内部の下位フォルダSFのリストが表示される。なお、この状態でステップ4に示すごとく、対応する上位フォルダFを再度選択してシングルクリックすれば、上位フォルダFが閉じてステップ3の状態に戻る。他方、下位フォルダSFのいずれかを選択して確定ボタン22cをシングルクリックすれば、ステップ5に示すごとく、選択した下位フォルダSFが開き、その内部のデータファイルDFのリストが表示される。このように、クリックを繰り返してフォルダ階層間を移動する処理は周知である。
データファイルDFのリストが表示されば、所望のデータファイルDFを選んで確定ボタン22cをシングルクリックすれば、ステップ6に示すごとく、そのデータファイルDFの仮選択状態となる(再度シングルクリックすると仮選択状態が解除される。仮選択されたデータファイルDFの表示は、反転、強調などにより、非選択状態とは異なる仮選択表示状態とされる。仮選択が完了すれば、仮選択されたデータファイルDFのどれかをLCD22に表示させた状態とし、確定ボタン22cをダブルクリックすれば、ステップ8に示すごとく、仮選択したデータファイルDFの選択状態が確定される。
次に、図14は、ファイル選択監視処理(S4)の詳細を示すものである。PC3側では、ファイル選択情報をリーダライタ2から取得するための新しいInq(1)コマンドが発行され、生成されたCDB(1)には、アロケーション長領域に「0x13」が記述される(S1301)。表6から、このInq(1)コマンドは、PC3からマルチリーダライタ2に対して、上記データファイルDFの選択状態を送信させる命令であることを意味する。一方、マルチリーダライタ2側では、送信されたCDB(1)が受信される。その後、CPU27によって、CDB(1)内のアロケーション長領域のデータ「0x13」が抽出され、そして、該データに従って、上記CDB(1)の受信後に生成されるVPDに上記データファイルDFの選択状態を書き込み(S1304)、PC3に返信する(S1305)。
PC3はマルチリーダライタ2から返信されるVPDを受信して、該VPDのバイト7の領域を参照することにより、選択確定されたデータファイルDFが何であるかが判定される(S1306)。S1307で選択確定されたデータファイルDFが存在すれば、この後説明する操作連動ファイル処理ルーチンに、マルチリーダライタ2に装着されたメモリーカード(記憶媒体)の該選択されたデータファイルに対する、該データファイル受信を含む予め定められたファイル処理(通信イベント)を指令する。
PC3側では、受信したデータファイルの保存に関する設定カスタマイズ処理を予め行なうことができる。図17は、設定カスタマイズ処理の流れを示すもので、S501ではマルチリーダライタ2からのファイル転送モードを、マウス58あるいはキーボード57により入力・選択する。ファイル転送モードには、メモリーカード11〜14から転送されたデータファイルを、HDD44(データファイル保存手段)上の予め定められたフォルダ(保存領域)にコピーする(この場合、メモリーカード11〜14からデータファイルは削除されない)コピーモードと、同じくムーブ(移動:メモリーカード11〜14からデータファイルが削除される)するムーブモードとがあり、上記の入力内容に従い、S502〜S506で、そのいずれかが選択可能とされる。また、S507では、データファイルの格納先を指定する入力を行なう。例えば、周知のごとくディスプレイ56にファイルディレクトリ構造を、フォルダツリー形式で表示し、マウス58によるクリックにより、格納先とするフォルダを選択することができる。S508で選択されたフォルダがファイル格納先として設定される。なお、設定カスタマイズが実施されていない場合は、デフォルト設定に従う。
図16Aは、操作連動ファイル処理ルーチンの処理の流れを示すフローチャートである(このルーチンは、定期的に繰り返し実行されるものである)。S501では、前述の処理により選択確定されたデータファイルの情報を取得する。次に、S502では、PC3のHDD44内に設定されたデータファイルの格納先となるフォルダ内を検索し、選択確定されたデータファイルと重複するファイル名のデータファイルが存在しないかどうかを確認する。存在しない場合はS508に進み、OSのファイルシステムを用いてメモリーカードのデータファイルを読み出す通信イベントを起動し、マルチリーダライタ2から読み出されたデータファイルを受信する。そしてS404で、受信したデータファイルを保存先として指定されているHDD44内のフォルダに書き込む。なお、ムーブモードが選択されている場合は、メモリーカードの送信元となるデータファイルを削除する通信イベントを起動する。
一方、S503で、選択確定されたデータファイルと重複するファイル名のデータファイルが存在する場合はS504に進み、これをリーダライタ2に通知する通信イベントユーザーが起動される。この場合も、新しいInq(1)コマンド(調査要求コマンド)が発行され、作成されるCDB(1)データ(調査指示データ)に付加情報として重複ファイル名を特定する情報(文字列データとしてもよいが、ファイルリスト上での順位コードで簡略化して特定するほうが望ましい)を書き込み、リーダライタ2に送信する。リーダライタ2では、受信した重複ファイル名特定情報に対応するデータファイルを、RAM29に既に格納されているファイルリスト上で検索し、図16Bに示すように、そのファイル名(すなわち、重複ファイル名)をLCD21表示部に表示する。この場合に可能な対応処理も、LCD21に合わせて表示することができる(図16Bでは、スクロールにより複数の対応処理を順次表示できるようにしている。なお、この対応処理の種別を示す文字情報は、内容が一定であるためROM28等、リーダライタ2側で予め用意しておくことができ、この場合はPC3から文字列データを受信する必要はない。
リーダライタ2側では、キーボード22を用いてLCD21上で対応処理をスクロールし、確定ボタンのダブルクリックにより選択・確定する(キーボード22は対応処理選択入力部に兼用されている)。選択可能な対応処理の種別は、コピー先(HDD44)のファイル名変更(1)、コピー元(メモリーカード(記憶媒体))のファイル名変更(2)、コピー中止(3)である。そして、どの対応処理が選択されたかがVPD(調査報告データ)に書き込まれ、PC3側に返信される。
なお、PC3側で行なっていた格納先の設定処理も、周辺装置2側で実行できるようにすることが可能である。この場合、PC3側の格納先のディレクトリ(フォルダ)階層構造情報をPC3側から取得してリーダライタ2の液晶表示部21に表示し、キーボード22を用いて格納先となるフォルダを同様に選択する処理を、Inq(1)/VPE付加通信を用いて実施すればよい。
図16Bに戻り、PC3側では受信したVPDに書き込まれている情報により、対応処理の種別が上記1〜3のいずれであるかを特定し、処理を行なう(S506,S507)。つまり、1である場合はコピー先(HDD44)のファイル名を書換え(例えば、元のファイル名に「コピー〜」などの文字列を加える)、2である場合は、コピー元(メモリーカード(記憶媒体))のファイル名変更を行なうための通信イベントを起動する。ファイル名変更が完了すればS508の処理に進む。以下、選択確定された全てのデータファイルについての処理(コピー中止も処理完了とみなす)が終了するまで、同じ処理を繰り返す(S509→S503)。
なお、上述した実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、実施形態を適宜変更することができる。
本発明の通信システムに適用されるマルチリーダライタの一例を正面側から見た斜視図。
同じく背面側から見た斜視図。
マルチリーダライタの電気的構成の一例を示すブロック図。
マルチリーダライタのSCSIコマンド・データ・ステータス送受信部の説明図
コントロールレジスタの説明図
ステータスレジスタの説明図
本発明の通信システムに適用されるPCの概略構成を示すブロック図。
PC上で動作するOSと、該OS上で動作するアプリケーションを説明するための概念図。
マルチリーダライタのSCSIコマンド・データ・ステータス送受信部が行なう処理の流れを表すフローチャート。
本発明の通信システムにおいて実行されるデータ通信処理の処理の流れを表すフローチャート。
図9のドライブ割当処理の流れを表すフローチャート。
図9のドライブ設定処理の流れを表すフローチャート。
図9のメモリーカード装着監視処理の流れを表すフローチャート。
図12の文字列データ送信処理の詳細を示すフローチャート。
図9のファイル選択監視処理の流れを表すフローチャート。
ファイルリスト表示の例を示す説明図。
操作連動ファイル処理ルーチンの流れを表すフローチャート。
重複ファイル検出時の表示例を示す説明図。
設定カスタマイズの処理の流れを表すフローチャート。
符号の説明
1 通信システム
2 マルチリーダライタ(周辺装置)
3 PC(ホスト装置)
11 第1メモリーカード(記憶媒体)
12 第2メモリーカード(記憶媒体)
13 第3メモリーカード(記憶媒体)
14 第4メモリーカード(記憶媒体)
21 液晶ディスプレイ(表示部)
22 キーボード(手動操作部、周辺装置側トリガ発生手段、ファイル選択操作部、対応処理選択入力部)
27 CPU(トリガ発生報告情報返信手段、調査報告データ生成手段、トリガ発生報告情報書き込み手段、調査報告データ送信手段、交換通知情報保持手段、交換通知情報保持制御手段、ファイルリスト表示イベント実行手段、データファイル選択イベント実行手段、データファイル送信イベント実行手段、付加情報抽出手段)
34 表示制御LSI(表示制御手段)
41 CPU(トリガ報告要求コマンド発行手段、報告情報受領手段、対象通信イベント起動手段、保存環境設定手段、保存領域設定変更手段、ファイル保存モード切替手段、調査指示データ作成手段、調査指示データ送信手段、ファイルリスト表示イベント実行手段、データファイル選択イベント実行手段、データファイル送信イベント実行手段、対応処理実行手段)
51〜54 入出力制御部(記憶媒体装着検出手段)