ASCII сырые символы для управления принтерм из файла .txt

StackOverflow https://stackoverflow.com/questions/2172731

Вопрос

Принтер для метки контролируется, отправляя строку RAW 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); Все выглядит хорошо. Хотя, таким образом, мы не можем видеть добавленные символы управления).

Что может быть решение этой проблемы?

Это было полезно?

Решение

Похоже на принтер лейбла Zebra, у меня было неудовольствие. Первое, что вам нужно исправить, так это то, как вы генерируете файл print.txt. Вам нужно будет написать одну строку для каждого раздела командной строки, которая прекращена с R. Например, ваша командная строка должна быть написана так:

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();

Теперь вы можете использовать readline (), когда вы прочитаете метку из Print.txt. Вам нужно будет прочитать несколько строк, чтобы получить полную метку. Я добавил пустую строку в конце, вы можете использовать это, когда вы прочитаете файл для обнаружения того, что вы получили все строки, которые создают метку. Не забудьте добавить « R» снова, когда вы отправите его на принтер.

Другие советы

Ваш код звонит tr.ReadLine() один раз, но похоже, у вас есть несколько строк в этой строке.

Может быть, что Streamreader читает его в формате Unicode. Кстати, вы читаете только только одну строку ... вам нужно вместо этого строки ... Ваша лучшая ставка будет делать это так:

String PrintStr; Textreader TR = новый Streamreader («print.txt», System.text.encoding.Ascii); printstr = tr.readteend (); tr.close ();

Или прочитайте его как двоичный файл и прочитайте весь кусок в серию байтов, проверка ошибки опущена.

System.io.binkyReader br = new system.io.binaryReader (новый Streamreader («print.txt», system.text.encoding.Ascii)); Байт [] данные = br.readbytes (br.basestream.length); br.lose ();

Редактировать:После REM.Комментарий я подумал, что лучше всего включить этот дополнительный фрагмент здесь ... это следует на предыдущем фрагменте, где переменная data ссылается ...

string sdata = system.text.encoding.Ascii.getString (данные);

Надеюсь, это поможет, наилучшие пожелания, Том.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top