2

ラベル プリンターは、未加工の 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);すべてに配置すると、問題ないように見えます。ただし、この方法では、制御文字が追加されているのを確認できません)。

この問題の解決策は何でしょうか?

4

3 に答える 3

3

コードはtr.ReadLine()1 回呼び出しますが、その文字列には複数の行があるようです。

于 2010-01-31T18:20:57.490 に答える
1

StreamReader が Unicode 形式で読み取っている可能性があります。ところで、あなたはたった1行だけを読んでいます...代わりに行を繰り返す必要があります...あなたの最善の策は、このようにすることです:

文字列 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が参照されている前のスニペットから続いています...

文字列 sData = System.Text.Encoding.ASCII.GetString(データ);

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2010-01-31T18:21:40.517 に答える