Пример кода печати Zebra для языка CPCL (отличный от TEST)
String cpclConfigLabel = "! 0 200 200 406 1\n" + "ON-FEED IGNORE\n" + "BOX 20 20 10 10 8\n" + "T 0 6 137 177 TEST\n" + "PRINT\n";
Эти строки идут с тестовым демонстрационным кодом Zebra, я не очень хорош с языками CPCL и соответствующими командами, например
! U1 JOURNAL
! U1 SETLP 5 2 46
AURORA’S FABRIC SHOP
! U1 SETLP 5 0 24
123 Castle Drive, Kingston, RI 02881
(401) 555-4CUT
! U1 SETLP 7 0 24
4:20 PM Thursday, June 04, 2020 Store: 142
Order Number: #59285691
Status: ! U1 SETSP 10
INCOMPLETE ! U1 SETSP 0
Item Description Quant. Price Subtotal Tax
1211 45” Buckram 5 yds @ $3.42/yd $17.10 Y
Z121 60” Blue Silk 10 yds@ $15.00/yd $150.00 N
Z829 60” Muslin 20 yds@ $1.00/yd $20.00 Y
SUBTOTAL: $187.10
RHODE ISLAND SALES TAX 7.00%: $2.60
TOTAL: $189.70
! U1 SETLP 7 1 48
PLEASE BRING THIS RECEIPT TO THE CASHIER
WITH THE REST OF YOUR PURCHASES.
! U1 CENTER
! U1 B 128 1 2 100 0 0 59285691 ST 187.10 T 2.60 ,
Как я могу получить байты от этой команды печати и так, так что у кого-нибудь может быть несколько советов, как сделать команды печати квитанции, используя CPCL?
Ценю ваши усилия.
1 ответ
У меня есть хороший документ, который вы можете просмотреть, в нем так много примеров, пожалуйста, найдите документ здесь 1, и, пожалуйста, найдите этот пример, который я использовал для печати квитанции:
! 0 200 200 600 1
PCX 0 1 !<B.PCX
T 0 4 1 125 Paid: 5 $
T 5 0 125 160 Date: 12/12/2012
T 5 0 125 179 Time: 12:12
T 5 0 125 217 User: AAA
T 5 0 125 236 Details
T 5 0 125 255 Card Price: 2
T 5 0 125 274 Balance: 3
T 5 0 25 293 Thank you
T 5 0 40 312 www.aa.aa.aa
FORM
PRINT
эта команда PCX 0 1 !<B.PCX
является печать логотипа, загруженного на принтер. остальные текстовые команды.
Надеюсь это поможет.
Уже слишком поздно, но я хочу ответить на вопрос. Может кому это было нужно.
Вот документация по языку программирования CPCL.
проверить это.
Вы готовите квитанцию, а затем должны связаться с принтером.
Это пример Xamarin.Android:
public override Task<int> Print(byte[] command)
{
return Task.Run(async () =>
{
if (string.IsNullOrEmpty(DeviceName))
return -1;
using BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
BluetoothDevice device = (from bd in bluetoothAdapter?.BondedDevices
where bd?.Name == DeviceName
select bd).FirstOrDefault();
if (device == null)
throw new Exceptions.PrinterException("Device Not Found!", new NullReferenceException());
try
{
using BluetoothSocket bluetoothSocket = device.CreateRfcommSocketToServiceRecord(
//UUID.FromString(Guid.NewGuid().ToString())
UUID.FromString("00001101-0000-1000-8000-00805f9b34fb")
);
if (!bluetoothSocket.IsConnected)
await bluetoothSocket.ConnectAsync();
bluetoothSocket.OutputStream.Flush();
await bluetoothSocket.OutputStream.WriteAsync(command, 0, command.Length);
bluetoothSocket.OutputStream.Flush();
bluetoothSocket.Close();
return 1;
}
catch (Exception exp)
{
throw new Exceptions.PrinterException("An error occurred.", exp);
}
});
}
С помощью:
string receipt = Encoding.ASCII.GetBytes(YourReceiptAsString);
await Print(receipt);
Я надеюсь, что это кому-то поможет. Береги себя!