如何使用Delphi将文本命令发送到连接在USB端口的打印机?
我有一台Zebra TLP2844打印机,想要编程与它直接通信.
这是来自android的zpl代码
String zplcode="^XA^LRN^CI0^XZ\n" +
"\n" +
"^XA^CWZ,E:TT0003M_.FNT^FS^XZ\n" +
"^XA\n" +
"\n" +
"^FO10,50^CI28^AZN,50,50^F16^FDZebra Technologies^FS\n" +
"^FO10,150^CI28^AZN,50,100^F16^FDUNICODE^FS\n" +
"^FO020,260^CI28^AZN,50,40^F16^FDSwiss 721 Arabic: ????? ????????? ????? ????????^FS\n" +
"^PQ1\n" +
"^XZ";
mmOutputStream.write(message.getBytes());
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的ZPL代码或方法从Zebra打印机返回错误消息,以确定标签是否未成功打印或是否存在某种错误?
这是我为将打印机作业发送到zebra打印机而构建的一个很好的功能:
public static void SendToPrinter(string zplString, string ipAddress = "127.0.0.1", int port = 1337)
{
// Open connection
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(ipAddress, port);
// Write ZPL String to connection
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(tcpClient.GetStream()))
{
writer.Write(zplString);
writer.Flush();
writer.Close();
}
// Close Connection
tcpClient.Close();
}
Run Code Online (Sandbox Code Playgroud)
zplString中有很多神奇的东西,但基本上它包含了我们都喜欢的ZPL代码.我的方法中的问题是,这似乎是打印机的一种单程票.上面有很多工作,我希望我们能以某种方式修改它以听取响应,如果我以某种方式有适当的ZPL代码来听取响应?
我根本没有看到任何文献或论坛讨论如何从斑马打印机收到回复并确定它是否成功?
理想情况下,如果打印机以某种方式成功或失败,我想要一种方法来理解使用包含在C#和.NET中的ZPL的打印机.否则,我可能必须手动查询用户"是否打印?".这不是理想的,但是我的手册中还没有找到任何表明使用ZPL检测打印作业有错误的简单方法?
感谢您的耐心,帮助以及阅读此问题.
我正在开发一个需要打印FEDEX运输标签的.NET WinForms应用程序.作为FedEx api的一部分,我可以获得打印机的原始标签数据.
我只是不知道如何通过.NET将数据发送到打印机(我正在使用C#).为了清楚起见,数据已经预先格式化为ZPL(Zebra打印机语言)我只需要将其发送到打印机而不会将其弄糟.
我的意思是开始使用zebra RW420打印机开发一个简单的Android应用程序来打印标签.他们有Android的SDK,但我无法弄清楚从哪里开始.
我使用单个屏幕调用应用程序,它会询问标签或采购订单,我们要打印多少份副本以及打印按钮.有人可以帮助我开始.任何帮助将不胜感激.
我将如何搜索打印机,SDK会为我做吗?或者我必须使用Androids BluetoothAdapter类...关于标签格式我是否必须自己创建或者我可以使用SDK中的现有文件?
我可以设置打印机打印多份?
我在 serialPort.Open() 行上收到“CreateFile Failed: 161”:
. . .
MessageBox.Show(string.Format("Made it into PrintUtils.PrintBarcode()"));
using (SerialPort serialPort = new SerialPort())
{
MessageBox.Show("Made it into using statement in PrintUtils.PrintBarcode()");
serialPort.BaudRate = 19200;
serialPort.Handshake = Handshake.XOnXOff;
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.PortName = "COM1"; // Is this what it wants?
MessageBox.Show("Made it beyond the protocol assignments in PrintUtils.PrintBarcode()");
serialPort.Open(); // <-- This causes "CreateFile Failed: 161"
MessageBox.Show("Opened the serial port in PrintUtils.PrintBarcode()");
Thread.Sleep(2500); // I don't know why this is …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我应该能够在蓝牙打印机 Zebra iMZ320 上进行打印,但我在使用 UTF-8 特定字符(\xc3\x86、\xc3\x98 或 \xc3\x85)时遇到一些问题。
\n\n我按如下方式连接到设备:
\n\n BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddr);\n Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { Integer.TYPE });\n bSocket = (BluetoothSocket)m.invoke(device, new Object[] { Integer.valueOf(1) });\n bSocket.connect();\n outStream = bSocket.getOutputStream();\n inStream = bSocket.getInputStream();\nRun Code Online (Sandbox Code Playgroud)\n\n套接字打开后,我将在 CPCL 中发送数据:
\n\n String cpclData = "! U1 SETLP 5 2 24 \\r\\n"+text+"\\r\\n";\n outStream.write(cpclData.getBytes());\n outStream.flush();\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我尝试打印上述字符时,它会写一些异常字符。
\n\n我联系了 Zebra,他们的一位工程师写道,我应该尝试以下操作:
\n\n! 0 200 200 80 1 \nIN-MILLIMETERS \nJOURNAL \nCENTER \nCOUNTRY NORWAY\nTEXT 4 0 0 8 COUNTRY IS NORWAY …Run Code Online (Sandbox Code Playgroud) 我正在使用zebraGk420d打印机.我正在使用垂直条形码标签.如何垂直打印文本和条形码.我的zpl代码是这样的
$barcode_ZPL_code="^XA
^FO 150,50^AD,40^FH^FDSALABED_20CARGO^FS
^FO80,100^AD^BY2
^BCN,100,Y,N,N
^MD10
^FDLTX81316-1(1)-APP^FS
^FO1,250^A0N,20,20^FH^FDCOURIER_20TYPE_3ACHEDDI_20JAGAN_20AIPORT_20GUYANA_20OWN_20CLEARING_20TEST^FS
^FO1,280^A0N,20,20^FH^FDDESTINATION_3ASALABED_202CARGO_20PLOT_20710_20BLOCK_2012_20KISENYI_20ROAD_2E_2E_2E^FS
^FO1,310^A0N,20,20^FH^FDHEAD_20OFFICE_3AUNIT_204A_20ORBITAL_20BUSINESS_20PARK_205_20ARGON_20ROAD^FS
^FO106,340^A0N,20,20^FH^FDEDMONTON_20LONDON_20N18_203BW_20EMAIL_3AINFO_40SALABED_2ECO_2EUK^FS
^FO106,370^A0N,20,20^FH^FDTEL_3A_2B44_28020_29_208884_204060_20WEBSITE_3AWWW_2ESALABED_2ECO_2EUK^FS
^XZ";
Run Code Online (Sandbox Code Playgroud)
此代码以横向格式打印.谢谢提前.
我需要使用C#在斑马标签打印机上打印标签和条形码。我以前从未使用过它们,但是阅读并试图找出一种方法来做到这一点。而且我从http://support.microsoft.com/kb/322091看到了这段代码,但是没有用。从我的试用中,我可以将数据发送到打印机,但是它没有响应并无法打印。我正在使用按钮将命令发送到打印机,就像kb文章中一样。
private void ConnectButton_Click(object sender, EventArgs e)
{
// Allow the user to select a printer.
string s = "B26,26,0,UA0,2,2,152,B,\"{0}\"";
PrintDialog pd = new PrintDialog();
pd.PrinterSettings = new PrinterSettings();
if (DialogResult.OK == pd.ShowDialog(this))
{
// Send a printer-specific to the printer.
RawPrintrHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName,s);
MessageBox.Show("Data sent to printer.");
}
}
Run Code Online (Sandbox Code Playgroud) 我使用 Zebra Designer 创建标签。但是我有一个问题来居中我的元素。
事实上,当我用 Zebra Designer 创建一个文本框时,它有一个固定的长度,当我替换里面的文本时(例如通过一个变量 Php 给我价格)==> 如果这个文本大于我定义的这个不聚焦。
所以我想创建一个文本框的标签宽度以及文本将在内部居中的位置,无论其长度如何
CT~~CD,~CC^~CT~
^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR5,5~SD15^JUS^LRN^CI0^XZ
^XA
^FT256,576^XG014.GRF,1,1^FS
^FT256,576^XG015.GRF,1,1^FS
^BY3,3,52^FT127,484^BCB,,Y,N
^FD>:$customer_key^FS
^FT56,429^A0B,28,28^FH\^FDTEXT_TO_REPLACE^FS
^FT197,401^A0B,28,28^FH\^FDTEXT_TO_REPLACE^FS
^BY3,3,57^FT781,434^BCB,,Y,N
^FO256,23^GB0,559,1^FS
^PQ1,0,1,Y^XZ
^XA^ID000.GRF^FS^XZ
^XA^ID015.GRF^FS^XZ
Run Code Online (Sandbox Code Playgroud)