将十六进制作为字节发送到打印机

Sending hex as byte to a printer

我正在尝试写入 Brother 标签打印机,即使 Brother 也提供了一个 SDK,他们没有开发人员的新闻编辑室,并且支持发送给常规打印机支持。

我必须将以下十六进制 1b、69、7a、84、00 作为多行之一发送。

我尝试执行以下操作,但在十六进制 84 上收到一条错误消息,表示不是一个字节。我从 Brothers 标签程序打印到文件以在十六进制编辑器中查看它,十六进制编辑器显示 1B 69 7A 84 00

final ArrayList<Byte> commands = new ArrayList<Byte>();
Byte[] printinfoCommand = new Byte[] {0x1b, 0x69, 0x7a, 0x84, 0x00];
AddRange(commands, printinfoCommand);
byte[] commandToSendToPrinter = convertFromListByteArrayTobyteArray(commands);
myPrinter.writeBytes(commandToSendToPrinter);

public static void AddRange(ArrayList<Byte> array, Byte[] newData) {
    for(int index=0; index<newData.length; index++) {
        array.add(newData[index]);
    }
}

假设您需要向打印机接口发送一个byte[]。考虑到这一点,您的代码存在一些问题。

首先,您使用的是大 B Byte 数组(即 wrapper object),而不是原始 byte 数组。

其次,在 Java 中,一个 byte 是有符号的,所以你可以写的最大文字 byte(没有转换)是 0x7F。要指定 0x84byte,您必须明确地转换它。

因此,您的数组文字应为:

byte[] printInfoCommand = 
    new byte[] { 0x1b, 0x69, 0x7a, (byte) 0x84, 0x00 };

你可以传递这个数组:

myPrinter.writeBytes(printInfoCommand);

您的其他代码行看起来没有必要。