我想使用他们的SDK将Android位图发送到打印机(移动蓝牙打印机Bixolon SPP R-200)我可以将位图转换为字节数组。为了便于参考(并了解我所采取的措施),请查阅Bixolon Command手册here。这就是我如何进行:从字节数组中确定x和y的高字节和低字节
发送指令到打印机,告诉它,我多么希望我的打印输出对齐(左= 0,右= 2,中心= 1)使用以下命令:
byte[] command = { 27, 97, 0 };
27和97是来自Bixolon命令手册的命令 - 零表示“左对齐”。然后,我使用SDK写入(byte [])命令(成功)将此命令发送到打印机。
下一步是我在哪里遇到问题:我想发送的“打印光栅位图”命令到打印机和第一部分是容易的:
byte[] command2 = { 29, 118, 48, 0, 0, 0, 0, 0 };
29,118和48一起编制名为“GS v 0”的命令(在上述编号上使用ASCII转换图时的字面翻译),这在参考的Bixolon手册中的第126页中有介绍。第一零设置水平和垂直DPI到203
现在我坚持的部分:
xL xH yL yH d1...d
我假设到:根据手册,剩余的4个零必须被替换是x位低字节,x位高字节,y位低字节等等...(不知道d1 ... d代表什么?)。
在SDK他们正在填补这些最后4个字节用下面的代码:
int width = myBitmap.getWidth();
int height = myBitmap.getHeight();
int bytesOfWidth = width/8 + (width % 8 != 0 ? 1 : 0);
dimensionCommand[4] = (byte) (bytesOfWidth % 256);
dimensionCommand[5] = (byte) (bytesOfWidth/256);
dimensionCommand[6] = (byte) (height % 256);
dimensionCommand[7] = (byte) (height/256);
但我不明白为什么。这是如何计算x/y位置的高字节和低字节的?
但是 - 将此命令发送到打印机也是如此,在最后一步中,我的位图也被成功转换为字节数组get(也至少没有发生IO错误),但是没有任何内容正在打印(尽管纸张移动并且纸张的左侧似乎有两个像素被打印)。所以我怀疑可能为位图的X和Y坐标高低字节以上的计算是错误的...
感谢您的建议 - 我试过了,但仍然没有改变 - 但是这可能是因为打印机通信的另一个问题,所以您的答案可能是正确的,我会继续尝试更多。 – AgentKnopf 2012-02-22 16:43:10