CISDF - правильный ответ, вероятно, неверное значение контрольной суммы, которое вы вычисляете. Я установил анализатор портов на свой RW420, подключенный к USB-порту, и обнаружил, что это работает. На самом деле я отправил несколько изображений PCX на принтер, а затем использовал их в этикетке.
! CISDF
<filename>
<size>
<cksum>
<data>
В конце первых четырех строк есть CRLF. Использование 0000 в качестве контрольной суммы приводит к тому, что принтер игнорирует любую проверку контрольной суммы (я нашел несколько действительно неясных ссылок на это в некоторых руководствах по ZPL, попробовал, и это сработало). ‹filename› — это имя файла 8.3, поскольку оно будет храниться в файловой системе принтера, а ‹size› — это размер файла, длина которого составляет 8 символов и который отформатирован как шестнадцатеричное число. ‹cksum› — это дополнение до двух суммы байтов данных в виде контрольной суммы. ‹данные› — это, конечно же, содержимое файла, который будет храниться на принтере.
Вот фактический код C#, который я использовал для отправки образцов изображений на принтер:
// calculate the checksum for the file
// get the sum of all the bytes in the data stream
UInt16 sum = 0;
for (int i = 0; i < Properties.Resources.cmlogo.Length; i++)
{
sum += Convert.ToUInt16(Properties.Resources.cmlogo[ i]);
}
// compute the two's complement of the checksum
sum = (Uint16)~sum;
sum += 1;
// create a new printer
MP2Bluetooth bt = new MP2Bluetooth();
// connect to the printer
bt.ConnectPrinter("<MAC ADDRESS>", "<PIN>");
// write the header and data to the printer
bt.Write("! CISDF\r\n");
bt.Write("cmlogo.pcx\r\n");
bt.Write(String.Format("{0:X8}\r\n", Properties.Resources.cmlogo.Length));
bt.Write(String.Format("{0:X4}\r\n", sum)); // checksum, 0000 => ignore checksum
bt.Write(Properties.Resources.cmlogo);
// gracefully close our connection and disconnect
bt.Close();
bt.DisconnectPrinter();
MP2Bluetooth — это класс, который мы используем внутри для абстрагирования BT-соединений и коммуникаций — я уверен, что у вас тоже есть свой собственный!
person
Mark Usrey
schedule
30.10.2012