[printing-japan] Bi-di資料

naka @ E-D.co.jp naka @ E-D.co.jp
2003年 12月 8日 (月) 22:23:19 PST


中村です。

>CUPS 本体に手を入れるということはないのですよね?
>
>すみませんが、Bi-Di からのプリンタステータスが、*具体的*に
>はどのような経路/*手段*によって、操作者の目に届くことにな
>るのか、解説して頂けませんでしょうか?

岩田さんの質問は、Backend TypeX と、Printer Status Utility Type A の間の
情報の渡し方についてと思いますので、分かる範囲でお答えします。

1)Backend TypeX

  CUPSに渡す情報はIPPの属性として得られる、
    printer-state-reasons
    printer-state-message
  という2つの情報があります。

  Backend TypeXでは、printer-state-reasonsについては、次の様にして、
  標準Errorを通して、CUPS側に通知します。

    fprintf(stderr,"STATE: \n");	/* CUPS側のmessage配列のクリア */
    fprintf(stderr,"STATE: +opbidi-ink-c-70-report\n");
    fprintf(stderr,"STATE: +opbidi-ink-m-30-low-warning\n");
    fprintf(stderr,"STATE: +opbidi-ink-y-30-low-warning\n");
    fprintf(stderr,"STATE: +opbidi-ink-k-0-empty\n");
    fprintf(stderr,"STATE: +media-jam\n");

  printer-state-reasonsは、CUPS1.1では、16個までのメッセージ配列として
  上のメッセージを格納しています。

  また、printer-state-messageについては、TAB区切り文字を次の様にして、

    fprintf(stderr,"INFO: マゼンタのインクが少なくなっています。\tイエローのインクが少なくなっています。\tマゼンタのインクがなくなりました。\t用紙がつまりました。\n");

    ※上の文字のcharsetは、UTF-8です。

  CUPS側に送ります。

2)CUPSは、印刷JOBを起動した後、定期的に stderr からのメッセージが来ているか
  を調べ、メッセージを受けたら、そのプリンターの情報を更新します。

3)PSTypeAは、起動時に指定されたプリンタの情報を CUPS から得ます。この時、
  IPPの属性として、
  
    printer-state-reasons
    printer-state-message

  の情報が受けられますので、

  ・printer-state-reasons属性からは、インクレベルの情報を取り出し、それを
    GUI画面に表示させる。

  ・printer-state-messageは、TAB区切り文字を改行に変えて、GUI画面に表示
    する。

  という処理を定期的に行ないます(3秒毎程度)。

4)printer-state-messageは、backendや他のfilterで、上書きされる可能性が
  ありますが、printer-state-reasonsは、保持される可能性が高いです。
  ※ここは、未確認です!


以上、間違っていたら、訂正をお願いします。

--
Hisao Nakamura <naka @ E-D.co.jp,naka @ pro.or.jp>




More information about the Printing-japan mailing list