shtrih-m / javapos_shtrih

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

Как вычитывать Индикатор заряда батареи? #30

Open iboxmpos opened 7 years ago

iboxmpos commented 7 years ago

Пробовали текущим методом, но статус всегда "Заряд в норме"

  1. На какой прошивке работает корректно?
  2. Каким методом вычитывать?
  3. Какие есть состояния?
nyxiscoo1 commented 7 years ago

Пробовали текущим методом

Что за метод? У мобайла нет метода чтения заряда батареи.

iboxmpos commented 7 years ago

private static final double BATTERY_VOLTAGE = 7.4d;

ShortPrinterStatus status = shtrihFiscalPrinter.readShortPrinterStatus(); int batteryLvl = BigDecimal.valueOf(status.getBatteryVoltage() / BATTERY_VOLTAGE).setScale(2, RoundingMode.HALF_UP).scaleByPowerOfTen(2).intValue(); this.batteryLvl = batteryLvl < 10 ? BATTERY_LOW : BATTERY_OK; штрих не возвращает уровень заряда, возвращает напряжение батареи

iboxmpos commented 7 years ago

Так как мне нужно его читать?)

Best regards,

Dmitry Nazarov,

DCTO at Smartfin JSC (2can&ibox brands)

8 800 303-45-26 (доб. 222)

8 926-526-77-55

Skype: dimitry.nazaroff

Moscow, Andropova avenue, 18 bldg. 7, office 804

http://www.2can.ru/ www.2can.ru | http://www.iboxmpos.com/ www.iboxmpos.com

From: Pavel [mailto:notifications@github.com] Sent: Monday, October 9, 2017 4:19 PM To: shtrih-m/javapos_shtrih javapos_shtrih@noreply.github.com Cc: ibox nazarov@iboxmpos.com; Author author@noreply.github.com Subject: Re: [shtrih-m/javapos_shtrih] Как вычитывать Индикатор заряда батареи? (#30)

Спросил разработчика, вот его ответ: [14:44:21] Андрей: можно косвенно по напряжению аккумулятора [14:44:48 | Изменены 14:52:56] Андрей: по разрядной характеристике Li-Ion акка [14:53:32] Андрей: в процентах показать не получится, т.к. нужна специальная микросхема, которая замеряет сколько Вт*ч закачано в акк и сколько выкачено [14:54:44] Андрей: но можно предложить сделать 3 зоны - заряжен хорошо, разряжен на половину, близок к разряду [14:55:56] Андрей: по просадке напряжения (поле 4, 8) можно судить о старости аккумулятора [14:56:10] p.zhirkov: Если это реализовывать, то ты у себя в прошивке или клиент? [14:56:18] Андрей: клиент

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/shtrih-m/javapos_shtrih/issues/30#issuecomment-335155572 , or mute the thread https://github.com/notifications/unsubscribe-auth/AckzCYU8UfQgxRwwMmP5xuwRPTp8zFFVks5sqh1UgaJpZM4Pw7ws . https://github.com/notifications/beacon/AckzCWlK0fb-TJ0L0sDayd_HSwibceloks5sqh1UgaJpZM4Pw7ws.gif

nyxiscoo1 commented 7 years ago

напряжение аккумулятора вычитывается из запроса статуса ФР и из 11 таблицы

Попробуй из таблицы, оно там вроде как поточнее.

iboxmpos commented 7 years ago

А дай команду полную, плиз! И как мне грейды уровня заряда разделять?

Best regards,

Dmitry Nazarov,

DCTO at Smartfin JSC (2can&ibox brands)

8 800 303-45-26 (доб. 222)

8 926-526-77-55

Skype: dimitry.nazaroff

Moscow, Andropova avenue, 18 bldg. 7, office 804

http://www.2can.ru/ www.2can.ru | http://www.iboxmpos.com/ www.iboxmpos.com

From: Pavel [mailto:notifications@github.com] Sent: Monday, October 9, 2017 6:24 PM To: shtrih-m/javapos_shtrih javapos_shtrih@noreply.github.com Cc: ibox nazarov@iboxmpos.com; Author author@noreply.github.com Subject: Re: [shtrih-m/javapos_shtrih] Как вычитывать Индикатор заряда батареи? (#30)

напряжение аккумулятора вычитывается из запроса статуса ФР и из 11 таблицы

Попробуй из таблицы, оно там вроде как поточнее.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/shtrih-m/javapos_shtrih/issues/30#issuecomment-335191358 , or mute the thread https://github.com/notifications/unsubscribe-auth/AckzCbAOtPMVIKbHLnP3Sz6vXz51uHayks5sqjqOgaJpZM4Pw7ws . https://github.com/notifications/beacon/AckzCQ-8JpLRaj2tQurf2pL7fA6NoHU7ks5sqjqOgaJpZM4Pw7ws.gif

iboxmpos commented 6 years ago

Привет! Так и не понял ка быть с зарядом батареи?

Дай команду полную, плиз! И как мне грейды уровня заряда разделять и превращать в проценты или статусы (полный/норм/разряжен) по напряжению из таблицы 11?

Best regards,

Dmitry Nazarov,

DCTO at Smartfin JSC (2can&ibox brands)

8 800 303-45-26 (ext. 222)

8 926-526-77-55

Skype: dimitry.nazaroff

Moscow, Andropova avenue, 18 bldg. 7, office 804

http://www.2can.ru/ www.2can.ru | http://www.iboxmpos.com/ www.iboxmpos.com

From: Dmitry Nazarov [mailto:d.nazarov@iboxmpos.com] Sent: Monday, October 9, 2017 6:29 PM To: 'shtrih-m/javapos_shtrih' reply@reply.github.com; 'shtrih-m/javapos_shtrih' javapos_shtrih@noreply.github.com Cc: 'ibox' nazarov@iboxmpos.com; 'Author' author@noreply.github.com Subject: RE: [shtrih-m/javapos_shtrih] Как вычитывать Индикатор заряда батареи? (#30) Importance: High

А дай команду полную, плиз! И как мне грейды уровня заряда разделять?

Best regards,

Dmitry Nazarov,

DCTO at Smartfin JSC (2can&ibox brands)

8 800 303-45-26 (доб. 222)

8 926-526-77-55

Skype: dimitry.nazaroff

Moscow, Andropova avenue, 18 bldg. 7, office 804

http://www.2can.ru/ www.2can.ru | http://www.iboxmpos.com/ www.iboxmpos.com

From: Pavel [mailto:notifications@github.com] Sent: Monday, October 9, 2017 6:24 PM To: shtrih-m/javapos_shtrih <javapos_shtrih@noreply.github.com mailto:javapos_shtrih@noreply.github.com > Cc: ibox <nazarov@iboxmpos.com mailto:nazarov@iboxmpos.com >; Author <author@noreply.github.com mailto:author@noreply.github.com > Subject: Re: [shtrih-m/javapos_shtrih] Как вычитывать Индикатор заряда батареи? (#30)

напряжение аккумулятора вычитывается из запроса статуса ФР и из 11 таблицы

Попробуй из таблицы, оно там вроде как поточнее.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/shtrih-m/javapos_shtrih/issues/30#issuecomment-335191358 , or mute the thread https://github.com/notifications/unsubscribe-auth/AckzCbAOtPMVIKbHLnP3Sz6vXz51uHayks5sqjqOgaJpZM4Pw7ws . https://github.com/notifications/beacon/AckzCQ-8JpLRaj2tQurf2pL7fA6NoHU7ks5sqjqOgaJpZM4Pw7ws.gif

nyxiscoo1 commented 6 years ago

Вроде разобрался, во-первых, если использовать твой пример, то нужно вместо getBatteryVoltage использовать getPowerVoltage и потом сравнивать не < 10, <100.

final double BATTERY_VOLTAGE = 7.4d;

int batteryLvl = BigDecimal.valueOf(status.getPowerVoltage() / BATTERY_VOLTAGE).setScale(2, RoundingMode.HALF_UP).scaleByPowerOfTen(2).intValue();
Log.d(TAG, batteryLvl < 100 ? "BATTERY_LOW" : "BATTERY_OK");

Вообще не вижу смысла в таких расчетах, зачем что-то преобразовывать, если можно напрямую сравнить значения.

final double BATTERY_VOLTAGE = 7.4d;

Log.d(TAG, status.getPowerVoltage() < BATTERY_VOLTAGE  ? "BATTERY_LOW" : "BATTERY_OK");

Разработчик же советовал брать значение из таблицы ФР, там оно вроде как точнее, вот так:

final double BATTERY_VOLTAGE = 7.4d;

int voltageValue = Integer.parseInt(printer.readTable(11, 1, 4));
double voltageAsInStatus = voltageValue * 24.0 / 0xD8;

int batteryLvl = BigDecimal.valueOf(voltageAsInStatus / BATTERY_VOLTAGE).setScale(2, RoundingMode.HALF_UP).scaleByPowerOfTen(2).intValue();
Log.d(TAG, batteryLvl < 100 ? "BATTERY_LOW" : "BATTERY_OK");

что если убрать лишние расчеты может быть редуцировано до:

final double BATTERY_VOLTAGE = 66.6; // Соответствует 7.4: 7.4 * 0xD8 / 24.0 = 66.6

int voltageValue = Integer.parseInt(printer.readTable(11, 1, 4));

Log.d(TAG, voltageValue < BATTERY_VOLTAGE ? "BATTERY_LOW" : "BATTERY_OK");
iboxmpos commented 6 years ago

Привет! Ну наконец-то, спасибо огромное! Отправлю своим на анализ!!!

Если что вернусь к таску!

Best regards,

Dmitry Nazarov,

DCTO at Smartfin JSC (2can&ibox brands)

Moscow, Andropova avenue, 18 bldg. 7, office 804

http://www.2can.ru/ www.2can.ru | http://www.iboxmpos.com/ www.iboxmpos.com

From: Pavel notifications@github.com Sent: Tuesday, March 20, 2018 2:48 PM To: shtrih-m/javapos_shtrih javapos_shtrih@noreply.github.com Cc: ibox nazarov@iboxmpos.com; Author author@noreply.github.com Subject: Re: [shtrih-m/javapos_shtrih] Как вычитывать Индикатор заряда батареи? (#30)

Вроде разобрался, во-первых, если использовать твой пример, то нужно вместо getBatteryVoltage использовать getPowerVoltage и потом сравнивать не < 10, <100.

final double BATTERY_VOLTAGE = 7.4d;

int batteryLvl = BigDecimal.valueOf(status.getPowerVoltage() / BATTERY_VOLTAGE).setScale(2, RoundingMode.HALF_UP).scaleByPowerOfTen(2).intValue(); Log.d(TAG, batteryLvl < 100 ? "BATTERY_LOW" : "BATTERY_OK");

Вообще не вижу смысла в таких расчетах, зачем что-то преобразовывать, если можно напрямую сравнить значения.

final double BATTERY_VOLTAGE = 7.4d;

Log.d(TAG, status.getPowerVoltage() < BATTERY_VOLTAGE ? "BATTERY_LOW" : "BATTERY_OK");

Разработчик же советовал брать значение из таблицы ФР, там оно вроде как точнее, вот так:

final double BATTERY_VOLTAGE = 7.4d;

int voltageValue = Integer.parseInt(printer.readTable(11, 1, 4)); double voltageAsInStatus = voltageValue * 24.0 / 0xD8;

int batteryLvl = BigDecimal.valueOf(voltageAsInStatus / BATTERY_VOLTAGE).setScale(2, RoundingMode.HALF_UP).scaleByPowerOfTen(2).intValue(); Log.d(TAG, batteryLvl < 100 ? "BATTERY_LOW" : "BATTERY_OK");

что если убрать лишние расчеты может быть редуцировано до:

final double BATTERY_VOLTAGE = 66.6; // Соответствует 7.4: 7.4 * 0xD8 / 24.0 = 66.6

int voltageValue = Integer.parseInt(printer.readTable(11, 1, 4));

Log.d(TAG, voltageValue < BATTERY_VOLTAGE ? "BATTERY_LOW" : "BATTERY_OK");

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/shtrih-m/javapos_shtrih/issues/30#issuecomment-374569054 , or mute the thread https://github.com/notifications/unsubscribe-auth/AckzCZ9gYqPftzveluB8ewrvdfdMpBaCks5tgOx6gaJpZM4Pw7ws . https://github.com/notifications/beacon/AckzCXWEEGZYjkHoN0maMPn5m7djKWKMks5tgOx6gaJpZM4Pw7ws.gif

Tango600 commented 3 years ago

Но всё не так просто. Смотрю лог со своего ККТ.

01.02. MIN ПОРОГ НАПРЯЖЕНИЯ АККУМ., 0.11 В:54 01.03. НАПРЯЖ.ИНДИКАЦИИ РАЗРЯДА АККУМ., 0.11 В:56 01.04. MIN НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 0.11 В:73 01.05. НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 0.11 В:73 01.06. MAX НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 0.11 В:74 01.07. MAX ПОРОГ НАПРЯЖЕНИЯ АККУМ., 0.11 В:79 01.08. MIN НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 43.6 мВ:184 01.09. НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 43.6 мВ:185 01.10. MAX НАПРЯЖЕНИЕ АККУМУЛЯТОРА, 43.6 мВ:186

Получается за время сессии минимальное напряжение аккумулятора было 73*,11=8.03 В.