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

标签 java android printing

我正在尝试向 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/

相关文章:

java - 服务层应该将对象或 ID 作为输入吗?响应应该是对象吗?

java - 为现有插件创建附加组件

android - 如何配置 Android Studio 以在其他 jetbrain ide 附带的自定义 jdk 上运行?

JavaScript 打印被 Chrome 阻止,解决方法?

java - JPanel 字体与打印输出不匹配

java - Android - 下拉菜单

java - 如何使用 Spring Boot 和嵌入式 Tomcat 配置此属性?

java - 如何在 Android Studio 中设置全屏背景 gif

Android 菜单项 showAsAction ="always"不起作用

c# - PrintQueue打印机是默认打印机吗?