[printing-japan] Bi-di資料

Masaki IWATA iwata @ axe-inc.co.jp
2003年 12月 8日 (月) 23:18:43 PST


アックスの岩田です。

> 中村です。

ありがとうございます。
# すっきりしました。

やはり、標準エラー出力のメッセージを使うのですね。

> 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側に送ります。

IPP Backend のソースを見てみると、Printer オブジェクトの
printer-state-reasons 属性から、これらのメッセージを生成
していますね。(丸投げではなく、1つ1つチェックしています)

opbidi- で始まるキーワードは、IPP の仕様にありませんので、
Bi-Di 用に拡張されたものだと思うのですが、これらの一覧は
どこにあるのでしょうか?

> 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は、保持される可能性が高いです。
>   ※ここは、未確認です!

Type A のプリンタステータスユーティリティは、受動的に参照
するのみということですね。

-- 
IWATA Masaki
 岩田 正樹





More information about the Printing-japan mailing list