Я использую POS-терминал Sunmi K2 под управлением Android 7.1.2
Я разрабатываю программное обеспечение POS с WinDev для Mobile 26, у меня уже отображаются некоторые окна, теперь вопрос в том, как я могу печатать на встроенном POS-принтере?
На киоске установлено приложение для тестирования печати, оно работает нормально.
В настройках настройки принтера тоже есть, но там написано "устройство не установлено"...
В документации упоминается "интерфейс AIDL"...
И еще, там написан пример API:
Bound Service
Intent intent = new Intent();
intent.setPackage("com.sunmi.extprinterservice");
intent.setAction("com.sunmi.extprinterservice.PrinterService");
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
Необходимо установить новую службу ServiceConnection для привязки обратного вызова
ServiceConnection serviceConnection = new ServiceConnection() {
@Override public void onServiceConnected(ComponentName name, IBinder service) {
ExtPrinterService ext = ExtPrinterService.Stub.asInterface(service);
}
@Override public void onServiceDisconnected(ComponentName name) { }
};
Используйте объект ext для реализации собственной задачи печати
ext.printText(“123456\n”);
Отвязать услугу после завершения использования
unbindService(serviceConnection);
Вопрос в том, как я могу использовать этот Java-код в WinDev Mobile??
РЕДАКТИРОВАНИЕ:
Мне удалось распечатать на принтере, но есть небольшая ошибка, поэтому иногда он не запускается сразу, поэтому возникает цикл...
import android.content.ComponentName;
import android.content.Context;
import static android.content.Context.BIND_AUTO_CREATE;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.widget.Toast;
import com.sunmi.extprinterservice.ExtPrinterService;
public static void PrintToSunmiPrinter(byte[] cmd) {
getCurrentActivity();
Context context = getApplicationContext();
ExtPrinterService ext;
ServiceConnection serviceConnection = new ServiceConnection() {
@Override public void onServiceConnected(ComponentName className, IBinder service) {
// This is called when the connection with the service has been
// established, giving us the service object we can use to
// interact with the service. Because we have bound to a explicit
// service that we know is running in our own process, we can
// cast its IBinder to a concrete class and directly access it.
try {
ExtPrinterService ext = ExtPrinterService.Stub.asInterface(service);
int ret_code;
int zz=0;
ret_code=ext.printerInit();
while(ret_code==-1){
zz++;
if (zz>100) { Toast.makeText(context, "ERROR! / "+ret_code, Toast.LENGTH_SHORT).show(); break; }
ret_code=ext.printerInit();
}
ext.sendRawData(cmd);
ext.cutPaper(1, 0);
ext.flush();
} catch(Exception ex){
Toast.makeText(getApplicationContext(), "ERROR! "+ex.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override public void onServiceDisconnected(ComponentName className) {
// This is called when the connection with the service has been
// unexpectedly disconnected -- that is, its process crashed.
// Because it is running in our same process, we should never
// see this happen.
}
};
Intent intent = new Intent();
intent.setPackage("com.sunmi.extprinterservice");
intent.setAction("com.sunmi.extprinterservice.PrinterService");
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
Подробнее здесь: https://stackoverflow.com/questions/687 ... hing-using
Как на терминале Sunmi K2 я могу распечатать (на встроенном принтере) что-либо с помощью WinDev Mobile? ⇐ Android
Форум для тех, кто программирует под Android
1767082925
Anonymous
Я использую POS-терминал Sunmi K2 под управлением Android 7.1.2
Я разрабатываю программное обеспечение POS с WinDev для Mobile 26, у меня уже отображаются некоторые окна, теперь вопрос в том, как я могу печатать на встроенном POS-принтере?
На киоске установлено приложение для тестирования печати, оно работает нормально.
В настройках настройки принтера тоже есть, но там написано "устройство не установлено"...
В документации упоминается "интерфейс AIDL"...
И еще, там написан пример API:
Bound Service
Intent intent = new Intent();
intent.setPackage("com.sunmi.extprinterservice");
intent.setAction("com.sunmi.extprinterservice.PrinterService");
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
Необходимо установить новую службу ServiceConnection для привязки обратного вызова
ServiceConnection serviceConnection = new ServiceConnection() {
@Override public void onServiceConnected(ComponentName name, IBinder service) {
ExtPrinterService ext = ExtPrinterService.Stub.asInterface(service);
}
@Override public void onServiceDisconnected(ComponentName name) { }
};
Используйте объект ext для реализации собственной задачи печати
ext.printText(“123456\n”);
Отвязать услугу после завершения использования
unbindService(serviceConnection);
Вопрос в том, как я могу использовать этот Java-код в WinDev Mobile??
РЕДАКТИРОВАНИЕ:
Мне удалось распечатать на принтере, но есть небольшая ошибка, поэтому иногда он не запускается сразу, поэтому возникает цикл...
import android.content.ComponentName;
import android.content.Context;
import static android.content.Context.BIND_AUTO_CREATE;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.widget.Toast;
import com.sunmi.extprinterservice.ExtPrinterService;
public static void PrintToSunmiPrinter(byte[] cmd) {
getCurrentActivity();
Context context = getApplicationContext();
ExtPrinterService ext;
ServiceConnection serviceConnection = new ServiceConnection() {
@Override public void onServiceConnected(ComponentName className, IBinder service) {
// This is called when the connection with the service has been
// established, giving us the service object we can use to
// interact with the service. Because we have bound to a explicit
// service that we know is running in our own process, we can
// cast its IBinder to a concrete class and directly access it.
try {
ExtPrinterService ext = ExtPrinterService.Stub.asInterface(service);
int ret_code;
int zz=0;
ret_code=ext.printerInit();
while(ret_code==-1){
zz++;
if (zz>100) { Toast.makeText(context, "ERROR! / "+ret_code, Toast.LENGTH_SHORT).show(); break; }
ret_code=ext.printerInit();
}
ext.sendRawData(cmd);
ext.cutPaper(1, 0);
ext.flush();
} catch(Exception ex){
Toast.makeText(getApplicationContext(), "ERROR! "+ex.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override public void onServiceDisconnected(ComponentName className) {
// This is called when the connection with the service has been
// unexpectedly disconnected -- that is, its process crashed.
// Because it is running in our same process, we should never
// see this happen.
}
};
Intent intent = new Intent();
intent.setPackage("com.sunmi.extprinterservice");
intent.setAction("com.sunmi.extprinterservice.PrinterService");
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/68794777/on-a-sunmi-k2-terminal-how-can-i-print-on-the-build-in-printer-something-using[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия