Skip to content

Releases: shtrih-m/javapos_shtrih

Android ShtrihJavaPOS 468

07 Oct 22:22
Compare
Choose a tag to compare

[*] Ускорена работа по Bluetooth

ShtrihJavaPOS 467

03 Oct 12:51
Compare
Choose a tag to compare

[*] Исправлена печать чека коррекции v2, добавлена проверка кода ответа и отрезка

466

29 Sep 11:31
Compare
Choose a tag to compare
466
466

Android ShtrihJavaPOS 465

20 Sep 23:11
Compare
Choose a tag to compare

[+] Android: добавлена поддержка работы с устройством по USB

Для включения работы по USB необходимо:

  1. В jpos.xml указать класс порта:
    <prop name="portClass" type="String" value="com.shtrih.fiscalprinter.port.UsbPrinterPort"/>
  2. В portName указать идентификатор порта
UsbManager usbManager = (UsbManager) getApplicationContext().getSystemService(Context.USB_SERVICE);
List<UsbSerialDriver> usbs = UsbSerialProber.getDefaultProber().findAllDrivers(usbManager);

if (usbs.size() == 0) {
    Log.e(TAG, "Не найдено ни одного устройства");
    return;
}

int deviceId = usbs.get(0).getDevice().getDeviceId();
SysUtils.setFilesPath(this.getFilesDir().getAbsolutePath());
JposConfig.configure("ShtrihFptr", String.format(Locale.ENGLISH, "%d", deviceId), getApplicationContext());
  1. Устройство должно иметь разрешение на доступ:
private void setFilter() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(ACTION_USB_PERMISSION);
    filter.addAction(ACTION_USB_DETACHED);
    filter.addAction(ACTION_USB_ATTACHED);
    filter.addAction(ACTION_USB_STATE);
    registerReceiver(usbReceiver, filter);
}

private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context arg0, Intent arg1) {
        Log.d("onReceive", arg1.getAction());
        if (arg1.getAction().equals(ACTION_USB_PERMISSION)) {
            boolean granted = arg1.getExtras().getBoolean(UsbManager.EXTRA_PERMISSION_GRANTED);
            if (granted) // User accepted our USB connection. Try to open the device as a serial port
            {
                Intent intent = new Intent(ACTION_USB_PERMISSION_GRANTED);
                arg0.sendBroadcast(intent);
                Log.d(TAG, "permission granted for USB ");
            } else // User not accepted our USB connection. Send an Intent to the Main Activity
            {
                Intent intent = new Intent(ACTION_USB_PERMISSION_NOT_GRANTED);
                arg0.sendBroadcast(intent);
                Log.d(TAG, "permission not granted for USB");
            }
        }

        if (arg1.getAction().equals(ACTION_USB_STATE)) {
            findSerialPortDevice(); // A USB device has been attached. Try to open it as a Serial port
        }

        if (arg1.getAction().equals(ACTION_USB_ATTACHED)) {
            findSerialPortDevice(); // A USB device has been attached. Try to open it as a Serial port
        }
        if (arg1.getAction().equals(ACTION_USB_DETACHED)) {
            // Usb device was disconnected. send an intent to the Main Activity
            Intent intent = new Intent(ACTION_USB_DISCONNECTED);
            arg0.sendBroadcast(intent);
        }
    }
};

private void findSerialPortDevice() {
    UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
    // This snippet will try to open the first encountered usb device connected, excluding usb root hubs
    HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
    if (!usbDevices.isEmpty()) {
        for (Map.Entry<String, UsbDevice> entry : usbDevices.entrySet()) {
            UsbDevice device = entry.getValue();
            int deviceVID = device.getVendorId();
            int devicePID = device.getProductId();

            Log.d(TAG, "opening device VID: " + deviceVID + ", PID " + devicePID);
            PendingIntent mPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
            usbManager.requestPermission(device, mPendingIntent);
        }
    } else {
        Log.d(TAG, "no usb devices");
    }
}

ShtrihJavaPOS 464

14 Sep 12:37
Compare
Choose a tag to compare

[*] Исправлен #17: поправлено центрирование сгенерированных ШК
[-] FSPrintTags: больше не печатает тэги 1084, 1085, 1086, 1203
[+] Добавлены directIO команды:
* SMFPTR_DIO_FS_READ_DAY_OPEN - поиск в ФН последнего документа открытия смены
* SMFPTR_DIO_FS_READ_DAY_CLOSE- поиск в ФН последнего документа закрытия смены
* SMFPTR_DIO_FS_READ_RECEIPT - поиск в ФН последнего чека
[+] Добавлены новые параметры в SMFPTR_DIO_READ_FS_PARAMS
BREAKING CHANGES:
[!] FSDocumentInfo: изменен возвращаемый тип getDocumentNumber с int на long, т.к. номер документа, согласно протоколу ФН, 4 байта
[!] FSDocumentInfo: изменен тип возвращаемого значения getDocumentType с FSDocType на int, т.к. FSDocType не соответствует данной команде

ShtrihJavaPOS 463

05 Sep 15:24
Compare
Choose a tag to compare

[+] Добавлена опция FSTagsPlacement позволяющая печатать описания тэгов в теле чека в момент когда был передан тэг, работает если включена опция печати описания переданных в чек тэгов FSPrintTags.

ShtrihJavaPOS 462

04 Sep 16:10
Compare
Choose a tag to compare

[*] Исправлен баг, когда при печати документа после закрытия чека не игнорировались ошибки печати
[+] Добавлен метод отправки принтеру команды "Продолжить печать" continuePrint
[+] Добавлен метод чтения TLV документа fsReadDocumentTLV

ShtrihJavaPOS 461

23 Aug 17:43
Compare
Choose a tag to compare

[*] Исправлена печать текста шрифтом в чеке
[*] Исправлен #20: убраны захардкоженные имена типов оплаты в СКЛ
[+] Добавлен метод printRecMessage печатающий текст указанным шрифтом
[+] Добавлено свойство openReceiptOnBegin включающее открытие чека при вызове beginFiscalReceipt
[+] Добавлена возможность передачи признака типа оплаты и признака способа оплаты для ФФД 1.05

ShtrihJavaPOS 460

15 Aug 17:21
Compare
Choose a tag to compare

Исправлен #18: типы оплаты не прописываются в таблицу ККТ

ShtrihJavaPOS 459

14 Aug 12:50
Compare
Choose a tag to compare

Исправлена печать неправильного количества товара в СКЛ.