SDKを使ってAndroidビットマップをプリンタ(モバイルBluetoothプリンタBixolon SPP R-200)に送信したいのですが、ビットマップをバイト配列に変換できます。参考のために(そして私が何を取っているのか理解するため)、Bixolonコマンドマニュアルhereを調べてください。バイト配列からxとyの上位バイトと下位バイトを決定する
次のコマンドを使用して、プリントアウトをどのように整列させるかを指示するコマンドをプリンタに送信します(左= 0、右= 2、中央= 1):
byte[] command = { 27, 97, 0 };
27と97はBixolonコマンドマニュアルのコマンドです。ゼロは「左揃え」を意味します。次に、SDKsのwrite(byte [])コマンドを使用してこのコマンドをプリンタに送信します(成功)。
私は問題を抱えていますどこ次のステップは次のとおりです。私は、プリンタに「印刷ラスタビットイメージ」コマンドを送信したいと最初の部分は簡単です:
byte[] command2 = { 29, 118, 48, 0, 0, 0, 0, 0 };
29、118と48一緒に前述のBixolonのマニュアルの126ページに記載されている "GS v 0"(上の数字にアスキー変換表を使用するとリテラル変換)というコマンドを作ります。私が想定
xL xH yL yH d1...d
:により置換されるマニュアルに従って、残りの4つのゼロがある:最初のゼロは、今203
私は立ち往生午前部に水平および垂直DPIを設定しますbe x Position Low Byte、x Position High Byte、y position Low byte etc ...(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位置の上位バイトと下位バイトを計算する方法ですか?
しかし、このコマンドをプリンタに送信すると、最後のステップでバイト配列に変換されたビットマップも正常に転送されます(少なくともIOエラーは発生しません)が、何も印刷されません用紙は移動し、用紙の左側には2つのピクセルが印刷されているように見えます)。だから私は多分xの上位バイトと下位バイトの上記の計算を疑われ、ビットマップのy座標が間違っている...
あなたの提案をお寄せいただきありがとうございます。私は試しましたが、まだ変更はありませんでしたが、これはプリンタの通信に関する別の問題が原因である可能性がありますので、あなたの答えは正しいかもしれません。 – AgentKnopf