通用的SATO条码打印软件

SATO条码打印机,是一款比较好用的打印机。很多工矿企业,机场等对稳定性和性能要求比较高的场所,都会选用。偷下懒,目前还没有把它做成一个通用的条码打印软件。SATO条码打印机本身不提供类似于驱动程序接口的打印方式,只能使用底层的打印机指令集来打印,刚开始摸索了一段,最后还是解决了问题。

我把最关键的源代码贴出来,Delphi的:

1 打印部分

procedure TPkFrm.WriteToPrinter(psPrinterName,psStr: string; piPrintQty: integer);
var
  Handle: THandle;
  N: DWORD;
  DocInfo1: TDocInfo1;
  lsPrintESC: string;
begin
  //PrinterName: 打印机名字(如:EPSON LQ-1600K等),S为打印机的ESC指令集等。
//  ShowMessage(IntToStr(iPrintBarcode )+'  =  '+Printer.Printers[iPrintBarcode] + ' iPrintLabel = '+IntToStr(iPrintLabel ));
  if not OpenPrinter(PChar(psPrinterName), Handle, nil) then
    CreateError('打印条码时出错!无法得到条码打印机'+IntToStr(GetLastError),nil,1);
  with DocInfo1 do begin
    pDocName := PChar('SATO条码正在打印:'+psStr);
    pOutputFile := nil;
    pDataType := 'RAW';
  end;

StartDocPrinter(Handle, 1, @DocInfo1);
  StartPagePrinter(Handle);

//打印指令:开始
  lsPrintESC := Chr(27)+'A';
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);
  //page size
  lsPrintESC := Chr(27)+'A1'+'1216'+'3776';
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);
  //1,2,3
  lsPrintESC := Chr(27)+'#E3';
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);

//aduject start point
  //  S := Chr(27)+'A3V'+edt9.Text +'H'+edt10.Text;
  //  WritePrinter(Handle, PChar(S), Length(S), N);

//打印指令:条码   {BG Code128
  //S := Chr(27)+'V0020' + #27 + 'H0001' + #27 + 'BG04260' + '2ZC100126614134523507';
  lsPrintESC := Chr(27)+'V0040' +Chr(27)+'H0001'+ Chr(27)+'BG04256' + psStr;
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);

//打印指令:条码字符
  lsPrintESC := Chr(27)+'V0320'+Chr(27)+'H0320'+ Chr(27)+'L0101'+Chr(27)+'P03'+Chr(27)+'WB1'+psStr;
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);

//打印指令:份数
  lsPrintESC := Chr(27)+'Q'+IntToStr(piPrintQty);
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);

//打印指令:结束
  lsPrintESC := Chr(27)+'Z';
  WritePrinter(Handle, PChar(lsPrintESC), Length(lsPrintESC), N);

EndPagePrinter(Handle);
  EndDocPrinter(Handle);
  ClosePrinter(Handle);
end;

2 调用打印部分

procedure TPkFrm.PrintMode2(psPrintFile: string; piPrintLabelQty,piPrintBarcodeQty: integer);
var
  liOriPrinterIndex: integer;
begin
  liOriPrinterIndex := Printer.PrinterIndex; //把原来的默认打印机号保存起来,以便恢复

//注意,这种方式打印,是通过打印机顺序号来自动分配要打的内容,所以不必指定一个默认打印机
  //每打一个内容,动态指定一个默认打印机

//1 先打标签
  //打标签前,先把打标签的打印机设置为默认值,注意这一点很重要,要指导用户正确设置哪台是标签用的打印机
  try
    Printer.PrinterIndex:=GetPrintIndexFromName(sPrintLabel);
    BarCodePrint.LoadFromFile(psPrintFile);
    SetLabelColor(CDSMaster.FieldByName('OldDescr').AsString);
    BarCodePrint.PrepareReport;
    //打印份数,根据用户要求来定。一般单排打印两份,双排打印一份
    BarCodePrint.PrintPreparedReport('',piPrintLabelQty,True,frall)
  except
    CreateError('打印标签时出错!可能是标签打印机编号设置不正确等原因',nil,1);
  end;

//2 再打条码
  //打标签前,先把打条码的打印机设置为默认值,注意这一点很重要,要指导用户正确设置哪台是条码用的打印机
  try
    //Printer.PrinterIndex:=iPrintBarcode;
    //打印份数,根据标签来定。一个标签要打两个条码
    WriteToPrinter(sPrintBarcode,CDSMaster.FieldbyName('NewPkCode').AsString,piPrintBarcodeQty); //条码打印机顺序号,条码内容,份数
  except
    CreateError('打印条码时出错!可能是条码打印机编号设置不正确等原因',nil,1);
  end;

//恢复到原先设置的默认打印机
  try
    Printer.PrinterIndex := liOriPrinterIndex;
  except
  end;
end;

主要支持SATO CL系列的,如SATO CL612e条码打印机,SATO CL408e/412e 条码打印机,SATO CL608e/612e 条码打印机。

SATO CL608e/612e 条码打印机 
宽幅工业级条码打印机,热转印/热敏方式,打印速度可达 4英寸-8英寸/秒,
列印各式标签、服饰吊牌、洗涤布标、或特殊用,途贴纸等工商业运用

通用的SATO条码打印软件相关推荐

  1. 通用的ARGOX条码打印软件

    通用的ARGOX条码打印软件 大部分的条码打印机都有自己的打印软件,可以完成常用的一些功能,比如可以图形化设计条码大小布局.文字.批量打印等等.但由于条码数据往往都不是孤立的,经常需要从某些系统软件里 ...

  2. 用Label mx条码打印软件制作吊牌标签

    条形码标签看起来很复杂神秘,其实只需要借助三样产品就可以轻松制作出来了:标签打印机,标签纸(吊牌),标签条码打印软件. 以上起关键作用的标签条码打印软件,软件的功能.操作便利性以及对打印机的支持兼容性 ...

  3. 条码打印软件如何连接激光打印机打印条码标签

    在连接打印机打印条码标签之前,需要对条码打印软件有一个简单的了解,条码打印软件是通过驱动来连接各种打印机进行打印条码标签的,所以在连接激光打印机打印条码标签时,需要在电脑上安装通用激光打印机驱动.接下 ...

  4. sql 插入新数据 如何处理等字符_条码打印软件之如何在条码数据插入字符而不被扫描...

    有的客户在制作条形码的时候可能会想在条码内容中插入字符,但是,又希望插入的字符不被扫描出来,那么在条码打印软件中是如何设置的呢?接下来小编就给大家简单介绍下,条码打印软件中如何在条码内容插入字符,而又 ...

  5. 生成打印条码_条码打印软件如何生成跳号条形码

    所谓跳号就是1跳到2然后再跳到3这样的流水码,有些人会把这种的流水数据称为跳号,今天就给大家介绍一下如何用中琅条码打印软件生成跳号条形码. 在条码打印软件中新建一个空白标签,选择打印机并自定义设置标签 ...

  6. bootstraptable设置行高度_条码打印软件中不干胶卷纸的标签设置方法

    条码打印软件中的标签设置是根据打印机中的实际标签纸的情况进行设置的,不同的标签纸有不同的设置方法(如A4的平张纸,或者单排.双排.多排的不干胶卷纸都有相对的设置方法).今天就用中琅条码打印软件给大家演 ...

  7. excel数据库_中琅条码打印软件数据库连接详解

    用过中琅条码打印软件的小伙伴都知道软件多种数据库类型,比如TXT.Excel,MySQL,Access,SQLServer,MySQL,Oracle,CSV,Sybase,DB2,SQLite,DBF ...

  8. 如何条码打印软件工具箱窗格进行重新定位

    2019独角兽企业重金招聘Python工程师标准>>> 有时为了更加方便设计师设计条码标签.符合他们一贯的操作习惯,会将BarTender工具箱窗格进行重新定位:自动隐藏,或者放置在 ...

  9. if condition 大于_条码打印软件之脚本编程的应用(if语句)

    今天给大家介绍中琅条码打印软件中脚本编码的其中一个应用(if语句判断),根据已知的数据判断输出新的数据,如下:给出Excel表两列数据(数据1列和数据2列), 1.数据1为Y时,无论数据2是什么都输出 ...

最新文章

  1. 基于Python的自动特征工程——教你如何自动创建机器学习特征
  2. 今天用GRID感觉它严重缺少灵活性
  3. mysql 主主同步配置_MySQL 主主同步配置
  4. WIN7安装及配置JDK
  5. Oracle的rownum原理和使用(整理几个达人的帖子)
  6. tomcat7的数据库连接池tomcatjdbc的25个优势
  7. javascript举例介绍事件委托的典型使用场景
  8. 《转》安卓P 刘海屏的适配
  9. SpringBoot2.x填坑(四):生产上SpringBoot2.x Scheduled定时任务重复执行两次解决方案
  10. html页面 关键字高亮,HTML高亮关键字的完美解决方案
  11. 【翠花学Vue】每日打卡——vue打卡6
  12. python判断信用卡号是否合法_怎么使用 Python 校验银行卡号码是否有效-阿里云开发者社区...
  13. matlab hsi颜色,RGB 颜色空间转 HSI 颜色空间的matlab程序实现
  14. 分别用线性规划和动态规划求解打家劫舍问题(力扣198)
  15. 2022中国眼博会,中国北京国际儿童青少年眼睛健康产业展览会
  16. 如何用Procmon.exe来监视SQLSERVER的logwrite大小
  17. 《学雷锋日-志愿者服务行动》
  18. 政治的人文素养 Zz
  19. Base64加密算法原理、具体例子及Java代码
  20. flash builder (fb) 与flash professional cs6(fla) 联合调试

热门文章

  1. 浏览器对象模型 (BOM)
  2. upx工具编译使用指导
  3. Java基础系列(二) 对象相等判断
  4. 鼠标点击某处时可以让小精灵移动到鼠标点击的地方, 让精灵跟随鼠标移动
  5. webpack进阶篇(二十七):webpack实现SSR打包(下)
  6. 新建实例启动S7-PLCSIM Advanced V2.0失败:Error Code: -30, LicenseNotFound
  7. Unreal自定义日志分类
  8. aspose.word 20 java 替换占位符为文字或图片
  9. ROS机器人定位导航仿真(包括智能车、无人机飞行的仿真)
  10. qcw——qt自定义控件