如何向Brother QL系列标签打印机写入和发送命令?

时间:2013-04-28 14:25:21

标签: c# thermal-printer

我现在正在尝试用C#编写一个简单的程序,它向打印机发送命令以打印纯文本但不知道如何操作。我现在面临两个主要问题,

1,如何与打印机通信?

在做了一些谷歌搜索但没有得到满意的结果后,我去了兄弟的主页,发现那里有一个所谓的b-PAC3 SDK

The b-PAC* Software Development Kit is a software tool for Microsoft® Windows® that allows customized labels to be printed from within your own applications.

下载并安装后,在其安装的目录中,我找到了一个名为“Samples”的文件夹 - 有一些用不同语言(VB,VS,VSC,......)编写的示例代码。我希望这些示例代码可以工作,因为这个SDK和打印机来自同一家公司。但他们没有。让我在这里向您展示其中一个示例:( C#中的代码)

/*************************************************************************

    b-PAC 3.0 Component Sample (RfidRW)

    (C)Copyright Brother Industries, Ltd. 2009

*************************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleSampleCSharp
{
    class Program
    {
        private const int NOERROR = 0;
        private const string ANTENNA_READER_WRITER = "Reader/Writer side";
        static void Main(string[] args)
        {
            // Create Rfid Instance
            bpac.RfidClass rfid = new bpac.RfidClass();     // Rfid Instance
            string selectedDevice;                          // selected device

            /* GetInstalledDevices */

            Console.WriteLine("==GetInstalledDevices()==");
            object[] arrDevices = (object[])rfid.GetInstalledDevices();
            if (rfid.ErrorCode == NOERROR)
            {
                Console.WriteLine("Succeed to GetInstalledDevices()");
                int index = 0;
                foreach (string device in arrDevices)
                {
                    Console.WriteLine(String.Format("[{0}] {1}", index, device));
                    index++;
                }

                // select device
                Console.WriteLine("Please Select Device");
                int selectedDeviceIndex = int.Parse(Console.ReadLine());
                selectedDevice = arrDevices[selectedDeviceIndex].ToString();
            }
            else
            {
                Console.WriteLine("Failed to GetInstalledDevices()");
                goto CleanUp;
            }


            // .... 
        }
    }
}

当我运行此代码时,出现了第一个问题:(它显示与下面的引用完全相同,抱歉,由于信誉不佳,我无法发布图片)

  

== GetInstalledDevices()==

     

成功获取GetInstalledDevices()

     

请选择设备

没有任何错误,但似乎程序无法找到我的设备,我不知道为什么会发生这种情况。

2,如何编写QL风格的命令?

我知道每种打印机都有自己的命令语言,所以在Brother网站上搜索后我找到了一个参考:

Brother QL Series Command Reference (QL-500/550/560/570/580N/ 650TD/700/1050/1060N)

我自己没有使用热敏打印机的经验,遗憾的是,此命令参考中没有任何示例,这使我很难弄清楚命令应该如何编写。

之前有没有人使用Brother QL系列打印机?

p.s:我使用的打印机是Brother QL 560

2 个答案:

答案 0 :(得分:1)

要与打印机通信,您需要做一些事情:

  1. 获取USB库,例如libusb(http://libusb.info/
  2. 安装一个驱动程序,允许您通过libusb访问打印机,例如Zadig(http://zadig.akeo.ie/
  3. 从互联网下载打印机的命令参考(" Brother QL系列命令参考")
  4. 使用命令参考的第7章中提供的信息和libusb附带的示例,制作一个小程序,通过USB检测并打开与打印机的通信通道。

    然后,使用本手册中提供的其他信息,向打印机发送一系列ESC命令,以配置它或打印标签。

    PS:如果你需要改善USB通信的背景,我推荐一个很好的参考叫做" USB in a Nutshell&#34 ;,可以在beyondlogic dot org上找到(我不能发布超过两个链路)。

答案 1 :(得分:0)

我认为OPOS (from Microsoft)应该是您的案例的解决方案之一,由Brother QL 560提供自己的opos驱动程序。一旦获得驱动程序(在dll中),您就可以像使用常规Web控件一样轻松开始开发。