Android печатать текст на принтере

Я занимаюсь разработкой приложения для ресторанов, которое печатает квитанции после покупки продуктов покупателем. Я добавил экран конфигурации в приложение, которое менеджер использует для настройки принтеров. Менеджер может распечатать тестовую страницу, чтобы проверить, правильно ли он ввел 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);
        }
    }

}

Проблема в том, что если я печатаю на сетевом принтере (автономном принтере без подключения к ПК), он печатает текст правильно. Здесь я использую ip и порт по умолчанию 9100. Но когда я печатаю на общем принтере, подключенном к ПК, он не печатает. Есть идеи, где я делаю не так...???

1 ответ

Судя по тому, что вы описали, похоже, что этот автономный принтер использует некий "сервис печати текста" на вашем заданном порту. Похоже, все, что вы отправляете на этот порт, будет напечатано как текст.

Принимая во внимание, что когда у вас есть "Общий" принтер на вашем компьютере с Windows, он реализуется с помощью службы Windows Printer или что-то в этом роде. Это больше не просто сокет / порт, где вы можете писать текст ASCII.

Другие вопросы по тегам