斑马105SL打印机如何将图标生成固定的文件,然后调用呢? 发布时间: 2012-3-25 12:38:39 |
问题: 斑马105SL打印机用串口ZPL指令打印时,当打印一些图标时,需要发送很多的字符串,请问能否把这些图标生成一个固定的文件,这样以后只需发送相应的文件名就可打印相关的图标了。请赐教!
敏用数码解答:
斑马105SL实现这个功能是没有任何问题的,但需要注意105sl的内存配置,老型号的105sl采用4MB RAM(R:),2MB闪存(E:),新型号的105sl采用6MB RAM(R:),4MB闪存(E:)。避免条码打印机出现图形过大下载溢出的情况。
通常采用ZPL中的~DG指令(下载图形)【ZTOOLS工具生成GRF】和^XG指令(调用图形)或^IL指令(调用图形)【^XG与^IL的区别为:是否可以对图形进行缩放?】来完成这样一个过程。
~DG指令(下载图形)格式: ~DGd:o.GRF,t,w,data d=存储图形的位置,可选的值:R,E,B,A o=文件名,1-8个字母数字字符 t=图形占用字节数(bits) w=每行的字节数 data=ASCII字符串 t参数的计算公式: xz/8 * yz=t (x=图形以mm为单位的宽度,y=图形以mm为单位的高度,z=dots/mm为单位的打印机分辨率,8=bits/byte) 比如,8mm宽,16mm高的图形,采用105sl-203dpi打印机打印,那么: t=8*12/8*16*12=2304
^XG指令(调用图形)格式: ^XGd:o.GRF,mx,my d=存储图形的源位置,可选的值:R,E,B,A o=图形的文件名 mx=X轴的放大倍数,1-10 my=Y轴的放大倍数,1-10
^IL指令(调用图形)格式: ^ILd:o.GRF d=存储图形的源位置,可选的值:R,E,B,A o=图形的文件名
例子: 下载图形代码: ~DGR:SAMPLE.GRF,00080,010,
调用图形代码(^XG): ^XA
调用图形代码(^IL): ^XA
如何把图片转换为GRF格式: 下面介绍如何把斑马logo转换为GRF格式
1、Logo图形的后缀名需要为PCX或者TIF 2、然后通过ZTOOLS工具中的Convert Graphic File功能,把PCX或者TIF的文件转换为GRF格式的文件。 斑马LOGO经过转换后的GRF格式的代码如下: ~DGR:ZLOGO,02180,020,E0000000000000000000000000000000000001A0
实现: 帮助API 从网上下载 吧 ///<summary> /// ZPL帮助类 ///</summary> publicclassZebraHelper; 核心代码 图片转为GRF 实现并输出 //不带位置 publicstring Convert(string s_FilePath) { int b = 0; long n = 0; long clr; StringBuilder sb = newStringBuilder(); sb.Append("~DGR:ZLOGO.GRF,"); Bitmap bm = newBitmap(s_FilePath); int w = ((bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1)) * bm.Size.Height); int h = (bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1));
sb.Append(w.ToString().PadLeft(5, '0') + "," + h.ToString().PadLeft(3, '0') + ",\n"); using (Bitmap bmp = newBitmap(bm.Size.Width, bm.Size.Height)) { for (int y = 0; y < bm.Size.Height; y++) { for (int x = 0; x < bm.Size.Width; x++) { b = b * 2; clr = bm.GetPixel(x, y).ToArgb(); string s = clr.ToString("X");
if (s.Substring(s.Length - 6, 6).CompareTo("BBBBBB") < 0) { bmp.SetPixel(x, y, bm.GetPixel(x, y)); b++; } n++; if (x == (bm.Size.Width - 1)) { if (n < 8) { b = b * (2 ^ (8 - (int)n));
sb.Append(b.ToString("X").PadLeft(2, '0')); b = 0; n = 0; } } if (n >= 8) { sb.Append(b.ToString("X").PadLeft(2, '0')); b = 0; n = 0; } } } sb.Append("^FO100,540^XGR:ZLOGO.GRF,2,2^FS"); } return sb.ToString();
} |
|
//带位置
publicstringConvert(string s_FilePath,intxtop,int ytop)
{
intb = 0;
longn = 0;
longclr;
StringBuilder sb = newStringBuilder();
sb.Append("~DGR:ZLOGO.GRF,");
Bitmap bm = newBitmap(s_FilePath);
intw = ((bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1)) *bm.Size.Height);
inth = (bm.Size.Width / 8 + ((bm.Size.Width % 8 == 0) ? 0 : 1));
sb.Append(w.ToString().PadLeft(5, '0')+ "," + h.ToString().PadLeft(3, '0') + ",\n");
using(Bitmap bmp = newBitmap(bm.Size.Width, bm.Size.Height))
{
for (inty = 0; y < bm.Size.Height; y++)
{
for (intx = 0; x < bm.Size.Width; x++)
{
b = b * 2;
clr = bm.GetPixel(x,y).ToArgb();
strings = clr.ToString("X");
if(s.Substring(s.Length - 6, 6).CompareTo("BBBBBB")< 0)
{
bmp.SetPixel(x, y,bm.GetPixel(x, y));
b++;
}
n++;
if(x == (bm.Size.Width - 1))
{
if(n < 8)
{
b = b * (2 ^ (8- (int)n));
sb.Append(b.ToString("X").PadLeft(2,'0'));
b = 0;
n = 0;
}
}
if(n >= 8)
{
sb.Append(b.ToString("X").PadLeft(2,'0'));
b = 0;
n = 0;
}
}
}
sb.Append(string.Format("^FO{0},{1}^XGR:ZLOGO.GRF,2,2^FS", xtop,ytop));
}
returnsb.ToString();
}
来源:CSDN
作者:林少1024
链接:https://blog.csdn.net/yeisman/article/details/78344017