Open iboxmpos opened 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; штрих не возвращает уровень заряда, возвращает напряжение батареи
Так как мне нужно его читать?)
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
напряжение аккумулятора вычитывается из запроса статуса ФР и из 11 таблицы
Попробуй из таблицы, оно там вроде как поточнее.
А дай команду полную, плиз! И как мне грейды уровня заряда разделять?
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
Привет! Так и не понял ка быть с зарядом батареи?
Дай команду полную, плиз! И как мне грейды уровня заряда разделять и превращать в проценты или статусы (полный/норм/разряжен) по напряжению из таблицы 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
Вроде разобрался, во-первых, если использовать твой пример, то нужно вместо 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");
Привет! Ну наконец-то, спасибо огромное! Отправлю своим на анализ!!!
Если что вернусь к таску!
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
Но всё не так просто. Смотрю лог со своего ККТ.
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 В.
Пробовали текущим методом, но статус всегда "Заряд в норме"