アプリで必要に応じて動作させるには、Zebra QLn220 ベルト プリンターにいくつかの変数を設定する必要があります。以下の最初のコマンド (keepPrinterOn) が機能するようになりました。
const string quote = "\"";
string keepPrinterOn = string.Format("! U1 setvar {0}power.dtr_power_off{0} {0}off{0}\r\n", quote);
string advanceToBlackBar = string.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}\r\n", quote);
string advanceToGap = string.Format("! U1 setvar {0}media.sense_mode{0} {0}gap{0}\r\n", quote);
PrintUtils.SendCommandToPrinter(keepPrinterOn);
if (radbtnBar.Checked)
{
//MessageBox.Show("setting label type to bar");
AppSettings.WriteSettingsVal("labelType", "bar");
PrintUtils.SendCommandToPrinter(advanceToBlackBar);
}
else if (radbtnGap.Checked)
{
//MessageBox.Show("setting label type to gap"); <= This is reached, although printer is not being changed to gap mode at any rate
AppSettings.WriteSettingsVal("labelType", "gap");
PrintUtils.SendCommandToPrinter(advanceToGap);
}
ただし、「media.sense_mode」変数をバーからギャップに変更しようとすると失敗します。rdbtnGap がチェックされ、その (最後に示されている) コードの条件付きブロックが入力された場合でも、「media.sense_mode」var の値は「bar」から「gap」に切り替わっていません (経験的に見られるように、印刷しようとするとギャップ(無地)ラベル、これは機能しません(ラベルを印刷した後、無数のラベルを吐き出します)、次のコマンドを実行します。
! U1 getvar "media.sense_mode"
...ゼブラ セットアップ ユーティリティで (「ギャップ」を選択した後でも「バー」を返します)。
ここで説明したように、crlfs (\r\n) をコマンドに追加するのを怠っていたため、これらのコマンドで以前に問題が発生していました。いくつかの設定を更新するコマンド?、しかし今では、上記のコマンドを送信した直後にラベルが印刷されます (「バー」が選択され、バー (背面の黒い帯) ラベルがベルト プリンターにロードされている場合)。
ここで間違っている可能性があるものから、頭または尾 (バーまたはギャップ) を作成できる人はいますか?
アップデート
バッテリーの残量が少ないと、プリンターに送信されたコマンドが「実行」されない可能性があるのではないかと考えています。QLn220 で「バッテリーが故障しました」というメッセージが表示されました (現在再充電中)。それができるようになったら、既存のコードが (充電されたバッテリーで) 動作するかどうかをテストします。そうでない場合は、以下の回答でbannoの代替コマンドを試します.
更新 2
したがって、必要に応じて、このコード (2 番目の 2 つ) を試す準備ができました (現在、プリンターは停止しており、テストすることさえできません)。
string advanceToBlackBar = string.Format("! U1 setvar {0}media.sense_mode{0} {0}bar{0}\r\n", quote);
string advanceToGap = string.Format("! U1 setvar {0}media.sense_mode{0} {0}gap{0}\r\n", quote);
// Alternates added 7/29/2014 in case need to attempt them (see https://stackoverflow.com/questions/24966070/why-would-the-zebra-qln220s-media-sense-mode-var-not-be-set-to-gap-with-this-co)
string advanceToBlackBarAlternate = string.Format("! U1 setvar {0}ezpl.media_type{0} {0}mark{0}\r\n", quote);
string advanceToGapAlternate = string.Format("! U1 setvar {0}ezpl.media_type{0} {0}web{0}\r\n\r\n", quote);
2 番目のペアは最初のペアよりも好ましいですか、それとも単に同義語ですか / 他のペアが機能しない場合に試すものですか?