Linux печать в Java - PullRequest
       1

Linux печать в Java

2 голосов
/ 03 июня 2011

Я использую термопринтер, который выдвигает ящик до или после печати.Но я хочу остановить это, и я посылаю шестнадцатеричный код, чтобы вывести ничью, когда это необходимо.Последовательность, которую я использую: openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045"; Это нормально работает в Windows, но если я запускаю это в Linux, я получаю некоторую ошибку не в приложении, а в драйвере принтера, говорящем, что «возникла проблема при обработке документа« Печать Java »»,О чем это все ?Я думаю, что этот код как-то связан с тем, что он хорошо работает на всех платформах.Код, который я использую, показан ниже:

public OpenCashDrawer() {
    PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
    System.out.println("printservice"+pservice);
    try {
        DocPrintJob job = pservice.createPrintJob();
        String openDrawerCommand = ((char)0x1B70111)+"";
        //
        openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
        byte by[] = openDrawerCommand.getBytes();
        //char[] printdata = "hello world\n".toCharArray();
        // System.out.println(by[1]);
        DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
        //PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
        //DocPrintJob pjob = pservice.createPrintJob();
        //DocFlavor flavor = DocFlavor.CHAR_ARRAY.TEXT_PLAIN;
        Doc doc = new SimpleDoc(by, flavor, null);
        job.print(doc, null);
    } catch (Exception e) {
        System.out.println("Whoa bro. The printer is balls. Check it:");
        e.printStackTrace();
    }
}

1 Ответ

1 голос
/ 25 мая 2012

Я получил это работает по следующему коду.

public OpenCashDrawer() {
    SwingWorker worker = new SwingWorker<String, Void>() {

        public String doInBackground() {
            try {
                String sql = "INSERT INTO pos_cashdraw SET user_id='"+global_variables.user_id+"', message='Opened For Sale'";
                mysql_query.update_mysql(variables.con.conn, sql);
                String out = "";
                do {
                    out = "";
                    //System.out.println("opened cashdraw");
                    //String openDrawerCommand = "\u001B\u0070\u0030\u0042\u0045";
                    String openDrawerCommand2 = "\u0017";
                    //String cmd = "echo -e " + openDrawerCommand2 + " > /dev/usblp0";
                    String cmd = "echo -e " + openDrawerCommand2 + " > /dev/ttyS0";
                    ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);

                    pb.redirectErrorStream(true);
                    if (pb != null) {
                        Process shell = pb.start();
                        InputStream shellin = shell.getInputStream();
                        int c;
                        while ((c = shellin.read()) != -1) {
                            System.out.write(c);
                            out += (char) c;
                        }
                        shellin.close();
                    }
                } while (out.contains("busy"));
            } catch (IOException ex) {
                System.err.println("Not supported in your operating system");
            }
            return "Opened";
        }
    };
    worker.execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...