IR(4) — NEWS-OS Programmer’s Manual
名称
ir − NEWS イメージリーダインターフェース
形式
ir0 at iop addr xxx intr 110 ( xxx は機種依存 )
/dev/ir
#include <newsiop/imagereader.h>
解説
このインターフェースは、NEWS のイメージリーダ (NWP-534 + NWB-240A/241A/244 または NWP-540 + NWB-242/243) に対する 制御を行うためのものです。
イメージリーダは数々のインテリジェント機能を備えており、 このインターフェースを用いてそれらを効果的に 活用することができるようになっています。
制御は一般的な ioctl システムコールによって行うことができ、 C 言語から簡単に利用可能となっています。
(NWP-540 に対しては、イメージボードライブラリが用意されており、 NWP-540 固有の機能を使用することが可能です。)
NWS-5000/5900 シリーズの場合、NWP-534 はサポートされません。 ここに説明する ioctl は NWB-5101 + NWP-540 の組合せでのみ 動作します。NWB-5101 については ibir(4) を参照してください。
データ形式
以下に、ここで使用する構造体のデータ形式を説明します。
struct ir_window {
intiw_x; /∗ X 座標 ∗/
intiw_y; /∗ Y 座標 ∗/
intiw_dx; /∗ 幅 ∗/
intiw_dy; /∗ 高さ ∗/
};
struct ir_xy {
intiw_x; /∗ X 方向の倍率/データ量 ∗/
intiw_y; /∗ Y 方向の倍率/データ量 ∗/
};
struct ir_seg {
intis_in; /∗ セグメント内のモードなど ∗/
intis_out; /∗ セグメント外のモードなど ∗/
};
ir_window は、領域のデータを格納するためのデータ形式です。
ir_xy は、倍率のデータや画像データ量などのデータを格納するためのデータ形式です。
ir_seg は、セグメントの内部と外部のモードなどを格納するためのデータ形式です。
IOCTL
IRIOCINIT イニシャライズ指示
イメージリーダのイニシャライズを指示します。 ioctl(fildes,IRIOCINIT);
IRIOCHOME ホームポジション指示
イメージリーダの光学系をホームポジションに戻すとき指示します。 (NWP-540 の場合は何も実行しません。) ioctl(fildes,IRIOCHOME);
IRIOCLAMP 光源点灯指示
イメージリーダの光源の点灯、または消灯を指示します。 (NWP-540 の場合は何も実行しません。)
#define LAMP_OFF 0 /∗ 消灯 ∗/
#define LAMP_ON 1 /∗ 点灯 ∗/
int lamp;
ioctl(fildes,IRIOCLAMP,&lamp);
IRIOCRESOLUTION
解像度指示
解像度を指定します。 (NWP-540 では次の 4 つの解像度のほかに 400dpi、240dpi をサポートします。)
#define DPI_300 300 /∗ 300 dpi ∗ /
#define DPI_200 200 /∗ 200 dpi ∗ /
#define DPI_150 150 /∗ 150 dpi ∗ /
#define DPI_75 75 /∗ 75 dpi ∗ /
int resolution;
ioctl(fildes,IRIOCRESOLUTION,&resolution);
IRIOCMIRROR 鏡像指示
鏡像の指示、または解除を行います。
#define NORMAL 0 /∗ 正像 ∗/
#define MIRROR 1 /∗ 鏡像 ∗/
int mirror;
ioctl(fildes,IRIOCMIRROR,&mirror)
IRIOCOUTMODE 出力指示
出力モード (画像読み取りモード) を指定します。 (NWP-540 の場合、 ディザパターン 1 または 2 が指定された場合は 8×8 フラット ベッドリード用パターンに設定され、ディザパターン 3、4、5、6 が指定された場合は 4×4 フラットベッドリード用 パターンに設定されます。 ディザパターン 7 が指定された場合はエラーになります。)
#define BINARY 0 /∗ 2 値 ∗ /
#define DIZER1 1 /∗ ディザパターン No.1 ∗ /
#define DIZER2 2 /∗ ディザパターン No.2 ∗ /
#define DIZER3 3 /∗ ディザパターン No.3 ∗ /
#define DIZER4 4 /∗ ディザパターン No.4 ∗ /
#define DIZER5 5 /∗ ディザパターン No.5 ∗ /
#define DIZER6 6 /∗ ディザパターン No.6 ∗ /
#define DIZER7 7 /∗ ディザパターン No.7 ∗ /
#define MULTI 9 /∗ 多値出力 ∗ /
int outmode;
ioctl(fildes,IRIOCOUTMODE,&outmode);
IRIOCAREAMODE
像域分離出力指示
像域分離出力時のセグメント内外の出力モードを指定します。
#define BINARY 0 /∗ 2 値 ∗ /
#define DIZER1 1 /∗ ディザパターン No.1 ∗ /
#define DIZER2 2 /∗ ディザパターン No.2 ∗ /
#define DIZER3 3 /∗ ディザパターン No.3 ∗ /
#define DIZER4 4 /∗ ディザパターン No.4 ∗ /
#define DIZER5 5 /∗ ディザパターン No.5 ∗ /
#define DIZER6 6 /∗ ディザパターン No.6 ∗ /
#define DIZER7 7 /∗ ディザパターン No.7 ∗ /
#define WHITE 11 /∗ 白 ∗ /
struct ir_seg seg_outmode;
ioctl(fildes,IRIOCAREAMODE,&seg_outmode)
IRIOCLIGHT 濃度指示
画像信号の濃度を指定します。
int light;
ioctl(fildes,IRIOCLIGHT,&light);
IRIOCNOAE AE (自動濃度調整) 指示
AE (自動濃度調整) の指定、または解除を行います。
#define AE 0 /∗ AEの指定 ∗/
#define NO_AE 1 /∗ AEの解除 ∗/
int no_ae;
ioctl(fildes,IRIOCNOAE,&no_ae);
IRIOCREVERSE ネガ/ポジ指示
ネガ/ポジを指定します。
#define POSI 0 /∗ ポジ ∗/
#define NEGA 1 /∗ ネガ ∗/
int reverse;
ioctl(fildes,IRIOCREVERSE,&reverse);
IRIOCAREAREVERSE
像域分離ネガ/ポジ指示
像域分離出力時のセグメント内外のネガ/ポジを指定します。
#define POSI 0 /∗ ポジ ∗/
#define NEGA 1 /∗ ネガ ∗/
struct ir_seg seg_reverse;
ioctl(fildes,IRIOCAREAREVERSE,&seg_reverse);
IRIOCSCALE 倍率指示
読み取り倍率を指定します。
int scale;
ioctl(fildes,IRIOCSCALE,&scale);
IRIOCXYSCALE 独立変倍指示
主走査と副走査で別々の倍率を指定します。
struct ir_xy xy scale;
ioctl(fildes,IRIOCXYSCALE,&xy_scale);
IRIOCAREA 領域指示
読み取り領域を指定します。 (NWP-540 でサポートされていない用紙サイズが指定されると エラーになります。)
#define WINDOW 0
#define A4 1
#define A5 2
#define B5 3
#define B6 4
#define ENVELOPE 5
#define POSTCARD 6
#define A6 7
#define MINI 10
#define LETTER 11
#define NOT_SPECIFIED 99
int area;
ioctl(fildes,IRIOCAREA,&area);
IRIOCWINDOW ウィンドウ領域指示
ウィンドウ読み取りモードの領域を指定します。
struct ir_window window;
ioctl(fildes,IRIOCWINDOW,&window);
IRIOCSEGMENT セグメント領域指示
セグメントの領域を指定します。
struct ir_window segment;
ioctl(fildes,IRIOCSEGMENT,&segment);
IRIOCREAD スキャニング指示コマンド
読み取りの実行を指示します。
int area;
ioctl(fildes,IRIOCREAD,&area);
IRIOCAREAREAD
像域分離スキャニング指示コマンド
像域分離読み取りの実行を指示します。
int area;
ioctl(fildes,IRIOCAREAREAD,&area);
IRIOCRMODE モードレポート
レポート内容 No.0 (モードレポート) を要求します。 (NWP-540 の場合は im_motor、im_lightについては常に 0 を返します。)
struct ir_mode {
intim_resolution;
intim_mirror;
intim_motor;
intim_light;
struct ir_seg im_reverse;
};
struct ir_mode mode;
ioctl(fildes,IRIOCRMODE,&mode);
IRIOCRSTATUS ステータスレポート
レポート内容 No.1 (ステータスレポート) を要求します。 (NWP-540 の場合、紙詰まりの時には is_operator_call に 3 を返します。 そのほかは NWP-534 と同じです。)
struct ir_status {
intis_error;
intis_timeout;
intis_operator_call;
intis_service_call;
};
struct ir_status status;
ioctl(fildes,IRIOCRSTATUS,&status);
IRIOCRPOSITION
原点からのポジションレポート
レポート内容 No.2 (原点からのポジションレポート) を要求します。 (NWP-540 の場合は光源の位置を返します。)
int position;
ioctl(fildes,IRIOCRPOSITION,&position);
IRIOCRWINDOW ウィンドウレポート
レポート内容 No.3 (ウィンドウレポート) を要求します。
struct ir_window window;
ioctl(fildes,IRIOCRWINDOW,&window);
IRIOCRLIGHT 濃度レポート
レポート内容 No.4 (濃度レポート) を要求します。
struct ir_light {
intil_ae;
intil_light;
};
struct ir_light light;
ioctl(fildes,IRIOCRLIGHT,&light);
IRIOCROUTMODE
出力モードレポート
レポート内容 No.5 (出力モードレポート) を要求します。
struct ir_seg outmode;
ioctl(fildes,IRIOCROUTMODE,&outmode);
IRIOCRSCALE 倍率レポート
レポート内容 No.6 (倍率レポート) を要求します。
struct ir_xy scale;
ioctl(fildes,IRIOCRSCALE,&scale);
IRIOCRDATA 転送データ数レポート
レポート内容 No.8 (転送データ数レポート) を要求します。 amount.x は X 方向のバイト数、amount.y は Y 方向のドット数です。 イメージデータの読み取りの際にイメージリーダから 出力されるバイト数は NWP-534 と NWP-540 とで 異なる場合があります。 そのため、両方のイメージリーダに対応するアプリケーションプログラムは この ioctl システムコールにより出力画素数を求める必要があります。
struct ir_xy amount;
ioctl(fildes,IRIOCRDATA,&amount);
IRIOCRSELECT レポート内容選択
モードレポートおよび出力モードレポート時の内容を規定します。 (NWP-540 の場合、0 を返します。)
int select;
ioctl(fildes,IRIOCRSELECT,&select);
関連ファイル
/dev/ir イメージリーダデバイスファイル
関連事項
イメージリーダ (NWP-534) 取扱説明書
「NEWS-OS Release 4.0 I/O デバイスプログラミングガイド/イメージリーダ」
「NEWS-OS Release 4.0 プログラマーズガイド/イメージボードライブラリ」
NEWS-OSRelease 4.2.1R