我试图写入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]);
}
}
答案 0 :(得分:1)
假设您需要将byte[]
发送到打印机界面。考虑到这一点,您的代码存在一些问题。
首先,您使用的是大B Byte
(wrapper object)数组,而不是原始byte
数组。
其次,在Java中,byte
已签名,因此您可以编写的最大文字byte
(不会强制转换)为0x7F
。要指定byte
0x84
,您必须明确地投射它。
因此,您的数组文字应为:
byte[] printInfoCommand =
new byte[] { 0x1b, 0x69, 0x7a, (byte) 0x84, 0x00 };
你可以传递这个数组:
myPrinter.writeBytes(printInfoCommand);
您看起来不必要的其他代码行。