首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解释ESC/POS命令

解释ESC/POS命令
EN

Stack Overflow用户
提问于 2019-06-13 10:21:47
回答 1查看 10.4K关注 0票数 2

我正在构建一个应用程序,它使用蓝牙热打印机打印收据,我能够连接和打印使用打印机,但我不知道所有这些ESC/POS命令意味着什么。

打印机在黑色背景上打印我的文本白色,我实际上希望文本是黑色和背景白色。我不知道如何使用ESC/POS命令实现这种格式设置。

这是我的打印代码:

代码语言:javascript
运行
复制
if (btsocket == null) {
            Intent BTIntent = new Intent(getApplicationContext(), DeviceList.class);
            this.startActivityForResult(BTIntent, DeviceList.REQUEST_CONNECT_BT);
        } else {
            OutputStream opstream = null;
            try {
                opstream = btsocket.getOutputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }
            outputStream = opstream;

            //print command
            try {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                outputStream = btsocket.getOutputStream();

                byte[] format = { 27, 33, 0 };
                byte[] printformat = {0x1B, 0 * 21, FONT_TYPE};
                outputStream.write(format);

                //print title
                printUnicode();
                //print normal text
                outputStream.write(format);
                printCustom(message, 0, 0);
                //printPhoto(R.drawable.img);
                printNewLine();
                outputStream.write(format);
                printText("     >>>>   Thank you  <<<<     "); // total 32 char in a single line
                //resetPrint(); //reset printer
                //printUnicode();
                printNewLine();
                printNewLine();

                outputStream.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

第一行printUnicode();实际上只在白色背景上打印精细的黑色字符,但其余的文件则打印在带有白色字符的黑色背景上。是否有解释所有ESC/POS命令的文档?

EN

回答 1

Stack Overflow用户

发布于 2020-01-13 17:57:43

您可以检查这些页面中的ESC/POS命令,对我来说非常有用:

https://github.com/escpos/escpos/blob/master/lib/escpos.rb

https://github.com/stefanosbou/esc-pos-java/blob/master/src/main/java/io/github/escposjava/print/Commands.java

还有我的代码,希望能帮上忙:

代码语言:javascript
运行
复制
public class MainActivity extends AppCompatActivity {
Button printButton;

final byte[] ALIGN_CENTER = {0x1b, 0x61, 0x01};
final byte[] ALIGN_LEFT = {0x1b, 0x61, 0x00};
final byte[] ALIGN_RIGHT = {0x1b, 0x61, 0x02};
final byte[] TEXT_SIZE_NORMAL = {0x1b, 0x21, 0x00};
final byte[] TEXT_SIZE_LARGE = {0x1b, 0x21, 0x30};
final byte[] INVERTED_COLOR_ON = {0x1d, 0x42, 0x01};
final byte[] BEEPER = {0x1b,0x42,0x05,0x05};
final byte[] INIT = {0x1b, 0x40};
//final byte[] CUT_PAPER = {0x1d, 0x56, 0x00};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    printButton = findViewById(R.id.main_print_button);

    printButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new PrintTask().execute();
        }
    });
}

private class PrintTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... voids) {
        try {
            String text1 = "No setting size text" + "\n\n";
            String text2 = "Inverted color text" + "\n\n";
            String text3 = "Large size text" + "\n\n\n";

            Socket socket = new Socket("192.168.1.241", 9100);              //one socket responsible for one device
            OutputStream outputStream = socket.getOutputStream();

            outputStream.write(text1.getBytes("GBK"));                      //when printing text, "write()" will print before "println()"

            outputStream.write(INVERTED_COLOR_ON);

            outputStream.write(text2.getBytes("GBK"));

            outputStream.write(new byte[]{0x1D, 0x56, 0x41, 0x10});                    //"0x1d, 0x56, 0x41" is for paper cut and "0x10" is for line feed

            //outputStream.write(BEEPER);                                               //hardware turn on

            outputStream.write(INIT);

            outputStream.close();

            socket.close();
        } catch (UnknownHostException e) {
            Log.e("Print()", "UnknownHostException");
        } catch (IOException e) {
            Log.e("Print()", "IOException");
        }

        return null;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56578406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档