shtrih-m / javapos_shtrih

Реализация JavaPOS драйвера принтера фискального регистратора для устройств Штрих-М
http://www.shtrih-m.ru
MIT License
33 stars 16 forks source link

Интеграция с ОФД #11

Closed mifkamaz closed 7 years ago

mifkamaz commented 7 years ago

Есть ли интеграция с ОФД в вашем драйвере (передача чеков в ОФД через Bluetooth)

VitalyKravtsov2016 commented 7 years ago

Добрый день. Да, интеграция есть. В настройках драйвера параметр FSServiceEnabled.

Tieru commented 7 years ago

А как задавать хост и порт ОФД?

nyxiscoo1 commented 7 years ago

Хост и порт ОФД берутся из соответствующей таблицы, они прописываются при фискализации, для тестов их можно выставить вручную использую команду записи таблиц или виндовый драйвер, но в боевую эти параметры должны меняться путем перерегистрации.

mifkamaz commented 7 years ago

Чеки для отправки есть, но они не отправляются Касса фискализирована, ОФД настроен

В FSService вызов byte[] data = printer.fsReadBlockData() всегда возвращает массив нулевой длинны

Код соединения с кассой

printerImpl = new FiscalPrinterImpl();

JposEntry jposEntry = JposConfig.configure(
        operatorPassword,
        kktProfile.getGeneralPassword(),
        "ShtrihFptr",
        kktProfile.getSettings(),
        App.getInstance().getApplicationContext()
);

if (printerImpl.getState() != JposConst.JPOS_S_CLOSED) {
    printerImpl.close();
}
printerImpl.setJposEntry(jposEntry);
printerImpl.open("ShtrihFptr", new EventCallbacks() {
    @Override
    public void fireDataEvent(DataEvent dataEvent) {
        System.out.println("fireDataEvent " + dataEvent);

    }

    @Override
    public void fireDirectIOEvent(DirectIOEvent directIOEvent) {
        System.out.println("fireDirectIOEvent " + directIOEvent);

    }

    @Override
    public void fireErrorEvent(ErrorEvent errorEvent) {
        System.out.println("ErrorEvent " + errorEvent.getErrorCode());
    }

    @Override
    public void fireOutputCompleteEvent(OutputCompleteEvent outputCompleteEvent) {
        System.out.println("fireOutputCompleteEvent " + outputCompleteEvent);

    }

    @Override
    public void fireStatusUpdateEvent(StatusUpdateEvent statusUpdateEvent) {
        System.out.println("fireStatusUpdateEvent " + statusUpdateEvent);
    }

    @Override
    public BaseControl getEventSource() {
        return null;
    }
});
printerImpl.claim(3000);
printerImpl.setDeviceEnabled(true);

Конфигурация драйвера

public static JposEntry configure(String operatorPassword, String adminPass, String deviceName, String portName, Context context)
        throws Exception {
    copyAsset("jpos.xml", SysUtils.getFilesPath() + "jpos.xml", context);
    String fileUrl = "file://" + SysUtils.getFilesPath() + "jpos.xml";
    System.setProperty(
            JposPropertiesConst.JPOS_POPULATOR_FILE_URL_PROP_NAME, fileUrl);

    System.setProperty(
            JposPropertiesConst.JPOS_REG_POPULATOR_CLASS_PROP_NAME,
            "jpos.config.simple.xml.SimpleXmlRegPopulator");

    JposEntryRegistry registry = JposServiceLoader.getManager()
            .getEntryRegistry();
    if (registry.hasJposEntry(deviceName)) {
        JposEntry jposEntry = registry.getJposEntry(deviceName);
        if (jposEntry != null) {
            jposEntry.addProperty("portName", portName);
            jposEntry.modifyPropertyValue("portName", portName);
            jposEntry.addProperty("operatorPassword", operatorPassword);
            jposEntry.modifyPropertyValue("operatorPassword", operatorPassword);
            jposEntry.addProperty("sysAdminPassword", adminPass);
            jposEntry.modifyPropertyValue("sysAdminPassword", adminPass);
            jposEntry.addProperty("FSConnectTimeout", "3000");
            jposEntry.modifyPropertyValue("FSConnectTimeout", "3000");
            jposEntry.addProperty("FSServiceEnabled", "1");
            jposEntry.modifyPropertyValue("FSServiceEnabled", "1");
        }
        return jposEntry;
    }
    return null;
}
nyxiscoo1 commented 7 years ago

Странно, надо б лог глянуть и какая версия прошивки у устройства?

mifkamaz commented 7 years ago

Версия ПО: А.4 Сборка ПО: 20014 Дата ПО: 07.04.2017

nyxiscoo1 commented 7 years ago

А лог? Нужно посмотреть какие байты передаются и какие ответы приходят.

mifkamaz commented 7 years ago

Обновили драйвер до 411, все ок