因公司需要,购买佳博标签打印机一台(GP1124T),用于打印大小标签。
机器刚到手时,搜了很多打印的方式,但打印的效果都不佳,有模糊不清晰,反而用机器的指令打印效果就不错,但询问他们的技术,他们公司提供的LabeShop软件制作的标签没办法直接用指令发送去打印,要打印还得一条条指令的敲。虽然敲起来也不麻烦,但考虑到日后标签更改维护、增加模板等问题,还是决定做一个指令生成软件(也方便以后没看过指令的人生成模板导进机器,也方便自己以后开发,主要还是因为最近比较闲~)。实现的平台是winform,用的C#解析lsdx(本质上就是xml文件),把数据一个个抓出来然后填到指令里面,然后指令整合起来就是一个模板,然后把模板下载进机器,以后要使用的时候Run模板,然后加几条填数据的指令再打印就OK了。
展示部分代码:
//Bar就是画线,此函数获取模板中所有的线(仅限直线,斜线需另写)
private void GetBar()
{
XmlNodeList barNodeList = m_xmdDoc.SelectNodes("/labelshopdocument/labelform/labellayer/labelobjects/drawobj[@type='drawline']");
foreach (XmlNode bxn in barNodeList)
{
int left = Convert.ToInt32(bxn.Attributes["left"].Value);
int top = Convert.ToInt32(bxn.Attributes["top"].Value) ;
int right = Convert.ToInt32(bxn.Attributes["right"].Value);
int bottom = Convert.ToInt32(bxn.Attributes["bottom"].Value);
int linewidth = Convert.ToInt32(bxn.SelectSingleNode("./line").Attributes["linewidth"].Value) ;
BarInfo bar = new BarInfo();
bar.X = IntToDPI(left);
bar.Y = IntToDPI(top);
if (right - left == linewidth)
{
bar.Width = IntToDPI( linewidth) ;
bar.Heigh = IntToDPI(bottom - top) ;
}
else
{
bar.Width = IntToDPI(right - left);
bar.Heigh = IntToDPI(linewidth);
}
// this.BarList.Add(bar);
this.ICommandList.Add(bar);
}
}
这是界面图,极其简陋
试了一下打印的效果跟LabelShop差不多,有些参数是写死的,并不全是靠抓的,因为一早上看xml看的头晕晕的懒得弄了
软件还会不断根据我的需求完善,毕竟就我一个人再用。有需要的可以留言