将十六进制作为字节发送到打印机
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
。要指定 0x84
的 byte
,您必须明确地转换它。
因此,您的数组文字应为:
byte[] printInfoCommand =
new byte[] { 0x1b, 0x69, 0x7a, (byte) 0x84, 0x00 };
你可以传递这个数组:
myPrinter.writeBytes(printInfoCommand);
您的其他代码行看起来没有必要。
我正在尝试写入 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
。要指定 0x84
的 byte
,您必须明确地转换它。
因此,您的数组文字应为:
byte[] printInfoCommand =
new byte[] { 0x1b, 0x69, 0x7a, (byte) 0x84, 0x00 };
你可以传递这个数组:
myPrinter.writeBytes(printInfoCommand);
您的其他代码行看起来没有必要。