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

时间:2015-01-14 05:26:46

标签: java android printing

我试图写入Brother标签打印机,甚至Brother也提供SDK,他们没有开发人员的新闻编辑室,并且支持会发送到常规打印机支持。

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

我尝试执行以下操作,但我在hex 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]);
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

其次,在Java中,byte已签名,因此您可以编写的最大文字byte(不会强制转换)为0x7F。要指定byte 0x84,您必须明确地投射它。

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

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

你可以传递这个数组:

myPrinter.writeBytes(printInfoCommand);

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