首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用escpos-2.2jar和jSerialComm-2.5.0jar在热敏小票打印机上打印小票

如何使用escpos-2.2jar和jSerialComm-2.5.0jar在热敏小票打印机上打印小票
EN

Stack Overflow用户
提问于 2019-08-10 16:31:30
回答 1查看 230关注 0票数 0

我正在用Java构建一个POS桌面应用程序,它使用热敏打印机打印交易收据。我发现我可以使用escpos和JSerialComm Java来实现这一点。我将示例代码从GitHub复制到试用版,以确定API是否可以正常工作。下面是应该可以工作的代码,但返回了一个NullPointerExceptionError。

我不知道我做错了什么。那么,我应该怎么做才能至少打印出"Hello World“,看看我的应用程序是否真的可以连接到打印机。帮助!

代码语言:javascript
复制
package com;

import com.fazecast.jSerialComm.SerialPort;
import com.github.terrytsai.escpos.EscPosWriter;
import com.github.terrytsai.escpos.enums.CharacterCodeTable;
import com.github.terrytsai.escpos.enums.CutA;
import com.github.terrytsai.escpos.enums.Height;
import com.github.terrytsai.escpos.enums.Justification;
import com.github.terrytsai.escpos.enums.Pin;
import com.github.terrytsai.escpos.enums.PulseTime;
import com.github.terrytsai.escpos.enums.Width;
import com.github.terrytsai.escpos.serial.SerialFactory;
import com.github.terrytsai.escpos.serial.config.SerialConfig;
import java.io.OutputStream;

public class PrinterClass {

    private static PrinterClass printer = null;
    private static  OutputStream out;
    private static EscPosWriter escPos;

    private PrinterClass(){
        initSerial();
    }

    protected static void writeReceipt(){
        System.out.println("Receipt started...");
        escPos = new EscPosWriter(out)
        .initialize()
        .setCharacterCodeTable(CharacterCodeTable.PC437)
        .setJustification(Justification.CENTER)
        .setCharacterSize(Width.X3, Height.X3)
        .setEmphasize(true)
        .text("HELLO WORLD")
        .printAndFeedLines(5)
        .cut(CutA.PARTIAL)
        .sendRealTimeRequestPulse(Pin.TWO, PulseTime.FOUR);
        System.out.println("Receipt done!");
    }

    private static PrinterClass getInstance(){
        if(printer == null){
            printer = new PrinterClass();
        }
        return printer;
    }

    private void initSerial(){
        SerialPort port = SerialFactory.com(3, SerialConfig.CONFIG_9600_8N1());
        port.openPort();
        out = port.getOutputStream();
        port.closePort();
      }

    public static void main(String [] args){
        PrinterClass pc = PrinterClass.getInstance();
        pc.writeReceipt();
    }
}

“我希望它打印收据。但我得到一个错误:”

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException
    at com.github.terrytsai.escpos.EscPosWriter.write(EscPosWriter.java:1345)
    at com.github.terrytsai.escpos.EscPosWriter.initialize(EscPosWriter.java:1213)
    at com.PrinterClass.writeReceipt(PrinterClass.java:30)
    at com.PrinterClass.main(PrinterClass.java:58)

EN

回答 1

Stack Overflow用户

发布于 2019-08-10 17:29:39

PC上通常有几个com端口,试着找出哪个是您的打印机端口,它不一定是3。相应地更新initSerial方法。

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

https://stackoverflow.com/questions/57440607

复制
相关文章

相似问题

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