是否有人建议移动打印机能够使用良好的SDK打印收据,以便与开发的iOS应用程序无线接口?打印机应该很小,应该使用可充电电池进行现场使用.我不能使用wifi,因为并不总是可靠的接入点(客户端)可用,所以我认为使用蓝牙,但当然任何建议都是受欢迎的!
仅供参考我已经检查过Zebra打印机SDK for iOS,但它似乎只能使用TCP/IP地址进行打印,这意味着(据我所知)我应该使用wifi.在我的情况下,应用程序应该在与蜂窝网络连接的iPad的现场使用.在iPad中没有热点,并且并不总是有一个可用的WiFi接入点将iPad和打印机连接到同一网络以使用TCP/IP地址.这就是我猜测最后一次机会应该是蓝牙的原因.
我正在开发一个项目,我们需要使用Zebra打印机来处理条形码标签.我们正在使用C#,我们在打印方面做得很好,将原始ZPL字符串发送到打印机(使用winspool.drv).
但是,我们还需要从打印机读取,并没有运气.
我们需要从打印机获取状态,这是ZPL命令"~HS"的输出,因此我们可以判断内存中有多少标签等待打印.winspool.drv中的EnumJobs()只在Windows假脱机上有作业,一旦它们被发送到打印机,它们就会从该列表中消失.但这并不意味着标签已被打印,因为打印机有一个剥离传感器,一次只打印一个标签,我们显然对将批量标签发送到打印机感兴趣.
我尝试了类似的东西(使用winspool.drv调用):
OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero);
WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); // send the string "~HS"
ReadPrinter(hPrinter, data, buff, out pcRead);
Run Code Online (Sandbox Code Playgroud)
但我在ReadPrinter调用中什么也得不到.我甚至不知道这是否是正确的方法.
之前有人解决了这个问题吗?
谢谢.
你好,世界
将成为 Hello World
无论如何,我可以为我的代码添加一个新行字符吗?
^FT78,76^A0N,28,28^FH\^FDHello\nWorld^FS
Run Code Online (Sandbox Code Playgroud)
以下是我正在尝试做的一些背景知识:
第2步仅在第一次发生,因为表单不需要在每个标签之前.我的问题是,当我发送表单时,如果我发送标签数据太快,它将无法打印.有时我会在标签上打印"Bluetooth Failure:Radio Non-Operational"而不是我发送的数据.
我通过执行以下操作找到了解决问题的方法:
for (int attempt = 0; attempt < 3; attempt++)
{
try
{
serialPort.Write(labelData);
break;
}
catch (TimeoutException ex)
{
// Log info or display info based on ex.Message
Thread.Sleep(3000);
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,我可以捕获一个TimeoutException并在等待一定时间后重试write方法(三秒似乎一直在工作,但是更少,似乎每次尝试都抛出异常).经过三次尝试,我只是假设串口有问题,让用户知道.
这种方式似乎工作正常,但我确信有更好的方法来处理这个问题.我认为我需要使用SerialPort类中的一些属性,但我找不到任何好的文档或如何使用它们的示例.我试过玩一些属性,但它们似乎都没有做我想要达到的目标.
这是我玩过的属性列表:
我相信这些的一些组合将处理我想要更优雅地做的事情.
我正在使用C#(2.0框架),Zebra QL 220+蓝牙打印机和Windows Mobile 6手持设备,如果这对解决方案有任何影响.
任何建议,将不胜感激.
[UPDATE]
我还应该注意到移动设备使用的是蓝牙2.0,而打印机只使用1.1版本.我假设速度差异是导致打印机在接收数据时落后的原因.
我试图找到一种将图像打印到斑马并且遇到很多麻烦的方法.
根据文件:
第一种编码称为B64,使用MIME Base64方案对数据进行编码.Base64用于对电子邮件缓存进行编码...
Base64对该字节进行6位编码,对未封闭数据的扩展为33%.
第二种编码称为Z64,首先使用LZ77算法压缩数据以减小其大小.(该算法由PKZIP使用,并且与PNG图形格式是一体的.)
然后使用如上所述的MIME Base64方案对压缩数据进行编码.
将根据Base64编码的数据计算CRC.
但它没有更多的信息.
基本上我正在尝试编码
private byte[] GetItemFromPath(string filepath)
{
using (MemoryStream ms = new MemoryStream())
{
using (Image img = Image.FromFile(filepath))
{
img.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后尝试使用以下内容进行打印:
var initialArray = GetItemFromPath("C:\\RED.png");
string converted = Convert.ToBase64String(b);
PrintThis(string.Format(@"~DYRED.PNG,P,P,{1},0,:B64:
{0}
^XA
^F0200,200^XGRED.PNG,1,1^FS
^XZ", converted .ToString(), initialArray.Length));
Run Code Online (Sandbox Code Playgroud)
根据它的声音,B64或Z64都被接受.
我尝试了一些变体,以及几种生成CRC和计算'大小'的方法.但似乎没有工作,并且图形下载到打印机总是被中止.
有没有人设法完成这样的事情?或者知道我哪里出错了?
我正在创建一个java应用程序,它从数据库中检索userId,将其转换为条形码,然后将其发送到打印机.我打算使用Zebra打印机,我想知道是否有人有从Java应用程序打印到Zebra打印机的经验; 如果是这样,你能分享一些代码吗?
在此先感谢,Tumaini
我将这台Zebra ZM400打印机连接到网络(192.168.1.50).我试图直接从PHP推送内容到这台打印机.
这是一个想法,我只是没有办法做到这一点.我尝试了file_put_contents('192.168.1.50', $content)但没有成功.
如果有人能帮我解决这个问题,我将不胜感激.谢谢 :-)
.................................................. .................................................. .............................
我使用LPR协议打印.无需安装驱动程序或任何东西.PHP 5的LPR打印类可以从这里下载:
http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html
我正在打印一些QR码(来自Ruby脚本),将ESC/POS命令写入Epson TM-T20热敏打印机.
顺便说一下,我正在编写一个简单的ESC/POS命令打印机"驱动程序".打印机我正在使用Epson TM-T20(USB接口)我正在使用serialport gem从Windows 7主机进行一些测试.
所有关于为打印格式文本和线性条形码编写ESC/POS命令都很好,但是我在使用Epson提供的唯一可用文档(据我所知)打印QR CODES时遇到问题,请参阅:http: //www.novopos.ch/client/EPSON/TM-T20/TM-T20_eng_qr.pdf
现在,关于QRCodes命令的部分对我来说非常模糊,我无法解释所请求的字节序列; 相反,我发现非常有用的Nicolas我在这里找到的例子:https://code.google.com/p/python-escpos/wiki/Usage
黑客那个有用的字节码示例,我能够成功打印二维码,请参阅:
我https://twitter.com/solyarisoftware/status/464740233008132096
然而,一般来说,我对ESC/POS消息格式感到困惑,特别是如果我在QR码内插入一条长文本消息(> 400个字符)......似乎打印机拒绝(不打印)QR使用此代码包含超过400个字符的代码:
def test_qrcode (printer, text, print_also_text=false, qr_size=6.chr)
s = text.size + 3
lsb = (s % 256).chr
msb = (s / 256).chr
# https://code.google.com/p/python-escpos/wiki/Usage
escpos = ""
escpos << "\x1D\x28\x6B\x03\x00\x31\x43#{qr_size}"
escpos << "\x1D\x28\x6B\x03\x00\x31\x45\x33"
escpos << "\x1D\x28\x6B#{lsb}#{msb}\x31\x50\x30"
escpos << text #
escpos << "\x1D\x28\x6B\x03\x00\x31\x51\x30"
# writing byte streams directly to the serial port
printer.write escpos
end
Run Code Online (Sandbox Code Playgroud)
有人可以建议关于ESC/POS命令(=字节码序列)的CLEAR ESC/POS DOCUMENTATION来打印QRCodes(二维码ESC/POS命令)吗?
我想知道如何将条形码代码128居中.在图片上你应该看到它现在是左对齐的.

我的zpl:
^XA
^LH10,10
^FO0,0^XGE:SWESE001.GRF^FS
^FO440,0^XGE:SWESE000.GRF^FS
^FO0,70^FB550,50,0,C,0^AQN,25,30^FDSpraynozzle 50mm^FS
^FO0,130^BY2^BCN,30,Y,Y,N,N^FDS/N:941001-0114-0001^FS
^FO180,170^AQN,23,20^FDwww.swepro.com^FS
^XZ
Run Code Online (Sandbox Code Playgroud) 为了在我的Mac上模拟ZPL打印机,我通过互联网搜索了几天.最后我有一个解决方案发布在这里,所以其他用户可以发现它有用.我想在这里发布我的解决方案Emulate Zebra打印机
但对于那些认为这个问题与另一个问题重复的人"感谢",我认为这完全错误.因此,我唯一的选择是创建另一个问题并回答它.