Intermec DPプリンターで進行中の印刷ジョブをキャンセルする方法
質問
BarTenderは、Direct Protocol/Fingerprintで動作しているIntermecプリンターの印刷ジョブをキャンセルできますか?
対象
Intermec DPプリンター
Seagull製ドライバー バージョン2018.1以降
回答
BarTenderの「進行中の印刷ジョブをキャンセル」オプションはIntermecプリンターでは機能しません。これは、以前のジョブを実際にキャンセルするコマンドがデフォルトでサポートされていないためです。
Intermecプリンターで印刷する際、印刷ジョブの開始時にSYSVAR(48)の値が0に設定されます。これにより、プリンターはデータ受信時(標準入力)にダイレクトコマンドをスキャンしなくなります。これは、バイナリ画像データには理論上どんな文字も含まれる可能性があり、プリンターコマンド(例: "^s")も含まれるため、印刷ジョブ中は「ダイレクトコマンドのスキャン」プロパティが無効化されるためです。
ダイレクトコマンドの有効化
Seagull製ドライバーのバージョン2018.1以降では、SYSVAR(48)プロパティを1に設定するチェックボックスが追加されており、これによりジョブキャンセル用の^aコマンドなど追加コマンドの使用が可能になります。
この設定は、ドライバーのプロパティ画面で「ツール」タブを選択し、「構成 > プリンターオプション」メニューから行えます:
有効にするオプションは「ダイレクトコマンドスキャンを有効にする」です:
ドキュメントでコマンドを受け付ける設定
このオプションを有効にすると、BarTenderが出力するデータに^aコマンドを追加できるようになります。これはプリンターコード修正アクション(「ファイル > BarTenderドキュメントオプション...」ダイアログの「全般」タブからアクセス)で設定します。
アクションでは、SYSVAR(48) = 1 を検索し、SYSVAR(48) = 1^a に置き換えるようにします。