【问题标题】:Label printing development using b-pac SDK in a C# application在 C# 应用程序中使用 b-pac SDK 进行标签打印开发
【发布时间】:2012-06-23 01:22:48
【问题描述】:

我正在Visual Studio 2012 RC中开发一个POS系统的C#应用程序。我必须使用

在标签打印机上打印销售额

Brothers P-Touch QL-500 标签打印机。

我已经做了什么。

  • 我已安装最新的 b-pac SDK 3.0
  • 成功添加对我的 C# 应用程序的引用。
  • 为了创建标签模板,我安装了最新版本的 p-touch Editor 5.0。
  • 制作了一个模板 (Mylabel.lbl)。

    但在那之前。

我运行了一些内置示例,但这些示例引发异常。在 Google 上进行了大量搜索后,我发现这是打印机驱动程序问题

我无法安装驱动程序,因为驱动程序的安装需要连接打印机。 我没有打印机。

我需要做什么

  • 您知道我该如何完成这项任务吗?
  • 使用Brothers P-Touch QL-500 标签打印机打印标签的正确方法是什么。

    请帮助我我已经做了很多时间搜索。 stackoverflow 是我最后的希望。我是这种标签打印的新手。请帮助我将不胜感激。

我正在使用的 ruff 示例代码。

bpac.DocumentClass doc = new DocumentClass();
if (doc.Open("templateFile.lbx"))
{
    doc.GetObject("field1").Text = "...";
    doc.GetObject("field2").Text = "...";

    doc.StartPrint("", PrintOptionConstants.bpoDefault);
    doc.PrintOut(1, PrintOptionConstants.bpoDefault);
    doc.EndPrint();
    doc.Close();
}

这是我正在尝试的示例代码。第一行抛出异常

bpac.DocumentClass doc = new DocumentClass();

我还附加了一个异常屏幕预览。

【问题讨论】:

    标签: c# .net printing label


    【解决方案1】:

    发生异常时,我收到了完全相同的错误消息。 我的解决方案是将“平台目标”设置为“X86”CPU。 这可以通过以下方式完成: (菜单)项目->属性->(选项卡)构建->平台目标“x86” 而不是“任何 CPU”

    我在 Windows 7 64 位上开发了该软件。

    您可以在 b-PAC SDK 文档中找到更多相关信息。 C:\Program Files (x86)\Brother bPAC3 SDK\Doc\bPAC30_eng.chm 在“疑难解答”部分您会发现:“程序无法在 64 位操作系统上运行。将平台更改为“x86”,然后重新编译。”

    此解决方案已使用连接到我的 PC 的 QL560 硬件进行测试,并且可以正常工作。

    【讨论】:

      【解决方案2】:

      这是我使用此对象打印的一些代码。

                  string strPrinterAddress = "domain\machinename";
                  objDoc = new BrssCom.Document();
                  string strPath = "192.168.1.45" + " /D" + strPrinterAddress;
                  if (objDoc.Open(strPath))
                  {
                      objDoc.SetText(0, "Recycle: " + recycleReason);
      
                      objDoc.SetText(1, "Other Text");
                      objDoc.SetBarcodeData(0, "1234");
                      objDoc.DoPrint(BrssCom.PrintOptionConstants.bpoAutoCut, "0");
                  }
      

      不过,@JamieMeyer 是对的。你不能,绝对不能确定这在没有打印机进行测试的情况下会起作用。在我的示例中,我使用了一个非常简单的标签,其中包含 3 个字段,其中一个是条形码。这不是使用命名变量的简单问题,它实际上取决于添加字段的顺序等。

      我自己没有打印机,我花了大约 2 周的时间在晚上发送代码更新,然后客户在第二天进行了一轮又一轮的测试,以使外观和感觉恰到好处。如果让我重来一遍,我会自己购买一台打印机。

      祝你好运,但你是在没有打印机的情况下在黑暗中拍摄。

      【讨论】:

      • 同意。几年前,我建立了一个类似的系统,使用条形码扫描仪和 Dymo labelmaker 打印机。你需要硬件。你必须拥有它。如果你没有它,得到它。我必须自己购买条形码扫描仪,是的。有时您必须抓住牛角才能完成工作。
      • 谢谢马特我也同意。你们这些人给我的建议是正确的。是的,我要在黑暗中拍摄。没有硬件是我的问题。我现在在国内买不到。但我仍然有动力在没有硬件的情况下完成这项任务。您可以为我提供的任何其他帮助。请考虑我的问题和我面临的情况,我无法拥有硬件。但我必须实施。任何帮助材料。我只想编写代码并正确设置程序集。那么我将处理的后果是什么。再次感谢。
      • 我需要知道我的代码中抛出的异常是否真的与硬件组件或驱动程序未安装问题有关。
      • 我不知道答案。您可以将测试项目发送给安装了打印机的人并查看它是否打印出来吗?
      【解决方案3】:

      您打算如何在没有物理单元的情况下验证编码结果? Brother 不提供任何类型的视觉模拟器,因此您最好的选择是购买该设备。这些可以以 75 美元的街头价格买到,并且很可能在您当地的办公用品商店的货架上。 http://www.officedepot.com/a/products/506232/Brother-P-Touch-QL-500-PC/

      【讨论】:

      • 谢谢 Jamie 是的,我理解这个因素。我买不起打印机。但我有一个解决方案,我需要帮助。我需要设置程序集并正确编写代码。当它安装在客户的计算机上时。由于客户有打印机和驱动程序。现在,如果我编写正确的代码并将所有内容设置到它的位置。那我希望没有坏事发生。重要的是我应该检查这项任务的开发关键步骤是什么。这是一个冒险的步骤,但这是我的需要,我不能偏离。
      【解决方案4】:

      这是我的工作代码。我认为 c# 示例不正确,您必须将 DocumentClass 更改为 Document。

      Actives 代码用于 interop.bpac.dll 注释代码适用于 bpac.dll

      块引用

      public void ETQ_Print(string Lote, string NumSerie) {

              try
              {
                  // bpac.Document PrnLabel = new bpac.Document ();
                  ///  bpac.Document PrnLabel = new bpac.Document();
      
                  bpac.Document doc = new Document();
      
                  // Actualizo los Campos de la Etiqueta.
      
                  // if (PrnLabel.Open(this.txtETQ_Plantilla.Text))
                  if (doc.Open (this.txtETQ_Plantilla.Text) != false)
                  { // hemos cargado la plantilla corectamente.
      
                      // Editamos los campos necesarios..
                      // PrnLabel.GetObject("BarCode").Text = Lote + NumSerie;
                      doc.GetObject("BarCode").Text = Lote + NumSerie;
                      // PrnLabel.GetObject ("objName").Text = ETQ_txtNumSerie.Text;
                      // PrnLabel.StartPrint("", PrintOptionConstants.bpoDefault);
                      doc.StartPrint("", PrintOptionConstants.bpoDefault);
                      // PrnLabel.PrintOut(1, PrintOptionConstants.bpoDefault);
                      doc.PrintOut(1, PrintOptionConstants.bpoDefault);
                      // PrnLabel.EndPrint();
                      doc.EndPrint();
                      // PrnLabel.Close();
                      doc.Close();
                  }
                  else
                  {
                      MessageBox.Show(this, "Open() Error: " + doc.ErrorCode); //  PrnLabel.ErrorCode);
                  }
              }
              catch
              {
                  MessageBox.Show(this, "Error de Etiqueta", "Error Etiqueta", MessageBoxButtons.OK, MessageBoxIcon.Error);
      
              }
          }
      

      块引用

      【讨论】:

        【解决方案5】:

        我遇到了完全相同的问题。原来我无意中下载了 32 位版本的 SDK。来自http://www.brother.com/product/dev/label/bpac/download/index.htm#full的版本信息

        一旦我删除了 32 位 SDK 并添加了 64 位 SDK,该示例就可以立即使用。这适用于 b-PAK 3.2.001。我的下一步是将示例代码中使用的模板加载到 P-touch 编辑器中,并设置正确的颜色和打印​​尺寸。

        【讨论】:

          【解决方案6】:

          来源:兄弟 youtube 教学视频:https://www.youtube.com/watch?v=WRssVf8zxQQ 和上面的其他优秀答案。他们不太适合我。

          在 Visual Studio Community 2017 中,我添加了对 interop.bpac 的引用,然后运行:

                  try
                  {
                      bpac.Document mylabel = new bpac.Document();
                      if (mylabel.Open("SensorNodeLabel.lbx"))
                      {
                          mylabel.GetObject("labelText").Text = "blah blah";
          
          
                          mylabel.StartPrint("", bpac.PrintOptionConstants.bpoDefault);
                          mylabel.PrintOut(1, bpac.PrintOptionConstants.bpoDefault);
                          mylabel.EndPrint();
                          mylabel.Close();
                      }
                  }
                  catch ...
          

          这在 QL-700 标签打印机上运行良好。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-03
            • 2016-07-26
            • 2016-01-18
            • 1970-01-01
            • 2023-03-30
            • 1970-01-01
            • 2015-08-10
            • 2010-09-16
            相关资源
            最近更新 更多