2

小さなプリンターが直接接続されている Android デバイスがあります。プリンターは ESC/POS 言語の縮小バージョンと思われるものを使用し、プリンターとの通信はシリアル ポート接続を開くことによって行われます。

1 行のテキストを印刷したり、バーコードを印刷したりすることはできますが、複数行を次々に印刷することはできません。例外はスローされず、プリンターは送信された行の 1 つを単に印刷してから停止し、その後の試みは同じ結果になります。

多くの異なるコマンドの組み合わせとシーケンスを試した後、これを機能させることができませんでした。Java の経験はありますが、専門家ではありません。

以下のコードに明らかに間違っている点はありますか?

public void startPrint(String barcode){

        sp = new fingerprint_native();
    sp.OpenSerialPort("/dev/eser1")             

        byte[] space_cmd = new byte[3];
        space_cmd[0] = 27;
        space_cmd[1] = 74;
        space_cmd[2] = 50;

        String compName = "Test Company";
        String compAdd1 = "123 Main St.";
        String compAdd2 = "Cityname, ON A4A 4A4";
        String ticketNum = "1234567";
        byte[] cn = compName.getBytes();
        byte[] ca1 = compAdd1.getBytes();
        byte[] ca2 = compAdd2.getBytes();
        byte[] tn = ticketNum.getBytes();

        byte[] t = {0x0a, 0x0d};


        try {
            sp.WriteSerialPort(yn);
            sp.WriteSerialPort(t);
            sp.WriteSerialPort(ya1);
            sp.WriteSerialPort(ya2);
            sp.WriteSerialPort(tn);
            sp.WriteSerialPort(space_cmd);

        } catch (Exception e) {
            Log.e(TAG, "write text failed");
        }

    byte[] cmd12 = {0x1d, 0x6b, 68, 7};
    byte[] cmd11 = barcode.getBytes();

    byte[] bc = new byte[cmd12.length+cmd11.length];
    System.arraycopy(cmd12, 0, bc, 0, cmd12.length);
    System.arraycopy(cmd11, 0, bc, cmd12.length, cmd11.length);

        try {
            sp.WriteSerialPort(bc);
        } catch (Exception e) {
            Log.e(TAG, "write barcode failed");
        }

    } 
4

0 に答える 0