Android打印机上的打印文本

时间:2013-06-17 11:14:26

标签: android network-printers

我正在开发一个餐厅应用程序,在客户购买食物后打印收据。我在应用程序中添加了一个配置屏幕,管理员用它来配置打印机。经理可以打印测试页以测试他是否输入了正确的IP和端口。这是我打印测试页的代码:

private class PrintTask extends AsyncTask<Printer, Boolean, String> {

    @Override
    protected String doInBackground(Printer... params) {

        try {
            publishProgress(true);
            Socket sock = new Socket(params[0].getIp(), Integer.parseInt(params[0].getPort()));

            PrintWriter oStream = new PrintWriter(sock.getOutputStream());
            oStream.printf("--------------------------------\r\n");
            oStream.printf("***        TEST PRINT       ***\r\n");
            oStream.printf("You have configured your \n\r");
            oStream.printf(params[0].getName());
            oStream.printf("\r\nprinter successfully\n\r");
            oStream.printf("|           Thanks             |\r\n");
            oStream.printf("--------------------------------\r\n");
            oStream.close();
            sock.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        publishProgress(false);
        return "";
    }

    @Override
    protected void onProgressUpdate(Boolean... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
        if(!values[0]) {
            waitView.setVisibility(View.GONE);
        }
        else {
            waitView.setVisibility(View.VISIBLE);
        }
    }

}

问题是如果我在网络打印机上打印(独立打印机没有连接到任何PC),它会正确打印文本。这里我使用的是ip和默认端口9100.但是当我打印到连接到PC的共享打印机时,它无法打印。任何想法,我做错了...... ???

1 个答案:

答案 0 :(得分:0)

从您的描述看起来,独立打印机在您的给定端口上运行某种“文本打印服务”。因此,您发送到此端口的所有内容都将以文本形式打印出来。

当你的Windows机器上有“共享”打印机时,它是使用Windows打印机服务实现的,或者是这样的。它不仅仅是简单的套接字/端口,您可以在其中编写ASCII文本。