我正在尝试向 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[]
发送到打印机接口(interface)。考虑到这一点,您的代码存在一些问题。
首先,您使用的是大 B Byte
数组(即 wrapper object ),而不是原始 byte
数组。
其次,在 Java 中,字节
是有符号的,因此您可以写入(无需转换)的最大文字 字节
是 0x7F
。要指定 0x84
的字节
,您必须显式转换它。
因此,您的数组文字应该是:
byte[] printInfoCommand =
new byte[] { 0x1b, 0x69, 0x7a, (byte) 0x84, 0x00 };
你可以传递这个数组:
myPrinter.writeBytes(printInfoCommand);
您的其他代码行看起来没有必要。
关于java - 将十六进制作为字节发送到打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936363/