JP2000341316A - データ通信装置 - Google Patents

データ通信装置

Info

Publication number
JP2000341316A
JP2000341316A JP11350461A JP35046199A JP2000341316A JP 2000341316 A JP2000341316 A JP 2000341316A JP 11350461 A JP11350461 A JP 11350461A JP 35046199 A JP35046199 A JP 35046199A JP 2000341316 A JP2000341316 A JP 2000341316A
Authority
JP
Japan
Prior art keywords
read
data
orb
computer
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11350461A
Other languages
English (en)
Inventor
Shunsaku Miyazawa
俊作 宮澤
Hiroshi Takeuchi
博 武内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP11350461A priority Critical patent/JP2000341316A/ja
Publication of JP2000341316A publication Critical patent/JP2000341316A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Facsimiles In General (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 【課題】同じデータを重複して受信することなく、継続
性が確保されたデータの受信を行う。 【解決手段】バスリセットにより実行が中断された Com
mand Block Agent ORBを通知したコンピュータよりリコ
ネクト要求を受けた場合、ジョブ実行部2152は、実行状
況監視部2151で計測されたRead Block Request あるい
は Read BlockResponse 数に基づいて、当該ORBに記述
された格納領域の印刷データのうち未取得分の印刷デー
タを特定する。そして、印刷データ用生成部2173に、前
記未取得分の印刷データのみをコンピュータ1から読み
出すように、Read Block Request を生成させ、コンピ
ュータ1に送信する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、通信線を介して相
手装置とデータ通信を行うデータ通信装置に関し、特
に、IEEE(The Institute of Electrical and Electron
ics Engineers, Inc.)1394に準拠したシリアルインター
フェースを介して相手装置とデータ通信を行うデータ通
信装置に関する。
【0002】
【従来の技術】高速なデータ転送を実現するシリアルイ
ンターフェースとして、IEEE(The Institute of Elect
rical and Electronics Engineers, Inc.)1394が提案さ
れている。このIEEE1394では、従来よりコンピュータお
よびその周辺装置間のインターフェースとして利用され
ているSCSI(Small Computer System Interface)と比
べて、各接続機器のIDの自動割り振りや電源を入れたま
までの接続機器の取り外し(いわゆるホットスワップ)
をサポートするなど、様々な利点を有している。
【0003】さて、IEEE1394において、各接続機器(ノ
ード)のIDの自動割り振りは、以下のようにして実現し
ている。
【0004】すなわち、各ノードは、まず、自身が2つ
以上のノードと接続されている「枝」(Branch)なの
か、あるいは、1つのノードにのみ接続されている
「葉」(Leaf)なのかを認識する。次に、各ノードは、
予め定められた時間経過後、自身を「葉」であると認識
したノードより順に parent_notify 信号を送信する。
一方、自身を「枝」であると認識したノードは、自身が
parent_notify 信号を送出するよりも先に parent_not
ify 信号を送ってきたノードに対して child_notify信
号を送信する。このようにして、各ノード間の親子関係
を決定していく。そして、自身を「枝」であると認識し
たノードであって、自身に接続された全てのノードが子
となるノードを頂点(root)とするツリー構造を識別す
る(ツリー識別)。
【0005】次に、ツリー構造が識別されると、各ノー
ドは、所定の順番で自身が使用するphysical_ID や管理
情報を含めた self-packet を送出して、自身の基本情
報を他のノードに公開する。ここで、physical_ID に
は、 self-packet の送出回数が記入される。すなわ
ち、最初にself-packet を送出するノードは、physical
_ID を0とし、次に、self-packet を送出するノード
は、physical_ID を1とする。このようにすることで、
各ノードが使用するIDを自動的に割り振る(自己識
別)。
【0006】また、IEEE1394において、ホットスワップ
は、バスの接続トポロジが管理されている状態で、新た
なノードが接続されると、各ノードがトポロジに関する
情報を消去し、再度、ツリー識別や自己認識を行なって
各ノードのIDの自動割り振りを行うことで実現している
(バスリセット)。
【0007】ところで、IEEE1394では、バスリセットの
期間中、各ノード間でのデータ通信が行われなくなる。
このため、データ転送中にバスリセットされた場合、通
信データの継続性(ここでは、時間的な継続性ではなく
データ自体の継続性を指す)が要求される場合には、接
続機器の動作に影響を与えるおそれがある。
【0008】たとえば、テレビ放送受信機で受信したテ
レビ放送信号をモニタで表示するなどリアルタイム性の
高いデータを通信している場合、バスリセットの期間
中、モニタの画面が途切れるといった症状として現れ
る。すなわち、バスリセット期間中に受信したテレビ放
送信号が見れなくなる。この場合、その後のモニタ動作
に影響を与えるものではなく、バスリセット完了後は、
バスリセット前と同様、テレビ放送受信機で受信したテ
レビ放送信号をリアルタイムでモニタに表示することが
できる。
【0009】しかしながら、たとえば、コンピュータで
作成した印刷データをプリンタへ転送している場合、バ
スリセットによるデータ転送の中断前後においてデータ
の継続性が確保されないと、転送したデータが意味をな
さないものとなってしまう。
【0010】すなわち、印刷データには、数バイトのデ
ータ列で構成されるコードが含まれており、このコード
に続くデータはこのコードによってその意味が定義され
ているため、このようなコードが欠けてしまうとプリン
タでの印刷結果が文字化けしてしまう。
【0011】このため、IEEE1394シリアルインターフェ
ースを介してのデータ転送中にバスリセットが発生した
場合、当該データが印刷データなどのデータの継続性が
要求されるものである場合には、当該データの転送を最
初からやり直すように工夫がなされているものもある。
【0012】
【発明が解決しようとする課題】しかしながら、上述し
たような工夫を施しても、以下のような問題が残る。
【0013】すなわち、たとえば、インクジェットプリ
ンタなどのシリアルプリンタでは、1ライン分(印字ヘ
ッドを1回走査できる分)の印刷データを受信すると、
印刷を開始してしまうものがある。このため、バスリセ
ット後、印刷データを初めから転送し直すと、同じ印刷
データが重複して印刷されてしまうおそれがある。
【0014】本発明は上記事情に鑑みてなされたもので
あり、本発明の目的は、バスリセットによりデータ転送
が中断された場合に、データ転送を最初からやり直すこ
となくデータ転送を再開させることができるデータ通信
装置を提供することにある。
【0015】
【課題を解決するための手段】上記課題を解決するため
に、本発明のデータ通信装置は、IEEE(The Institute
of Electrical and Electronics Engineers, Inc.)139
4に準拠したシリアルインターフェースを介して、SBP-2
(Seral Bus Protocol 2)に準拠したデータ転送プロト
コルにしたがい相手装置とパケットによりデータ通信を
行うデータ通信装置であって、前記相手装置が前記デー
タ通信装置に転送すべきデータの格納領域を示す先頭ア
ドレスおよび転送データ量を含むORB(Operation Reque
st Block)にしたがい、読出し開始アドレスと所定の読
出しデータ量を示した read block request を、前記OR
Bに示された先頭アドレスおよび転送データ量により特
定される格納領域のデータ全てを読み出すのに必要な数
分生成して、前記相手装置に順次送信する送信手段と、
前記相手装置より送られてきたパケットのうち、前記送
信手段により送信したread block request の応答とし
て受信した read block response に含まれるデータを
格納する第1のバッファと、前記送信手段により送信し
た read block request の応答として受信した read bl
ock response 以外のパケットに含まれるデータを格納
する第2のバッファと、前記相手装置より送られてきた
パケットに含まれるデータを前記第1および第2のバッ
ファのいずれに格納すべきか選択するバッファ選択手段
と、前記送信手段にて前記ORBに示された先頭アドレス
および転送データ量により特定される格納領域のデータ
を読み出すために生成された read block requestの送
信回数、当該 read block request の応答として前記相
手装置より受け取った read block response の受信回
数、および、当該 read block response に含まれる受
信データの合計バイト数のうちの少なくとも1つを把握
することで、前記相手装置より読み出すべきデータの読
出し状況を監視する読出し状況監視手段と、IEEE1394に
おいて定義されているバスリセットを検出するバスリセ
ット検出手段と、前記バスリセット検出手段によりバス
リセットが検出された場合に、前記第2のバッファにつ
いては当該バッファに格納されたデータを直ちにクリア
し、前記第1のバッファについては、所定時間内に、当
該バスリセットにより実行が中断されたORBを通知した
前記相手装置より、SBP-2で定義されているリコネクト
処理の要求を受け付けなかった場合に、当該バッファに
格納されたデータをクリアするリセット手段と、を備
え、前記読出し状況監視手段は、前記バスリセット検出
手段によりバスリセットが検出された後、前記所定時間
内に、当該バスリセットにより実行が中断されたORBを
通知した前記相手装置より、前記リコネクト処理の要求
を受け付けた場合に、当該ORBの内容を、当該ORBの実行
が中断された際の read block request の送信回数、 r
ead block response の受信回数、および、当該 read b
lock response に含まれる受信データの合計バイト数の
うちの少なくとも1つとともに前記送信手段に通知し、
前記送信手段は、前記読出し状況監視手段により通知さ
れたORBについて、読出し開始アドレスと所定の読出し
データ量を示した read block request を、当該ORBの
実行が中断された際の read block request の送信回
数、 read block response の受信回数、および、当該
read block response に含まれる受信データの合計バイ
ト数のうちの少なくとも1つにより特定される、当該OR
Bに示された先頭アドレスおよび転送データ量で特定さ
れる格納領域のデータのうち取得済みのデータを除く未
取得分のデータ全てを読み出すのに必要な数分生成し
て、前記相手装置に順次送信することを特徴とする。
【0016】ここで、前記バッファ選択手段は、たとえ
ば、SBP-2に準拠したデータ転送プロトコルでの処理に
おいて、相手装置より送られてきたパケットに付与され
た、パケットの種類などを示す情報を調べることで、当
該パケットに含まれるデータを前記第1および第2のバ
ッファのいずれに格納すべきか選択できる。
【0017】本発明では、相手装置より受け取ったORB
に示された先頭アドレスおよび転送データ量により特定
される格納領域のデータ全てを当該相手装置より読み出
すために、 read block request を複数生成して順次送
信し、その応答として当該相手装置より順次受け取った
read block response に含まれるデータを第1のバッ
ファに格納している。
【0018】なお、複数生成された read block reques
t の送信は、 read block requestとそれに対する read
block response により1つのトランザクションが完了
するため、より具体的には、先に送信した read block
request に対する read block response を受け取った
後に、次の read block response が送信されることに
なる。
【0019】ここで、本発明では、IEEE1394で定義され
ているバスリセットがあった場合、前記第1のバッファ
については、直ちにリセットするのではなく、所定時間
内に、当該バスリセットにより実行が中断されたORBを
通知した相手装置より、SBP-2で定義されているリコネ
クト処理の要求を受け付けなかった場合にリセットする
ようにしている。
【0020】そして、バスリセット後、前記所定時間内
に、当該バスリセットにより実行が中断されたORBを通
知した相手装置より前記リコネクト処理の要求を受け付
けた場合は、当該ORBについて、当該ORBの実行が中断さ
れた際の read block request の送信回数、 read bloc
k response の受信回数、および、当該 read block res
ponse に含まれる受信データの合計バイト数のうちの少
なくとも1つにより特定される、当該ORBに示された
先頭アドレスおよび転送データ量で特定される格納領域
のデータのうち取得済みのデータを除く未取得分のデー
タ全てを読み出すのに必要な数分、 read block reques
t を生成・送信するようにしている。
【0021】このようにすることで、バスリセットによ
りデータ転送が中断された場合に、同じデータを相手装
置より重複して受信することを防止することがき、ま
た、第1のバッファに格納されているデータがクリアさ
れて当該データが欠けてしまうのを防止することができ
る。したがって、データ転送が中断されたデータの継続
性を確保することができる。
【0022】
【発明の実施の形態】以下、本発明の一実施形態につい
て説明する。
【0023】図1は、本発明の一実施形態が適用された
プリンタ2を含むシステムの概略構成図である。ここ
で、コンピュータ1、プリンタ2、スキャナ3およびデジ
タルビデオカメラ4は、各々、IEEE(The Institute of
Electrical and Electronics Engineers, Inc.)1394に
準拠したシリアルインターフェースを備えており、該イ
ンターフェースを介して互いに接続されているものとす
る。また、本システムにおいて、少なくともコンピュー
タ1およびプリンタ2間のデータ通信は、SBP-2(Seral B
us Protocol 2)に準拠したデータ転送プロトコルにし
たがい行われるものとする。
【0024】以下では、説明を簡略化するために、コン
ピュータ1およびプリンタ2間でのデータ転送処理につい
てのみ説明することとする。
【0025】まず、コンピュータ1およびプリンタ2間で
行われる印刷実行シーケンスについて説明する。
【0026】図2は、コンピュータ1およびプリンタ2間
で行われる印刷実行シーケンスを示した図である。
【0027】図示するように、印刷実行シーケンスは、
1.ログイン処理、2.印刷データ転送処理、3.ログ
アウト処理に分けられる。
【0028】1.ログイン処理 コンピュータ1は、プリンタ2に、コンピュータ1がプリ
ンタ2へログインするためのLogin ORB(Operation Reque
st Block)の格納領域(具体的には、先頭アドレスおよ
び転送データ量)が記述された Write Block Request 1
001を通知する。
【0029】これを受けて、プリンタ2は、Write Respo
nseを返答する。その後、プリンタ2は、読出し開始アド
レスと所定の読出しデータ量を示した Read Block Requ
estを、Write Block Request 1001に記述された格納領
域のデータ全てを読み出すのに必要な数分順次生成す
る。ここで、この複数の Read Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションによりコンピュータ1から読み出
したデータに続くデータを、次のスプリットトランザク
ションで読み出すように、順番に生成され送出される。
これにより、プリンタ2は、コンピュータ1から、Read B
lock Response を順次受け取り、 Login ORBを得る。
【0030】次に、プリンタ2は、login ORBの読み出し
が終了すると、読出し開始アドレスと所定の読出しデー
タ量を示した Read Quadlet Request を送信して、コン
ピュータ1のコンフィギュレーションROMの内容を読み出
し、コンピュータ1のGUID(グローバルID)などを取得し
て、ログインしたコンピュータ1を識別する。
【0031】それから、プリンタ2は、印刷データ転送
指示や転送すべき印刷データの格納領域などが記述され
る Command Block Agent ORB を書き込むべきプリンタ2
側のアドレス(ORBポインタ)などの情報を含んだ Logi
n Response を Write BlockRequest として送信し、そ
の後、Login ORB の処理が終了したことを示すパケット
を Write Block Request として送信する。
【0032】2.印刷データ転送処理 コンピュータ1は、プリンタ2より通知された Login Res
ponse に示されたORBポインタへ、 Command Block Agen
t ORB を書き込むために、当該ORBが格納されたアドレ
スを記述したWrite Block Request 1002を送信する。
【0033】これを受けて、プリンタ2は、Write Respo
nseを返答する。次に、プリンタ2は、Write Block Requ
est 1002に記述されたアドレスに格納された Command B
lockAgent ORB を読み出すために、 Read Block Reques
t を生成し送信する。
【0034】これを受けて、コンピュータ1は、Command
Block Agent ORBを格納したパケットを、 Read Block
Response として送信する。
【0035】次に、プリンタ2は、コンピュータ1より通
知された Read Block Response に格納された Command
Block Agent ORB を解析し、当該ORBに記述された格納
領域の印刷データをコンピュータ1から取得すべく、読
み出し開始アドレスと1回のスプリットトランザクショ
ンで転送可能な所定データ量(たとえば2Kバイト)を記
述した Read Block Request を、当該ORBに記述された
格納領域の印刷データ全てを読み出すの必要な数分順次
生成する。ここで、この複数の Read Block Request の
生成は、1つのスプリットトランザクションが終了する
と、当該トランザクションによりコンピュータ1から読
み出したデータに続くデータを、次のスプリットトラン
ザクションで読み出すように、順番に生成され送出され
る。これにより、プリンタ2は、コンピュータ1から、Re
ad Block Response を順次受け取り、印刷データを得
る。
【0036】その後、プリンタ2は、Command Block Age
nt ORB の処理(印刷データの転送処理)が終了したこ
とを示すパケットを Write Block Request として送信
する。
【0037】3.ログアウト処理 コンピュータ1は、プリンタ2に、コンピュータ1がプリ
ンタ2からログアウトするための Logout ORB の格納領
域が記述された Write Block Request 1003を通知す
る。
【0038】これを受けて、プリンタ2は、 Write Resp
onse を返答する。その後、プリンタ2は、読出し開始ア
ドレスと所定の読出しデータ量を示した Read Block Re
quest を、Write Block Request 1003に記述された格納
領域のデータ全てを読み出すのに必要な数分順次生成す
る。ここで、この複数の Read Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションによりコンピュータ1から読み出
したデータに続くデータを、次のスプリットトランザク
ションで読み出すように、順番に生成され送出される。
これにより、プリンタ2は、コンピュータ1から、Read B
lock Response を順次受け取り、 Logout ORB を得る。
【0039】それから、プリンタ2は、 logout ORB の
処理が終了したことを示すパケットを Write Block Req
uest として送信する。
【0040】次に、上記の印刷実行シーケンス実行中に
バスリセットが発生して当該シーケンスが中断された場
合における、コンピュータ1およびプリンタ2間で行われ
る印刷データ転送再開実行シーケンスについて説明す
る。
【0041】コンピュータ1およびプリンタ2間におい
て、上記の印刷実行シーケンスが実施されて印刷データ
が転送されている際に、たとえばスキャナ3が新たに接
続されると、当該シーケンスが中断され、バスリセット
される。
【0042】バスリセットでは、上述したように、各ノ
ードがバスの接続トポロジに関する情報を消去し、再
度、ツリー識別や自己認識を行なって各ノードIDの自動
割り振りを行う。このため、バスリセットの前後で、コ
ンピュータ1およびプリンタ2各々のノードIDが変化する
場合がある。そこで、SBP-2では、コンピュータ1がプリ
ンタ2にログイン中にバスリセットされた場合、コンピ
ュータ1に、自身のノードIDをログイン先であるプリン
タ2に再確認させるためのリコネクト処理を所定期間内
に実行させるようにしている。
【0043】図3は、コンピュータ1およびプリンタ2間
で行われる印刷データ転送再開実行シーケンスを示した
図である。
【0044】このシーケンスは、バスリセットにより、
各ノードがバスの接続トポロジに関する情報を消去し、
再度、ツリー識別や自己認識を行なって各ノードIDの自
動割り振りを行った後に実行される。このシーケンス
は、1.コンピュータ1によるプリンタ2の認識処理、
2.リコネクト処理、3.印刷データ転送の再開処理、
4.ログアウト処理に分けられる。
【0045】1.コンピュータ1によるプリンタ2の認識
処理 コンピュータ1は、バスリセットにより新たに割り振ら
れたノードIDとノードとの対応を認識するため、各ノー
ドからGUIDやその他のノード認識に必要な情報を取得す
る。すなわち、コンピュータ1は、各ノードに対し、Rea
d Quadlet Request を送信し、その応答として Read Qu
adlet Response を受信する処理行うことで、各ノード
からコンフィギュレーションROMの内容を読み出し、GUI
Dなどの情報を取得する。これにより、バスリセット前
にログインしていたプリンタ2を識別する。
【0046】2.リコネクト処理 コンピュータ1は、プリンタ2に、コンピュータ1がプリ
ンタ2へリコネクトするためのReconnect ORBの格納領域
が記述された Write Block Request 1004を通知する。
【0047】これを受けて、プリンタ2は、 Write Resp
onse を返答する。その後、プリンタ2は、 Read Block
Request を、Write Block Request 1004に記述された格
納領域のデータ全てを読み出すのに必要な数分順次生成
する。ここで、この複数のRead Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションによりコンピュータ1から読み出
したデータに続くデータを、次のスプリットトランザク
ションで読み出すように、順番に生成され送出される。
これにより、プリンタ2は、コンピュータ1から、Read B
lock Response を順次受け取り、 Reconnect ORB を得
る。
【0048】次に、プリンタ2は、 Reconnect ORB の読
み出しが終了すると、 Read Quadlet Request を送信し
て、コンピュータ1のコンフィギュレーションROMの内容
を読み出し、コンピュータ1のGUIDなどを取得する。こ
れにより、プリンタ2は、バスリセット前にログインし
ていたコンピュータ1を識別する。
【0049】それから、プリンタ2は、 Reconnect ORB
の処理が終了したことを示すパケットを Write Block R
equest として送信する。
【0050】3.印刷データ転送の再開処理 コンピュータ1は、バスリセットにより中断された印刷
実行シーケンスにおいて、プリンタ2より通知された Lo
gin Response パケットに示されたORBポインタへ、印刷
データ転送のための Command Block Agent ORB を書き
込むために、当該ORBが格納されたアドレスを記述した
Write Block Request 1005を送信する。
【0051】これを受けて、プリンタ2は、 Write Resp
onse を返答する。次に、プリンタ2は、 Write Block R
equest 1005に記述されたアドレスに格納された Comman
d Block Agent ORB を読み出すために、 Read Block Re
quest を生成し送信する。これを受けてコンピュータ1
は、 Command Block Agent ORB を格納したパケット
を、 Read Block Response として送信する。
【0052】次に、プリンタ2は、コンピュータ1より通
知された Read Block Response に格納された Command
Block Agent ORB を解析する。そして、当該ORBに記述
された印刷データの格納領域が、バスリセットにより実
行が中断された Command Block Agent ORB に記述され
た印刷データの格納領域と同じか否かを判断する。
【0053】同じ場合は、当該ORBに記述された格納領
域の印刷データのうち、バスリセット前における当該OR
Bの処理にて未取得分のみの印刷データをコンピュータ1
から取得すべく、読み出し開始アドレスと1回のスプリ
ットトランザクションで転送可能な所定データ量(たと
えば2Kバイト)を記述した Read Block Request を、未
取得分のデータ全てを読み出すのに必要な数分順次生成
する。ここで、この複数の Read Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションによりコンピュータ1から読み出
したデータに続くデータを、次のスプリットトランザク
ションで読み出すように、順番に生成され送出される。
これにより、プリンタ2は、コンピュータ1から、Read B
lock Response を順次受け取り、バスリセットにより実
行が中断された Command Block Agent ORB の処理にて
未取得分の印刷データを得る。
【0054】一方、異なる場合は、当該ORBに記述され
た格納領域の印刷データをコンピュータ1から取得すべ
く、読み出し開始アドレスと1回のスプリットトランザ
クションで転送可能な所定データ量(たとえば2Kバイ
ト)を記述した Read Block Request を、当該格納領域
の印刷データ全てを読み出すの必要な数分順次生成す
る。ここで、この複数の Read Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションによりコンピュータ1から読み出
したデータに続くデータを、次のスプリットトランザク
ションで読み出すように、順番に生成され送出される。
これにより、プリンタ2は、コンピュータ1から、Read B
lock Response を順次受け取り、当該ORBに記述された
格納領域の印刷データを得る。
【0055】その後、プリンタ2は、 Command Block Ag
ent ORB の処理(印刷データの転送処理)が終了したこ
とを示すパケットを Write Block Request として送信
する。
【0056】4.ログアウト処理 コンピュータ1は、プリンタ2に、コンピュータ1がプリ
ンタ2からログアウトするための Logout ORB の格納領
域が記述された Write Block Request 1006を通知す
る。
【0057】これを受けて、プリンタ2は、 Write Resp
onse を返答する。その後、コンピュータ1よりデータを
読み出すための Read Block Request を、Write Block
Request 1006に記述された格納領域のデータ全てを読み
出すのに必要な数分順次生成する。ここで、この複数の
Read Block Request の生成は、1つのスプリットトラ
ンザクションが終了すると、当該トランザクションによ
りコンピュータ1から読み出したデータに続くデータ
を、次のスプリットトランザクションで読み出すよう
に、順番に生成され送出される。これにより、プリンタ
2は、コンピュータ1から、Read Block Response を順次
受け取り、 Logout ORB を得る。
【0058】それから、プリンタ2は、 logout ORB の
処理が終了したことを示すパケットを Write Block Req
uest として送信する。
【0059】以上のように、本実施形態では、バスリセ
ットにより Command Block Agent ORB による印刷デー
タの転送処理が中断された場合、プリンタ2は、バスリ
セット前における当該ORBの処理にて未取得分の印刷デ
ータのみをコンピュータ1から取得するようにしてい
る。このようにすることで、プリンタ2は、バスリセッ
トにより印刷データの受信が中断された場合でも、同じ
印刷データを重複して受信することなく、継続性が確保
された印刷データの受信を行うことが可能となる。
【0060】次に、以上のような印刷データ転送再開実
行シーケンスを実現するコンピュータ1およびプリンタ2
について説明する。
【0061】まず、コンピュータ1について説明する。
【0062】図4は、図1に示すコンピュータ1の概略
構成図である。
【0063】図示するように、コンピュータ1は、デー
タ通信部11とコンピュータ本体部12を有する。
【0064】コンピュータ本体部12は、図5に示すよう
に、CPU121と、メモリ122と、ハードディスク装置など
の外部記憶装置123と、CD-ROMやFDなどの可搬性を有す
る記憶媒体125からデータを読み取る読取装置124と、キ
ーボードやマウスなどの入力装置126と、ディスプレイ
などの表示装置127と、上述した各装置とデータ通信部1
1を含む要素間のデータ送受を司るインターフェース128
といった、一般的な電子計算機の構成を有している。な
お、コンピュータ本体部12では、プリンタ2を制御する
ためのプリンタドライバソフトや、プリンタ2で印刷す
べき印刷データを作成するワープロソフトやグラフィッ
クソフトなどのアプリケーションソフトが稼働している
ものとする。
【0065】データ通信部11は、IEEE1394の物理レイヤ
における処理を実行するPHY処理部111と、IEEE1394のリ
ンクレイヤにおける処理を実行するLink処理部112と、I
EEE1394のトランザクションレイヤにおける処理を実行
するパケット処理部113と、SBP-2で定義されているバス
リセットを検出するバスリセット検出部114と、SBP-2に
準拠したデータ転送プロトコルを処理するジョブ処理部
115を有する。
【0066】ここで、データ通信部11を構成する各要素
は、ASIC(Application Specific Integrated Circuit
s)、FPLA(Field-Programmable Logic Array)などの
集積ロジックICによりハードウエア的に構成してもよい
し、あるいは、DSP(Digital Signal Processor)によ
りソフトウエア的に構成するようにしてもよい。さら
に、ジョブ処理部115は、コンピュータ本体部11のCPU12
1に所定のプログラムを実行させることにより実現して
もよい。くわえて、データ通信部11は、コンピュータ本
体部12に装着可能な1つの装置として提供されるもので
もよい。
【0067】ジョブ処理部115は、ORB(Operation Requ
est Block)を生成し、これをプリンタ2に転送するため
に必要なパケットの生成をパケット処理部113に依頼す
る。たとえば、コンピュータ1がプリンタ2へログイン/
ログアウトするための LoginORB / Logout ORB や、プ
リンタ2がコンピュータ1から印刷データを読み出すため
の Command Block Agent ORB などを生成し、所定の格
納領域に格納する。そして、パケット処理部113に対
し、プリンタ2がコンピュータ1からこれらのORBを読み
出すための Write Block Request の生成を依頼する。
【0068】また、ジョブ処理部115は、プリンタ2がコ
ンピュータ1から印刷データを読み出すための Command
Block Agent ORB を実行中に、バスリセット検出部114
によりバスリセットが検出された場合、Link処理部112
によるツリー識別や自己認識の処理終了後、コンピュー
タ1がプリンタ2へリコネクトするための reconnect ORB
を生成し、コンピュータ本体部11の所定の格納領域に
格納する。そして、パケット処理部113に対し、プリン
タ2がコンピュータ1から当該ORBを読み出すための Writ
e Block Request の生成を依頼して、リコネクト処理を
行う。その後、パケット処理部113に対して、実行が中
断された Command Block Agent ORB をプリンタ2がコン
ピュータ1から読み出すための Write Block Request の
生成を再度依頼する。
【0069】パケット処理部113は、パケット受信部116
とパケット生成部117を有する。
【0070】パケット受信部116は、PHY処理部111およ
びLink処理部112を介して他ノードからパケットを受信
する。
【0071】パケット生成部117は、IEEE1394に準拠し
た各種パケットを生成する。たとえば、ジョブ処理部11
5からの指示にしたがい、ジョブ処理部115が生成したOR
Bをプリンタ2に読み出させるための Write Block Reque
st を生成したり、パケット受信部116が受信した Read
Block Request が要求するデータをコンピュータ本体部
12から読み出し、当該データを含んだ Read Block Resp
onse を生成したりする。
【0072】次に、プリンタ2について説明する。
【0073】図6は、図1に示すプリンタ2の概略構成
図である。
【0074】図示するように、プリンタ2はデータ通信
部21とプリンタ本体部22を有する。
【0075】プリンタ本体部22は、図7に示すように、
メモリ222と、メモリ222に格納された各種プログラムを
実行することでプリンタ本体部21を構成する各部を統括
的に制御するCPU221と、印刷媒体にデータを印刷するた
めの機構(たとえば、インクを吐出する印刷ヘッド、プ
ラテン、印刷ヘッドを搭載するキャリッジを駆動するキ
ャリッジ駆動機構、紙送り機構、および印刷媒体の給排
紙処理を行う給排紙機構など)を有するプリンタエンジ
ン224と、データ通信部22とのデータ送受を司るI/F回路
223といった、一般的なプリンタの構成を有している。
【0076】データ通信部21は、IEEE1394の物理レイヤ
における処理を実行するPHY処理部211と、IEEE1394のリ
ンクレイヤにおける処理を実行するLink処理部212と、I
EEE1394のトランザクションレイヤにおける処理を実行
するパケット処理部213と、IEEE1394で定義されている
バスリセットを検出するバスリセット検出部214と、SBP
-2に準拠したデータ転送プロトコルを処理するジョブ処
理部215と、を有する。
【0077】ここで、データ通信部21を構成する各要素
は、ASIC(Application Specific Integrated Circuit
s)、FPLA(Field-Programmable Logic Array)などの
集積ロジックICによりハードウエア的に構成してもよい
し、あるいは、DSP(Digital Signal Processor)によ
りソフトウエア的に構成するようにしてもよい。さら
に、ジョブ処理部215は、プリンタ本体部21のCPU221に
所定のプログラムを実行させることにより実現してもよ
い。くわえて、データ通信部21は、プリンタ本体部22に
装着可能な1つの装置として提供されるものでもよい。
【0078】パケット処理部213は、パケット受信部216
とパケット生成部217を有する。
【0079】パケット受信部216は、印刷データ用バッ
ファ2163と、汎用バッファ2162と、受信セレクタ2161を
有する。
【0080】印刷データ用バッファ2163は、コンピュー
タ1より通知された Read Block Response に含まれる印
刷データを格納し、格納した印刷データをバイト単位
で、すなわちパラレルデータとしてプリンタ本体部22に
送信する。
【0081】ここで、印刷データ用バッファ2163のサイ
ズは、プリンタ2がコンピュータ1から印刷データを取
得するために生成する Read Block Request (上述の印
刷実行シーケンスや印刷データ転送再開実行シーケンス
を参照)に記述される、1回のスプリットトランザクシ
ョンで転送可能な所定データ量(たとえば2Kバイト)よ
りも、大きくなるように(たとえば4Kバイト)に設定す
る。
【0082】なお、印刷データ用バッファ2163に格納さ
れた印刷データのプリンタ本体部22への送信タイミング
は、たとえば、印刷データ用バッファ2163にデータが格
納された時点とすればよい。
【0083】汎用バッファ2162は、印刷データを格納し
た Read Block Response 以外のパケットに含まれるデ
ータを格納する。
【0084】受信セレクタ2161は、PHY処理部211および
Link処理部212を介して受け取ったパケットの送り先バ
ッファを選択する。具体的には、受け取ったパケットが
印刷データを格納した Read Block Response の場合は
印刷データ用バッファ2163を選択し、印刷データを格納
した Read Block Response 以外のパケットの場合は汎
用バッファ2162を選択する。なお、SBP-2(Seral Bus P
rotocol 2)では、パケットに当該パケットの種類など
を表す情報が付与される。受信パケットセレクタ2162
は、これらの情報を調べることで、受け取ったパケット
が 印刷データを格納した Read Block Response である
か否かを判断する。
【0085】パケット生成部217は、印刷データ用生成
部2173と汎用生成部2172と送信セレクタ2171を有する。
【0086】印刷データ用生成部2173は、読出し開始ア
ドレスと読出しデータ量を記述した、コンピュータ1よ
り印刷データを読み出すための Read Block Request を
生成する。なお、印刷データ用生成部2172は、パケット
受信部216の印刷データ用バッファ2163の空き容量を監
視する。そして、印刷データ用バッファ2163に ReadBl
ock Request に記述される読出しデータ量分の空き容量
があるのを確認してから、当該 Read Block Request を
生成する。
【0087】汎用生成部2172は、コンピュータ1より印
刷データを読み出すための Read Block Request 用パケ
ット以外のパケットを生成する。
【0088】送信セレクタ2171は、印刷データ用生成部
2173および汎用生成部2172のいずれか一方を選択し、選
択したパケット生成部で生成されたパケットを、PHY処
理部211およびLink処理部212を介してコンピュータ1に
送信する。
【0089】ジョブ処理部215は、実行状況監視部2151
とジョブ実行部2152を有する。
【0090】実行状況監視部2152は、コンピュータ1か
ら読み出した印刷データ転送のための Command Block A
gent ORB について、当該ORBにしたがい印刷データ用生
成部2172で生成した Read Block Request のパケット数
と、当該 Read Block Request に対する応答としてコン
ピュータ1より受け取った Read Block Response のパケ
ット数を、当該ORBの実行が完了するまで計数する。
【0091】ジョブ実行部2152は、汎用バッファ2162に
格納されたパケットを解析して、その内容に応じた処理
を行う。
【0092】たとえば、汎用バッファ2162に格納された
パケットが、 Login ORB / LogoutORB や Reconnect OR
B の格納先が記述された Write Block request である
場合、コンピュータ1から当該ORBを取得すべく、汎用パ
ケット生成部2172に通知する。これを受けて、汎用パケ
ット生成部2172は、Read Block Request を、前記 Writ
e Block Request に格納領域が記述されたORBを読み出
すの必要な数分生成する。
【0093】また、たとえば、汎用パケットバッファ21
62に格納されたパケットが、印刷データ転送のための C
ommand Block Agent ORB を格納した Read Block Respo
nseである場合、当該ORBに記述された格納領域の印刷デ
ータをコンピュータ1から取得すべく、印刷データ用生
成部2173に通知する。これを受けて、印刷データ用生成
部2173は、 Read Block Request を、前記ORBに格納領
域が記述された印刷データを読み出すの必要な数分生成
する。
【0094】なお、上記の Read Block Request の生成
は、1つのスプリットトランザクションが終了すると、
当該トランザクションよりコンピュータ1から読み出し
たデータに続くデータを、次のスプリットトランザクシ
ョンで読み出すように、順番に生成され送出される。
【0095】また、ジョブ実行部2152は、バスリセット
検出部214によりバスリセットが検出された場合、パケ
ット生成部217およびパケット受信部216を初期化する。
【0096】ただし、コンピュータ1より読み出した印
刷データ転送のための Command Block Agent ORB を実
行中にバスリセットされた場合、パケット受信部216の
印刷データ用バッファ2163については、バスリセット終
了後、SBP-2で規定するリコネクト期間が経過するま
で、初期化するのを待つ。
【0097】当該リコネクト期間中に、コンピュータ1
よりリコネクトされた場合、コンピュータ1より新たに
読み出した印刷データ転送のための Command Block Age
nt ORB が示す印刷データの格納領域が、バスリセット
により実行が中断された Command Block Agent ORB が
示す印刷データの格納領域と同じ場合、印刷データ用バ
ッファ2163の初期化は行わない。ジョブ実行部2152は、
当該ORBが示す印刷データの格納領域と、実行状況監視
部2152に保持された、当該ORBの実行がバスリセットに
より中断された際の Read Block Request あるいは Rea
d Block Responseのパケット数から、当該ORBについ
て、取得済みの印刷データ(バスリセット前に既に読み
出した印刷データ)を除いた、未取得分の印刷データの
格納領域を特定する。そして、未取得分の印刷データを
コンピュータ1から取得すべく、印刷データ用生成部217
3に通知する。これを受けて、印刷データ用生成部2173
は、前記未取得分の印刷データを読み出すのに必要な数
分、 read block request を生成する。
【0098】一方、SBP-2で規定するリコネクト期間中
に、コンピュータ1よりリコネクトがなかった場合、あ
るいは、リコネクトされたが、コンピュータ1より新た
に読み出した印刷データ転送のための Command Block A
gent ORB が示す印刷データの格納領域がバスリセット
により実行が中断された Command Block Agent ORB が
示す印刷データの格納領域と異なる場合、もしくは、バ
ッファをクリアする要求を受け付けた場合は、印刷デー
タ用バッファ2163の初期化を行う。
【0099】次に、上記構成のコンピュータ1およびプ
リンタ2の動作について説明する。
【0100】まず、コンピュータ1の動作について説明
する。
【0101】図8は、図2に示す印刷実行シーケンスで
のコンピュータ1の動作を説明するためのフロー図であ
る。
【0102】ジョブ処理部115は、コンピュータ本体部1
2より印刷指示を受けると、図2に示すログイン処理を
実行する(ステップS801)。
【0103】具体的には、ジョブ処理部115は、コンピ
ュータ1がプリンタ2へログインするための Login ORB
を生成し、所定の格納領域に格納する。それから、パケ
ット生成部117に、 Login ORB の格納領域が記述された
Write Block Request を生成させてプリンタ2に送信す
る。その後、パケット生成部117は、パケット受信部116
を介してプリンタ2より受け取った Read Block Request
が要求するデータを読み出し、当該データを含んだ Re
ad Block Response をプリンタ2に送信する。これによ
り、 Login ORB をプリンタ2に読み込ませる。
【0104】それから、パケット生成部117は、パケッ
ト受信部116を介してプリンタ2より受け取った Read Qu
adlet Request が要求するデータを読み出し、当該デー
タを含んだ Read Quadlet Request をプリンタ2に送信
する。これにより、コンピュータ1のコンフィギュレー
ションROMの内容をプリンタ2に読み込ませ、コンピュー
タ1のGUID(グローバルID)などを認識させる。次に、ジ
ョブ処理部115は、パケット受信部116を介してプリンタ
2より受け取った Write Block Request に格納されてい
る、印刷データ転送のための Command Block Agent ORB
を書き込むべきプリンタ2側のアドレス(ORBポイン
タ)などの情報を含んだ Login Response を取得する。
【0105】次に、ジョブ処理部115は、図2に示す印
刷データ転送処理を実行する(ステップS802)。
【0106】具体的には、ジョブ処理部115は、印刷デ
ータ転送のための Command Block Agent ORB を生成
し、所定の格納領域に格納する。そして、パケット生成
部117に、プリンタ2が当該ORBを読み出すための Write
Block Request を生成させ、プリンタ2に送信する。そ
の後、パケット生成部117は、パケット受信部116で受信
した Read Block Request が要求するデータを読み出し
て、当該データを含んだRead Block Response をプリン
タ2に送信する。これにより、Command Block Agent ORB
をプリンタ2に読み込ませる。
【0107】それから、パケット生成部117は、パケッ
ト受信部116で受信した Read BlockRequest が要求する
データを読み出して、当該データを含んだ Read Block
Response をプリンタ2に送信する。この処理を、パケッ
ト受信部116が前記 CommandBlock Agent ORB にしたが
った処理(印刷データ転送処理)の終了を示す WriteBl
ock Response を受け取るまで繰り返し行う。これによ
り印刷データをプリンタ2に読み込ませる。
【0108】次に、ジョブ処理部115は、図2に示すロ
グアウト処理を実行する(ステップS803)。
【0109】具体的には、ジョブ処理部115は、プリン
タ2からログアウトするための Logout ORB を生成し、
所定の格納領域に格納する。そして、パケット生成部11
7に、プリンタ2が当該ORBを読み出すための Write Bloc
k Request を生成させ、プリンタ2に送信する。その
後、パケット生成部117は、パケット受信部117で受信し
た Read Block Request が要求するデータを読み出し
て、当該データを含んだ Read Block Response をプリ
ンタ2に送信する。これにより、Logout ORBをプリンタ2
に読み込ませる。
【0110】図9は、図3に示す印刷データ転送再開実
行シーケンスでのコンピュータ1の動作を説明するため
のフロー図である。
【0111】プリンタ2へログイン中にバスリセットが
発生すると、ジョブ処理部115は、バスリセット検出部1
14を介してこれを検出し(ステップS901)、パケット処
理部113を初期化する(ステップS902)。なお、バスリ
セットにより、Link処理部112は、他のノードと強調し
てツリー識別や自己認識を行い、ノードIDを取得する。
【0112】次に、ジョブ処理部115は、図3に示すプ
リンタ2の認識処理を実行する(ステップS903)。
【0113】具体的には、パケット生成部117に Read Q
uadlet Request を生成させ、これを任意のノードIDを
有するノードに送信する。そして、その応答として受信
したRead Quadlet Response をパケット受信部116から
受け取ることで、当該ノードからコンフィギュレーショ
ンROMの内容を読み出して、GUIDなどの情報を取得す
る。この処理を、全てのノードに対して行うことで、バ
スリセットにより新たに割り振られたノードIDとノード
との対応を認識する。これにより、バスリセット前にロ
グインしていたプリンタ2を識別する。
【0114】次に、ジョブ処理部115は、図3に示すリ
コネクト処理を実行する(ステップS904)。
【0115】具体的には、プリンタ2へリコネクトする
ための Reconnect ORB を生成し、所定の格納領域に格
納する。そして、パケット生成部117に、プリンタ2が当
該ORBを読み出すための Write Block Request を生成さ
せ、プリンタ2に送信する。その後、パケット生成部117
は、パケット受信部117で受信した Read Block Request
が要求するデータを読み出して、当該データを含んだ
Read Block Responseをプリンタ2に送信する。これによ
り、Reconnect ORBをプリンタ2に読み込ませる。
【0116】次に、ジョブ処理部115は、図3に示す印
刷データ転送再開処理を実行する(ステップS905)。
【0117】具体的には、印刷データの転送指示や転送
すべき印刷データの格納領域が記述された Command Blo
ck Agent ORB を生成し、所定の格納領域に格納する。
そして、パケット生成部117に、プリンタ2が当該ORBを
読み出すための Write BlockRequest を生成させ、プリ
ンタ2に送信する。その後、パケット生成部117は、パケ
ット受信部116で受信した Read Block Request が要求
するデータを読み出して、当該データを含んだ Read Bl
ock Response をプリンタ2に送信する。これにより、Co
mmand Block Agent ORB をプリンタ2に読み込ませる。
【0118】それから、パケット生成部117は、パケッ
ト受信部116で受信した Read BlockRequest が要求する
データを読み出して、当該データを含んだ Read Block
Response をプリンタ2に送信する。この処理を、パケッ
ト受信部116が前記 CommandBlock Agent ORBにしたがっ
た処理(印刷データ転送処理)の終了を示す WriteBloc
k Response を受け取るまで繰り返し行う。これによ
り、印刷データをプリンタ2に読み込ませる。
【0119】なお、図2に示す印刷データ転送処理中に
バスリセットが発生した場合、すなわち、 Command Blo
ck Agent ORB をプリンタ2に読み込ませるための Write
Block Request を送信してから、当該ORBにしたがった
処理の終了を示す Write Block Response を受け取るま
での間にバスリセットが発生した場合、ジョブ処理115
は、パケット生成部117に、実行が中断された前記 Comm
and Block Agent ORBをプリンタ2に読み込ませるための
Write Block Request を再度生成させ、プリンタ2に送
信する。
【0120】次に、ジョブ処理部115は、図3に示すロ
グアウト処理を実行する(ステップS906)。
【0121】具体的には、プリンタ2からログアウトす
るための Logout ORB を生成し、所定の格納領域に格納
する。そして、パケット生成部117に、プリンタ2が当該
ORBを読み出すための Write Block Request を生成さ
せ、プリンタ2に送信する。その後、パケット生成部117
は、パケット受信部117で受信した Read Block Request
が要求するデータを読み出して、当該データを含んだ
Read Block Responseをプリンタ2に送信する。これによ
り、Logout ORBをプリンタ2に読み込ませる。
【0122】次に、プリンタ2の動作について説明す
る。
【0123】図10は、図2に示す印刷実行シーケンス
でのプリンタ2の動作を説明するためのフロー図であ
る。
【0124】まず、ジョブ実行部2152は、図2に示すロ
グイン処理を実行する(ステップS1001)。
【0125】具体的には、ジョブ実行部2152は、汎用バ
ッファ2162を介して、コンピュータ1より Login ORB の
格納領域が記述された Write Block Request を受信す
ると、汎用生成部2172に Write Response を生成させ、
プリンタ2に送信する。それから、ジョブ実行部2152
は、汎用生成部2172に、Read Block Request を、Write
Block Request に格納領域が記述された Login ORB を
読み出すのに必要な数分生成させ、コンピュータ1に送
信する。そして、その応答である Read Block Response
を汎用バッファ2162を介して受け取る。これにより、
コンピュータ1からLogin ORB を読み出す。
【0126】次に、ジョブ実行部2152は、 login ORB
の読み出しが終了すると、汎用生成部2172に Read Quad
let Request を生成させてコンピュータ1に送信し、そ
の応答である Read Quadlet Response を汎用バッファ2
162を介して受け取る。これにより、コンピュータ1のコ
ンフィギュレーションROMの内容を読み出し、コンピュ
ータ1のGUIDなどを取得して、ログインしたコンピュー
タ1を識別する。
【0127】それから、ジョブ実行部2152は、印刷デー
タ転送指示や転送すべき印刷データの格納領域などが記
述される Command Block Agent ORB を書き込むべきプ
リンタ2側のアドレス(ORBポインタ)などの情報を含ん
だ Login Response を生成し、これを含んだ Write Blo
ck Request を汎用性生成部2172に生成させてコンピュ
ータ1に送信する。その後、汎用性生成部2172に、Login
ORB の処理が終了したことを示すデータを含んだ Writ
e Block Request 生成させ、コンピュータ1に送信す
る。
【0128】次に、ジョブ実行部2152は、図2に示す印
刷データ転送処理を実行する(ステップS1002)。
【0129】具体的には、ジョブ実行部2152は、汎用バ
ッファ2162を介して、コンピュータ1より、印刷データ
の転送指示や転送すべき印刷データの格納領域が記述さ
れたCommand Block Agent ORB の格納領域が示された W
rite Block Request を受け取ると、汎用生成部2172
に、Write Response を生成させ、コンピュータ1に送信
する。それから、ジョブ実行部2152は、汎用生成部2172
に、コンピュータ1よりWrite Block Request に記述さ
れた格納領域から Command Block Agent ORB を読み出
すための Read Block Request を生成させてコンピュー
タ1に送信し、その応答である Read Block Response を
汎用バッファ2162から受け取る。これにより、コンピュ
ータ1から Command Block Agent ORB を読み出す。
【0130】次に、ジョブ実行部2152は、コンピュータ
1より読み出した Command Block Agent ORB が示す格納
領域の印刷データを、コンピュータ1から取得すべく、
印刷データ用生成部2173に Read Block Request を生成
させる。そして、当該 ReadBlock Request に対する応
答としてコンピュータ1より Read Block Response を受
け取り、これを印刷データ用バッファ2163に格納するこ
とで、前記ORBが示す格納領域の印刷データを受信す
る。
【0131】ジョブ実行部2152は、 Command Block Age
nt ORB が示す格納領域の印刷データの読み出し処理が
終了すると、汎用生成部2172に、前記 Command Block A
gentORB の処理が終了したことを示す Write Block Req
uest を生成させ、コンピュータ1に送信する。
【0132】次に、ジョブ実行部2152は、図2に示すロ
グアウト処理を実行する(ステップS1003)。
【0133】具体的には、ジョブ実行部512は、コンピ
ュータ1から Logout ORB の格納領域を示した Write B
lock Request を、汎用バッファ2162を介して受け取
る。そして、Write Block Request に示された格納領域
から Logout ORB を読み出すべく、汎用生成部2172に、
Read Block Request を生成させてコンピュータ1に送
信し、その応答である Read Block Response を汎用バ
ッファ2162を介して受信する。これにより、Logout ORB
をコンピュータ1から読み出す。
【0134】ジョブ実行部2152は、 Logout ORB の読み
出し処理が終了すると、汎用生成部2172に、 Logout OR
B の処理が終了したことを示す Write Block Request
生成させて送信する。
【0135】図11は、図3に示す印刷データ転送再開
実行シーケンスでのプリンタ2の動作を説明するための
フロー図である。
【0136】コンピュータ1のログイン中にバスリセッ
トが発生すると、実行状況監視部2151は、バスリセット
検出部214を介してこれを検出し(ステップS1101)、パ
ケット処理部213の印刷データ用バッファ2163を除く各
部を初期化する(ステップS1102)。
【0137】なお、バスリセットにより、Link処理部21
2は、他のノードと協調してツリー識別や自己認識を行
い、ノードIDを取得する。また、図3に示すプリンタ2
の認識処理よりコンピュータ1から Read Quadlet Reque
st が送信された場合、パケット処理部213は、これを汎
用バッファ2162で受信し、当該 Request が要求するデ
ータを読み出す。そして、汎用生成部2172にて、当該デ
ータを含んだ Read Quadlet Response を生成し、コン
ピュータ1に送信する。これにより、プリンタ2のコンフ
ィギュレーションROMに記述されたGUIDなどの情報を、
コンピュータ1に通知する。
【0138】次に、実行状況監視部2151は、バスリセッ
ト検出後、SBP-2で規定するリコネクト期間内に、リコ
ネクト要求されたか否かを判断する(ステップS1103、
S1104)。
【0139】具体的には、ジョブ実行部2152は、汎用バ
ッファ2162に格納されたパケットを調べ、SBP-2で規定
するリコネクト期間内に、コンピュータ1より Reconnec
t ORBの格納領域が示された Write Block Request を受
信したか否かで判断する。
【0140】SBP-2で規定するリコネクト期間内に、リ
コネクト要求されなかった場合は、印刷データ用バッフ
ァ2163を初期化し(ステップS1105)、処理を終了す
る。
【0141】一方、SBP-2で規定するリコネクト期間内
に、コンピュータ1よりリコネクト要求された場合、ジ
ョブ実行部2152は、図3に示すリコネクト処理を実行す
ることで、リコネクトを要求したノードがコンピュータ
1であることを認識する(ステップS1106)。
【0142】具体的には、ジョブ実行部512は、コンピ
ュータ1より Reconnect ORB の格納領域が示された Wri
te Block Request を受け取ると、汎用生成部2172に、W
riteResponse を生成させ、コンピュータ1に送信する。
それから、ジョブ実行部2152は、汎用生成部2172に、Wr
ite Block Request に記述された格納領域からReconnec
t ORB をコンピュータ1より読み出すための Read Block
Request を生成させてコンピュータ1に送信し、その応
答である Read Block Response を汎用バッファ2162か
ら受け取る。これにより、コンピュータ1から Reconnec
t ORB を読み出す。
【0143】次に、ジョブ実行部2152は、 Reconnect O
RB の読み出しが終了すると、汎用生成部2172に Read Q
uadlet Request を生成させてコンピュータ1に送信し、
その応答である Read Quadlet Response を汎用バッフ
ァ2162から受け取る。これにより、コンピュータ1のコ
ンフィギュレーションROMの内容を読み出し、コンピュ
ータ1のGUIDなどを取得する。これにより、ジョブ実行
部2152は、リコネクトを要求したノードが、バスリセッ
ト前にログインしていたコンピュータ1であることを識
別する。
【0144】その後、ジョブ実行部2152は、汎用生成部
2172に Reconnect ORB の処理が終了したことを示すデ
ータを含んだ Write Block Request を生成させ、コン
ピュータ1に送信する。
【0145】次に、ジョブ実行部2152は、図3に示す印
刷データ転送再開処理を実行する(ステップS1107〜S11
11)。
【0146】具体的には、ジョブ実行部2152は、汎用バ
ッファ2162を介して、コンピュータ1より、印刷データ
の転送指示や転送すべき印刷データの格納領域が記述さ
れたCommand Block Agent ORB の格納領域が示された W
rite Block Request を受け取ると、汎用生成部2172
に、Write Response を生成させ、コンピュータ1に送信
する。それから、ジョブ実行部2152は、汎用生成部2172
に、コンピュータ1よりWrite Block Request に記述さ
れた格納領域から Command Block Agent ORB を読み出
すための Read Block Request を生成させてコンピュー
タ1に送信し、その応答である Read Block Responseを
汎用バッファ2162から受け取る。これにより、印刷デー
タ転送のための Command Block Agent ORB をコンピュ
ータ1から読み出す(ステップS1107)。
【0147】次に、ジョブ実行部2152は、実行状況監視
部2151に印刷データ転送のための Command Block Agent
ORB が保持されていれば、当該ORBを取得し、ステップ
S907で取得した Command Block Agent ORB と比較する
(ステップS1108)。
【0148】上述したように、実行状況監視部2151は、
コンピュータ1から読み出した印刷データ転送のための
Command Block Agent ORB について、印刷データ用生成
部2172が当該ORBにしたがい生成した Read Block Reque
st のパケット数と、当該 Read Block Request に対す
る応答としてコンピュータ1より受け取った Read Block
Response のパケット数を、当該ORBの実行が完了する
まで計数する。したがって、バスリセットにより当該OR
Bの実行が中断された場合、実行状況監視部2151には、
当該ORBについて、バスリセットされるまでに印刷デー
タ用生成部2172が当該ORBにしたがい生成した Read Blo
ck Request のパケット数と、当該 Read Block Request
に対する応答としてコンピュータ1より受け取った Rea
d Block Response のパケット数が保持されることにな
る。
【0149】ステップS1108での比較の結果、実行状況
監視部2151に保持されている Command Block Agent ORB
が示す印刷データの格納領域と、ステップS907で取得
した Command Block Agent ORB が示す印刷データの格
納領域が同じ場合、ジョブ実行部2152は、バスリセット
前後における印刷データの継続性を確保するために以下
の処理を行う。
【0150】すなわち、ジョブ実行部2152は、ステップ
S1107で取得した Command Block Agent ORB が示す印刷
データの格納領域(実際には先頭アドレスおよび転送デ
ータ量により特定される)と、実行状況監視部2151に保
持されている Read Block Request のパケット数あるい
は Read Block Response のパケット数から、当該ORBに
ついて、取得済みの印刷データ(バスリセット前に既に
読み出した印刷データ)を除いた、未取得分の印刷デー
タの格納領域を特定する。
【0151】そして、ジョブ実行部2152は、未取得分の
印刷データのみをコンピュータ1から取得すべく、印刷
データ用生成部2173に、前記未取得分の印刷データを読
み出すの必要な数分 read block request を生成させ、
コンピュータ1に送信する。そして、当該 Read Block R
equest に対する応答としてコンピュータ1より ReadBlo
ck Response を受け取り、これを印刷データ用バッファ
2163に格納することで、未取得分の印刷データのみを受
信する(ステップS1109)。
【0152】なお、実行状況監視部2151は、印刷データ
転送のための Command Block AgentORB の実行が完了す
ると、計測内容をクリアする。そして、新たに印刷デー
タ転送のための Command Block Agent ORB が実行され
ると計測を開始する。
【0153】一方、実行状況監視部2151に印刷データ転
送のための Command Block Agent ORB が保持されてい
ない場合、あるいは、ステップS1108での比較の結果、
実行状況監視部2151に保持されている Command Block A
gent ORB が示す印刷データの格納領域とステップS1107
で取得した Command Block Agent ORB が示す印刷デー
タの格納領域が異なる場合、ジョブ実行部2152は、ステ
ップS1107で取得した Command Block Agent ORB が示す
格納領域の印刷データをコンピュータ1から取得すべ
く、印刷データ用生成部2173に Read Block Request を
生成させ、プリンタ2に送信する。そして、当該 Read B
lock Request に対する応答としてコンピュータ1より R
ead Block Response を受け取り、これを印刷データ用
バッファ2163に格納することで、前記ORBが示す格納領
域の印刷データを受信する(ステップS1110)。
【0154】次に、ジョブ実行部2152は、ステップS110
9あるいはステップS1110による印刷データの読み出し処
理が終了すると、汎用生成部2172に、ステップS1107で
取得した Command Block Agent ORB の処理が終了した
ことを示す Write Block Request 生成させ、コンピュ
ータ1に送信する(ステップS1111)。
【0155】次に、ジョブ実行部2152は、図3に示すロ
グアウト処理を実行する(ステップS1112)。
【0156】具体的には、ジョブ実行部2152は、コンピ
ュータ1から Logout ORB の格納領域を示した Write B
lock Request を、汎用バッファ2162を介して受け取
る。そして、 Write Block Request に示された格納領
域から Logout ORB を読み出すべく、汎用生成部2172
に、 Read Block Request を生成させてコンピュータ1
に送信し、その応答である Read Block Response を汎
用バッファ2162を介して受信する。これにより、 Logou
t ORB をコンピュータ1から読み出す。
【0157】ジョブ実行部2512は、 Logout ORB の読み
出し処理が終了すると、汎用生成部2172に、 Logout OR
B の処理が終了したことを示すデータを含んだ Write B
lockRequest を生成させ、コンピュータ1に送信する。
【0158】以上、本発明の一実施形態について説明し
た。
【0159】本実施形態のプリンタ2によれば、バスリ
セットにより実行が中断された Command Block Agent O
RB を通知したコンピュータ1より、SBP-2に定義されて
いるリコネクト処理の要求を受け付け、さらに、前記中
断された Command Block AgentORB と同じ Command Blo
ck Agent ORB を受け付けた場合、ジョブ実行部2152
は、実行状況監視部2151により計測された、当該ORBの
実行が中断された際の ReadBlock Request の送信回数
あるいは Read Block Response の受信回数により、当
該 ORB に記述された格納領域のデータのうち、バスリ
セット前に取得したデータを除く未取得分のデータの格
納領域を特定する。そして、印刷データ用生成部2173に
対し、Read Block Request を、前記特定した未取得分
のデータを読み出すのに必要な数分生成させ、コンピュ
ータ1に送信する。
【0160】また、受信セレクタ2161は、前記 Read Bl
ock Request に応答して、コンピュータ1が送信する Re
ad Block Response に格納される印刷データを、印刷デ
ータ用バッファ2163に格納させる。ジョブ実行部2152
は、バスリセットされた場合でも、直ちに印刷データ用
バッファ2163を初期化するのではなく、バスリセット完
了後SBP-2に定義されているリコネクト期間内に、コン
ピュータ1よりリコネクトされなかった場合に、初期化
するようにしている。
【0161】このようにすることで、プリンタ2は、印
刷データ用バッファ2163に格納する印刷データについ
て、バスリセットにより受信が中断された場合でも、同
じ印刷データを重複させることなく、印刷データの継続
性を確保することができる。したがって、たとえば、イ
ンクジェットプリンタなどのシリアルプリンタでは、1
ライン分(印字ヘッドを1回走査できる分)の印刷デー
タを受信すると、印刷を開始してしまうものでも、バス
リセット後に、同じ印刷データが重複して印刷されるこ
とがなくなる。
【0162】なお、印刷データを格納する Read Block
Response 以外のパケット(たとえば、Logout ORB や C
ommand Block Agent ORB の格納領域を示した Write Bl
ockRequest など)は、受信セレクタ2161を介して汎用
バッファ2162に格納される。ここで、ジョブ実行部2152
は、バスリセットされた場合、汎用バッファ2162につい
ては直ちに初期化するようにしている。このため、たと
えば、Logout ORBや Command Block Agent ORB の格納
領域を示した Write Block Request の受信中にバスリ
セットされた場合に、バスリセットにより受信が中断さ
れた前記 Write Block Request の断片が汎用バッファ2
162に残存していることにより、バスリセット後に、プ
リンタ2が誤った動作をしてしまうような事態が発生す
るのを低減することができる。
【0163】また、本実施形態では、印刷データ用バッ
ファ2163のサイズを、プリンタ2がコンピュータ1から
印刷データを取得するために生成する Read Block Requ
estに記述される、1回のスプリットトランザクションで
転送可能な所定データ量(たとえば2Kバイト)より大き
な値(たとえば4Kバイト)に設定している。このため、
前記Read Block Request に対する応答として、コンピ
ュータ1が送信する Read Block Response の印刷データ
は、一度に印刷データ用バッファ2163に格納される。し
たがって、実行状況監視部2151は、Command Block Agen
t ORB によるたジョブ(印刷データ転送/転送再開処
理)の実行状況を、Read Block Requestの送信回数ある
いは Read Block Response の受信回数を計測すること
で実現でき、管理が容易となる。
【0164】なお、本実施形態では、 Command Block A
gent ORB の実行状況を監視するために、 Command Bloc
k Agent ORB に記述された格納領域の印刷データを読み
出すための Read Block Request の送信回数、および
当該Requestの返答である Read Block Response の受信
回数の両方を計測しているが、いずれか一方を計測する
ものであってもよい。あるいは、前記 Read Block Resp
onse に含まれる印刷データの合計バイト数を計測する
ことで、 Command Block Agent ORB の実行状況を監視
するようにしてもよい。これは、たとえば、印刷データ
用バッファ2163に入力したデータのバイト数を計測する
ことで実現できる。
【0165】また、本実施形態では、IEEE1394に準拠し
たシリアルインターフェースを介して、SBP-2に準拠し
たデータ転送プロトコルにしたがい相手装置とデータ通
信を行うものについて説明したが、本発明はこれに限定
されるものではない。たとえば、DPP(Direct Printer
Protocol)などのその他のデータ転送プロトコルにおい
ても、所定のイベントによりデータ転送が中断される可
能性のあるものについて広く適用することができる。
【0166】さらに、本発明のデータ通信装置は、プリ
ンタのみに適用されるものではなく、スキャナやデジタ
ルビデオカメラなどの様々な接続機器に適用可能であ
る。
【0167】
【発明の効果】以上説明したように、本発明によれば、
同じデータを重複して受信することなく、継続性が確保
されたデータの受信を行うことができる。
【図面の簡単な説明】
【図1】本発明の一実施形態が適用されたプリンタ2を
含むシステムの概略構成図である。
【図2】図1に示すコンピュータ1およびプリンタ2間で
行われる印刷実行シーケンスを示した図である。
【図3】図1に示すコンピュータ1およびプリンタ2間で
行われる印刷データ転送再開実行シーケンスを示した図
である。
【図4】図1に示すコンピュータ1の概略構成図であ
る。
【図5】図4に示すコンピュータ本体部12のハードウエ
ア構成例を示した図である。
【図6】図1に示すプリンタ2の概略構成図である。
【図7】図6に示すプリンタ本体22のハードウエア構成
例を示した図である。
【図8】図2に示す印刷実行シーケンスでのコンピュー
タ1の動作を説明するためのフロー図である。
【図9】図3に示す印刷データ転送再開実行シーケンス
でのコンピュータ1の動作を説明するためのフロー図で
ある。
【図10】図2に示す印刷実行シーケンスでのプリンタ
2の動作を説明するためのフロー図である。
【図11】図3に示す印刷データ転送再開実行シーケン
スでのプリンタ2の動作を説明するためのフロー図であ
る。
【符号の説明】
1…コンピュータ 2…プリンタ 3…スキャナ 4…デジタルビデオカメラ 11,21…データ通信部 12…コンピュータ本体部 22…プリンタ本体部 111,211…PHY処理部 112,212…Link処理部 113,213…パケット処理部 114,214…バスリセット検出部 115,215…ジョブ処理部 116,216…パケット受信部 117,217…パケット生成部 121,221…CPU 122,222…メモリ 123…外部記憶装置 124…読取装置 125…記憶媒体 126…入力装置 127…表示装置 128…インターフェース 223…I/F回路 224…プリンタエンジン 2161…受信セレクタ 2162…汎用バッファ 2163…印刷データ用バッファ 2171…送信セレクタ 2172…汎用生成部 2173…印刷データ用生成部 2151…実行状況監視部 2152…ジョブ実行部

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】IEEE(The Institute of Electrical and
    Electronics Engineers, Inc.)1394に準拠したシリア
    ルインターフェースを介して、SBP-2(Seral Bus Proto
    col 2)に準拠したデータ転送プロトコルにしたがい相
    手装置とパケットによりデータ通信を行うデータ通信装
    置であって、 前記相手装置が前記データ通信装置に転送すべきデータ
    の格納領域を示す先頭アドレスおよび転送データ量を含
    むORB(Operation Request Block)にしたがい、読出し
    開始アドレスと所定の読出しデータ量を示した read bl
    ock request を、前記ORBに示された先頭アドレスおよ
    び転送データ量により特定される格納領域のデータ全て
    を読み出すのに必要な数分生成して、前記相手装置に順
    次送信する送信手段と、 前記相手装置より送られてきたパケットのうち、前記送
    信手段により送信したread block request の応答とし
    て受信した read block response に含まれるデータを
    格納する第1のバッファと、 前記送信手段により送信した read block request の応
    答として受信した read block response 以外のパケッ
    トに含まれるデータを格納する第2のバッファと、 前記相手装置より送られてきたパケットに含まれるデー
    タを前記第1および第2のバッファのいずれに格納すべ
    きか選択するバッファ選択手段と、 前記送信手段にて前記ORBに示された先頭アドレスおよ
    び転送データ量により特定される格納領域のデータを読
    み出すために生成された read block requestの送信回
    数、当該 read block request の応答として前記相手装
    置より受け取った read block response の受信回数、
    および、当該 read block response に含まれる受信デ
    ータの合計バイト数のうちの少なくとも1つを把握する
    ことで、前記相手装置より読み出すべきデータの読出し
    状況を監視する読出し状況監視手段と、 IEEE1394において定義されているバスリセットを検出す
    るバスリセット検出手段と、 前記バスリセット検出手段によりバスリセットが検出さ
    れた場合に、前記第2のバッファについては当該バッフ
    ァに格納されたデータを直ちにクリアし、前記第1のバ
    ッファについては、所定時間内に、当該バスリセットに
    より実行が中断されたORBを通知した前記相手装置よ
    り、SBP-2で定義されているリコネクト処理の要求を受
    け付けなかった場合に、当該バッファに格納されたデー
    タをクリアするリセット手段と、を備え、 前記読出し状況監視手段は、 前記バスリセット検出手段によりバスリセットが検出さ
    れた後、前記所定時間内に、当該バスリセットにより実
    行が中断されたORBを通知した前記相手装置より、前記
    リコネクト処理の要求を受け付けた場合に、当該ORBの
    内容を、当該ORBの実行が中断された際の read block r
    equest の送信回数、 read block response の受信回
    数、および、当該 read block response に含まれる受
    信データの合計バイト数のうちの少なくとも1つととも
    に前記送信手段に通知し、 前記送信手段は、 前記読出し状況監視手段により通知されたORBについ
    て、読出し開始アドレスと所定の読出しデータ量を示し
    た read block request を、当該ORBの実行が中断され
    た際の read block request の送信回数、 read block
    response の受信回数、および、当該 read block respo
    nse に含まれる受信データの合計バイト数のうちの少な
    くとも1つにより特定される、当該ORBに示された先頭
    アドレスおよび転送データ量で特定される格納領域のデ
    ータのうち取得済みのデータを除く未取得分のデータ全
    てを読み出すのに必要な数分生成して、前記相手装置に
    順次送信することを特徴とするデータ通信装置。
  2. 【請求項2】請求項1記載のデータ通信装置であって、 前記送信手段は、生成した read block request を、前
    記第1のバッファの空き容量が当該 read block reques
    t に示されたデータ量より大きくなってから、相手装置
    に送出することを特徴とするデータ通信装置。
  3. 【請求項3】請求項1または2記載のデータ通信装置を
    備えたプリンタであって、 前記第1のバッファは、格納したデータをバイト単位で
    プリンタ本体部に送出することを特徴とするプリンタ。
JP11350461A 1999-03-19 1999-12-09 データ通信装置 Pending JP2000341316A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11350461A JP2000341316A (ja) 1999-03-19 1999-12-09 データ通信装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP7609499 1999-03-19
JP11-76094 1999-03-19
JP11350461A JP2000341316A (ja) 1999-03-19 1999-12-09 データ通信装置

Publications (1)

Publication Number Publication Date
JP2000341316A true JP2000341316A (ja) 2000-12-08

Family

ID=26417244

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11350461A Pending JP2000341316A (ja) 1999-03-19 1999-12-09 データ通信装置

Country Status (1)

Country Link
JP (1) JP2000341316A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7327671B2 (en) 2001-01-26 2008-02-05 Nec Corporation Method and system for controlling communication network and router used in the network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7327671B2 (en) 2001-01-26 2008-02-05 Nec Corporation Method and system for controlling communication network and router used in the network
US7843920B2 (en) 2001-01-26 2010-11-30 Nec Corporation Method and system for controlling communication network and router used in the network
US8446828B2 (en) 2001-01-26 2013-05-21 Nec Corporation Method and system for controlling communication network and router used in the network

Similar Documents

Publication Publication Date Title
US7765290B2 (en) Methods and arrangements to detect a failure in a communication network
JP3387466B2 (ja) データ通信装置
JP3584789B2 (ja) データ転送制御装置及び電子機器
JPH10293662A (ja) 情報処理装置及び方法、情報処理システム、プリンタ及び記憶媒体
JP5281313B2 (ja) 印刷制御装置、印刷制御方法及びプログラム
JPH10229427A (ja) 情報処理装置及び方法
JPH11327815A (ja) 通信制御方法及び装置及び通信システム
JP3598923B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
JP5125430B2 (ja) 情報処理装置及び情報処理方法
US6457079B1 (en) Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with said two communication apparatuses
JP2000341316A (ja) データ通信装置
TW451137B (en) Data transmission control device and electronic machine
JP2001257703A (ja) データ通信装置
KR100325816B1 (ko) 네트워크 프린터의 인쇄방법
JP6136754B2 (ja) 通信制御装置及び画像形成装置
JP3505412B2 (ja) ソケット管理装置およびソケット管理方法
JPH11331220A (ja) データ転送方法
JP3598924B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
JP3951113B2 (ja) 装置間データ通信の制御装置及び方法
US20030212850A1 (en) Log-in device and logged-in device
JP3606145B2 (ja) データ転送制御装置及び電子機器
JP6960302B2 (ja) 通信装置、通信方法、及びプログラム
JP4261992B2 (ja) 情報データの送受信装置及び送受信方法
JP3794480B2 (ja) 装置間データ通信の制御装置及び方法
JP3598922B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器