.txtファイルからプリンタを制御するために、ASCII生のシンボル
-
24-09-2019 - |
質問
はラベルプリンタは、(ラベルをフォーマット)生ASCII文字の文字列を送信することによって制御されます。このように:
string s = "\x02L\r" + "D11\r" + "ySWR\r" + "421100001100096" + date + "\r" + "421100002150096" + time + "\r" + "421100001200160" + price + "\r" + "E\r";
RawPrinterHelper.SendStringToPrinter(printerName, s);
このハードコードされたバリアントはうまく機能します。
今、私は.txtファイルに制御文字列を入れて、実行時にそれを読んでもらいたいです。このように:
string printstr;
TextReader tr = new StreamReader("print.txt");
printstr = tr.ReadLine();
tr.Close();
しかし、この場合、プリンタでは何も出力しません。
StreamReader
は、この文字列に何か他のものを追加していること、らしいです
(私はMessageBox.Show(printstr);
のすべてに読み取り、文字列を入れる場合は、[OK]を探します。しかし、我々は制御文字が追加さ見ることができないこの方法)。
何この問題の解決策になるだろうか?
解決
ゼブララベルプリンタのように見えますが、私が不満を持っていました。あなたは修正する必要がある最初の事はあなたがprint.txtファイルを生成する方法です。あなたは、r \で終了のコマンド文字列のセクションごとに1行を記述する必要があります。たとえば、あなたのコマンド文字列は次のように記述する必要があります:
printFile.WriteLine("\x02L");
printFile.WriteLine("D11");
printFile.WriteLine("ySWR");
printFile.WriteLine("421100001100096" + date);
printFile.WriteLine("421100002150096" + time);
printFile.WriteLine("421100001200160" + price);
printFile.WriteLine("E");
printFile.WriteLine();
あなたはprint.txtからラベルを読んだときにこれは、ReadLineメソッド()を使用することができます。あなたは完全なラベルを取得するために複数の行を読む必要があります。私が最後に空白行を追加して、あなたは、ファイルを読み込むときにラベルを作成するすべての行を得たことを検出することに使用することができます。あなたは、プリンタに送信したときに再び追加する「\ rは」忘れないでください。
他のヒント
あなたのコードの呼び出しは一度tr.ReadLine()
ていますが、その文字列内に複数のラインを持っているように見えます。
これは、StreamReaderをはUnicode形式でそれを読んでいる可能性があります。ところで、あなただけのただ1行に読んでいる...あなたが代わりに行を反復処理する必要があります...あなたの最善の策は、このようにそれを行うには、次のようになります。
string printstr; TextReader tr = new StreamReader("print.txt",System.Text.Encoding.ASCII); printstr = tr.ReadToEnd(); tr.Close();
またはバイナリファイルとして、それを読んで、一連のバイトに全体のチャンクを読み込む代わりに、エラーチェックは省略されます。
System.IO.BinaryReader br = new System.IO.BinaryReader(new StreamReader("print.txt", System.Text.Encoding.ASCII)); byte[] data = br.ReadBytes(br.BaseStream.Length); br.Close();
の編集を
のREM のの後のコメント私はここで、この追加のスニペットを含めるためにそれを最善を考えて...これは変数data
が参照される前のスニペット... からに次のP>
string sData = System.Text.Encoding.ASCII.GetString(data);
希望このことができます、 宜しくお願いします、 トムます。