我正在努力让Epson“ESC / POS”打印机打印条形码(使用Delphi),并想测试打印机是否有故障.你知道在哪里可以找到在“ESC / POS”中打印条形码的程序吗?我想作为最后的手段OPOS程序也可以.

此外,一个有效的演示Delphi程序也可以.到目前为止,我所有的Delphi代码片段都无效.

我使用的打印机是Epson TM-L60II

解决方法

我有一个用Delphi 5编写的用于TMT88的完整测试程序,但是这里的源代码很大,所以这里是条形码位

请注意,作为完整对象的片段,可能会丢失某些变量/函数

获取条形码字符

{**
*    @param a ean13 barcode numeric value
*    @return the escpos code for the barcode print
*    Description uses escpos code,return code needed to print a ean13 barcode
*}
function TPrintescposToPort.getBarcodeescposCode(l_ean13:String):String;
    var
        l_return:String;
begin
    l_return :=  CHR(29) + 'k' + CHR(67) + CHR(12);
    l_return := l_return +  l_ean13; // Print bar code
    l_return := l_return +  l_ean13; // Print bar code number under thge barcode

    Result :=  l_return
end;

打印到打印机

{**
*    @param Printer Name,Item be printed,Cut the papers after the cut,#no of copies to print
*    @return boolen,true if it printed
*    Description prints a test page to the tysso printer
*}
function TPrintescposToPort.escposPrint(const l_printer,l_textToPrint :String;l_cutPaper:Boolean=true;l_copies:integer=1): Boolean;
    var
        l_pPort,l_pName,l_tmp:String;
        i,x:integer;
        PrinterFile: TextFile;
begin
    // set result to false so any thing other then a good print will be false
    Result:= FALSE;

    try
        //Find if the printer exists,else set to defult -1
        i := Printer.Printers.IndexOf(l_printer);
        if (i > -1) then
        begin
            Printer.PrinterIndex := i;
            l_pName := Printer.Printers[i]; //Get the printer name (incase its the defult and not the one passed)
            l_pPort :=   Self.getPrinterPort(l_pName) ; // get the port name from the reg
        end;

        // If true add headers and footers to the passed text
        if (Self.aPrintHeadersFooters) then
        begin
            l_tmp := Self.getHeader()
                 +  l_textToPrint + Self.GetFooter();
        end
        else
        begin
            l_tmp := l_textToPrint;
        end;

      //Send the Document To the printer
      try
          for x:= 1 to l_copies do //Print multi-copies
          Begin              
              //Assign the file to a tmp file in the printer port
              if (length(trim(l_pPort)) > 0) then AssignFile(PrinterFile,l_pPort)
              else
              begin                         
                   //only use if we cant get the port 
                   //(may look bad as ctrl codes are still in place)
                   AssignPrn(PrinterFile);
                   l_tmp := Self.stripescpos(l_tmp);
              end;

              Rewrite(PrinterFile);

              try
                  //Send the passed Text to the printer 
                  WriteLn(PrinterFile,l_tmp);

                  if (Self.aPrinterReset) then 
                       WriteLn(PrinterFile,escReset);  // Reset the printer alignment

                  if (l_cutPaper) then         
                       WriteLn(PrinterFile,escFeedAndCut); //Cut the paper if needed
              finally
                  CloseFile(PrinterFile);
                  Result:= true;
              end;
          end;
      except
      end;
    except
    end;

end;

更新

以下是上述代码中丢失的控制代码常量,希望这些名称具有足够的描述性.

const
     escNewLine   = chr(10);  // New line (LF line Feed)
     escUnerlineOn   = chr(27) + chr(45) + chr(1);  // Unerline On
     escUnerlineOnx2 = chr(27) + chr(45) + chr(2);  // Unerline On x 2
     escUnerlineOff  = chr(27) + chr(45) + chr(0);  // Unerline Off
     escBoldOn       = chr(27) + chr(69) + chr(1);  // Bold On
     escBoldOff      = chr(27) + chr(69) + chr(0);  // Bold Off
     escNegativeOn   = chr(29) + chr(66) + chr(1);  // White On Black On'
     escNegativeOff  = chr(29) + chr(66) + chr(0);  // White On Black Off
     esc8CpiOn       = chr(29) + chr(33) + chr(16); // Font Size x2 On
     esc8CpiOff      = chr(29) + chr(33) + chr(0);  // Font Size x2 Off
     esc16Cpi        = chr(27) + chr(77) + chr(48); // Font A  -  normal Font
     esc20Cpi        = chr(27) + chr(77) + chr(49); // Font B - Small Font
     escReset        = chr(27) + chr(64); //chr(27) + chr(77) + chr(48); // Reset Printer
     escFeedAndCut   = chr(29) + chr(86) + chr(65); // Partial Cut and Feed

     escAlignLeft    = chr(27) + chr(97) + chr(48); // Align Text to the Left
     escAlignCenter  = chr(27) + chr(97) + chr(49); // Align Text to the Center
     escAlignRight   = chr(27) + chr(97) + chr(50); // Align Text to the Right

德尔福 – 我在哪里可以找到“ESC / POS”爱普生条码测试程序?的更多相关文章

  1. Swift 不完全函数第 1 部分:如何避免

    实际上,预处理并避免不完全函数能够让我们的程序无论在如何情况下都能可靠地运行。Swift有一个函数precondition就是用来干这个的:测试条件是否满足,并在不满足的情况下触发一个致命错误。事实上在Swift标准库中,几乎每个Swift程序都在间接地使用这种方式,包括了各种和precodition函数类似的断言。不完全函数前置条件会让函数中的某个参数的取值范围缩小为函数签名中指明的范围的一部分。在不完全函数中,已定义的输入值的子集称作已定义域。

  2. 如何用swift识别字符串中的大小写字符?

    我知道我可以从swift调用C函数,但是对我来说似乎不正确。我该怎么做才能做到这一点呢?您可以随时查看小写表示与当前值的不同;

  3. 如何检查字符串是否包含Swift中的字母?

    参见英文答案>WhatisthebestwaytodetermineifastringcontainsacharacterfromasetinSwift7个我试图检查一个特定的字符串是否包含字母.到目前为止,我已经看到了NSCharacterSet.letterCharacterSet()作为一组字母,但我无法检查该集合中的一个字符是否在给定的字符串中.当我使用这个代码时,我收到一个错误:‘Cha

  4. Android In App BIlling v3无法使用Nexus 7

    我有一个应用程序,它使用应用程序计费的新v3,它在多个设备上运行良好.唯一的例外是Nexus7,当根据Google的文档here尝试初始化帮助程序时,报告错误:这发生在2个不同的Nexus7上,每个Nexus7上都有完全独立的用户帐户.这两款设备都构建了3.10.9的Play商店,与我测试过的所有其他Nexus设备相同.鉴于图书馆v3最近的性质,只有媒体关于在线发布的内容.有人对这个有了解吗?解决方法清除GooglePlay商店的缓存和数据,然后至少启动一次GooglePlay商店.

  5. Python中的chr()函数与ord()函数解析

    这篇文章主要介绍了Python中的chr()函数与ord()函数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  6. windows – 如何在运行批处理文件时防止程序(.exe)失败的错误弹出消息框

    ..ClickonOKtoterminatetheprogramClickonCANCELtodebugtheprogram结果是已知的–脚本执行阻止,直到某人按下“确定”按钮.当我们谈论可能在某些无头虚拟机中自动运行的自动脚本时,可能会出现问题.有没有一种简单的方法来防止这种行为,只是让应用程序退出失败代码–而不更改程序本身的代码?当DLL丢失时,这并不能解决问题,但这种情况非常罕见,这对我来说已经足够了.

  7. 完全复制Windows中的应用程序安装

    我有一台带有工资单应用程序的WindowsServer2003计算机,以及我要迁移到的新的Server2008系统.我的问题是关于(我相信)所有Windows:如何跟踪安装程序安装的所有文件,以便将这些文件复制到另一个系统?我在Windows中注意到大多数应用程序的安装程序并不总是记录所有内容.如果我有一个文件列表,我可以简单地编写副本.作为Linux人,我很想听听如何在Windows*中做到这一点伙计..这是PAYROLL!

  8. 如何在php中测试调度程序

    我有一个codeigniter应用程序,它在mysql数据库中安排特定日期和时间的事件,有时提前几周,另一部分将发送电子邮件提醒并在这些日期发生时执行其他操作.如何进行基于时间的测试?有没有我可以使用或阅读的测试套件?这是我思索了很长一段时间的事情–然后我意识到了我的问题!新代码现在,在测试时……

  9. php – 使用chr rand生成随机字符(A-Z)

    我正在使用以下方法从A-Z生成随机字符,但它偶尔会生成@符号.知道如何防止这种情况吗?也许字符范围不正确?ExampleUsage$randomNumber=izrand;//生成32位数字作为字符串$randomAlphaNumeric=izrand();//生成32位字母数字字符串TypecasttoInteger如果要将数字类型转换为整数,请在执行此操作后执行此操作生成数字.注意:如果它们存在,这将丢弃任何前导零.$randomNumber=$randomNumber;izrand()v2

  10. PHP自动部署和测试

    我问了一个关于自动部署java代码的自动部署的问题here.我们的后端JavaAPI由PHPWeb应用程序访问.能够在对PHP代码执行自动测试的同时自动将此Web应用程序部署到我们的Web服务器,这将是一件好事.PHP有类似的东西吗?

随机推荐

  1. delphi – 主窗口按进程名称处理

    DelphiXe,Win7x64如何从进程名称(exe文件的完整路径)获取主窗口句柄,或至少一个类或窗口名称(如果该进程只有一个窗口).例:解决方法我同意Petesh的说法,你需要枚举顶级窗口并检查创建它的进程的模块文件名.为了帮助您开始枚举顶级窗口,这是一个delphi实现.首先,当你回调给你时,你需要一些与EnumWindows方法通信的方式.为此声明一条记录,该记录将保存您要查找的模块的文件

  2. 如何在Delphi中纯粹通过RTTI信息(即不使用任何实际对象实例)获取TObjectList的子项类型?

    我正在使用RTTI实现用于流式传输任意Delphi对象的通用代码,并且为了使其工作(更具体地说,为了使加载部分工作),我需要以某种方式获得TObjectList的子项类型<T>不使用任何实际对象实例的字段.要求不使用任何实际对象实例的明显原因是,在从流加载对象的情况下(仅基于要加载的对象的类类型的知识),我将不会有任何实例在加载完成之前完全可用–我宁愿只能访问相关类的纯RTTI数据.我希望能

  3. inno-setup – Inno Setup – 安装程序背景图片

    图像作为安装程序背景如何用inno5.5.9做到这一点?

  4. inno-setup – Inno Setup – 如何添加多个arc文件进行解压缩?

    使用InnoSetup解压缩弧文件.我希望有可能解压缩多个arc文件以从组件选择中安装文件(例如).但仍然显示所有提取的整体进度条.这可能吗?的回答的修改预备是相同的,参考其他答案.在ExtractArc中,为要提取的每个存档调用AddArchive.

  5. delphi – 如何在DataSet的帮助下在TAdvStringGrid中显示数据库中的BLOB图像

    解决方法CreateBlobStream正在创建一个TStream对象,而不是TMemoryStream.由于您不想将JPG写入数据库,因此应使用bmRead而不是bmReadWrite.我不习惯sqlite,但你必须确保使用合适的二进制日期类型.为了确保存储的图像真的是JPG,您应该编写JPG以进行测试,例如:

  6. inno-setup – 在Inno Setup的Code部分下载程序后运行程序

    如何运行我通过Internet下载的应用程序,在代码部分中使用,并等待该应用程序完成运行.我有,使用InnoTools下载程序,下载这两个文件,我想,在第二个完成下载后运行该下载,或jdk-8u111-windows-x64.exe,然后继续安装.解决方法使用其他下载插件,而不是ITD(请参阅下面的原因).例如,InnoDownloadPlugin.当您包含idp.iss时,它定义了一个全局IDP

  7. progress-bar – Inno Setup Run部分的简单进度页面

    我的安装程序非常简单,它基本上是:>欢迎页面>进展页面>最终页面欢迎页面和最终页面是标准页面.在Progress页面,我正在静默安装一堆其他程序.实际的脚本是在[Run]部分中安装每个程序.问题是酒吧达到100%然后停留在那里.我只能更改消息文本.我想要实现的是使用Pascal脚本显示进度,例如:这样我就可以显示更准确的进度条.这就是我所拥有的:问题是,当我构建安装程序时,它不显示欢迎页面.我做错了什么?

  8. delphi – 如何使“显示/隐藏桌面图标”设置生效?

    下面的代码调用SHGetSetSettings函数来隐藏桌面图标但它只是从视图菜单中取消选中“显示桌面图标”.我打电话给SHChangeNotify;更新桌面,但这不起作用?解决方法isa,要刷新桌面,您可以将F5键发送到progman窗口隐藏桌面图标的另一种方法是再次显示

  9. inno-setup – Inno Setup – 避免显示子安装程序的文件名

    我试图使用InnoSetup–Howtohidecertainfilenameswhileinstalling?(FilenameLabel)的想法Theonlysuresolutionistoavoidinstallingthefiles,youdonotwanttoshow,usingthe[Files]section.Installthemusingacodeinstead.UsetheEx

  10. inno-setup – Inno Setup磁力链接下载实施

    我目前正在使用InnoDownloadPlugin为我的安装程序下载文件,这个问题最大的问题是faila正确下载文件.因为连接不良等诸多原因.我想添加一种替代方法来下载文件,因此用户可以选择是否需要常规方式或torrent方式.我知道我可以使用aria2c.exe应用程序(https://aria2.github.io/),有人可以帮我实现它的inno设置代码吗?我需要的是使用torrent(ar

返回
顶部