Как Легко Подключить И Печатать Через Bluetooth Портативный Eps/Pos-Принтер В Приложении Xamarin Для Android

С чего начать? Добавим в проект Nuget пакет для работы с командами EPS/POS. Для этого откройте консоль диспетчера пакетов и добавьте Zebra.Printer.SDK с помощью команды

  
  
  
  
  
  
   

Install-Package Zebra.Printer.SDK

По сути, не имеет значения, какую модель принтера вы используете или кто производитель.

Необходимо убедиться, что принтер поддерживает работу с командами EPS/POS (большинством из них).

В этом случае библиотека сможет без проблем с ней работать.

Все дальнейшие действия описаны в предположении, что вы зашли в настройки вашего Android-устройства и подключились к принтеру.

Прежде всего, давайте добавим разрешения для файла AndroidManifest.xml:

<manifest .

> .

<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> .

</manifest>

Получим переходник для работы с Bluetooth:

var bluetoothAdapter = BluetoothAdapter.DefaultAdapter;

Найдем принтеры среди всех подключенных устройств и возьмем первый:

var printers = bluetoothAdapter.BondedDevices.Where(c => c.BluetoothClass.MajorDeviceClass == MajorDeviceClass.Imaging && (int)c.BluetoothClass.DeviceClass == PrinterBluetoothMinorDeviceClassCode && c.BondState == Bond.Bonded); var printer = printers.First();

В реальном приложении следует выбирать принтер по имени, например отображать для пользователя диалог, где он может выбрать принтер
Код второстепенного класса устройств, соответствующего принтерам, почему-то отсутствует в перечислении Xamarin Android, поэтому я просто установил его как константу:

private const int PrinterBluetoothMinorDeviceClassCode = 1664;

Далее нам нужно создать соединение:

Connection connection; try { var simpleConnectionString = $"BT:{printer.Address}"; connection = ConnectionBuilder.Build(simpleConnectionString); } catch (Exception exception) { try { var multiChannelConnectionString = $"BT_MULTI:{printer.Address}"; connection = ConnectionBuilder.Build(multiChannelConnectionString); } catch (Exception multichannelException) { Console.WriteLine(multichannelException); throw; } }

Пробуем подключиться двумя разными способами, первый обычный, второй многоканальный.

Принтер может работать в одном из них, поэтому пробуем последовательно оба.

После того, как вам удастся создать соединение, вам нужно будет открыть соединение, отправить данные на принтер и закрыть соединение:

try { var testString = "This a test text for printer."; var stringBuilder = new StringBuilder(); stringBuilder.Append(testString); stringBuilder.Append("\n"); connection.Open(); connection.Write(Encoding.UTF8.GetBytes(stringBuilder.ToString())); } catch (Exception exception) { Console.WriteLine(exception); throw; } finally { if (connection.Connected) { connection.Close(); } }

Не забывайте, что открытие соединения — длительная операция, поэтому ее следует выполнять в отдельном потоке.

Не рекомендуется запускать его в основном потоке пользовательского интерфейса.

После команды Write должна появиться распечатка отправленных вами символов.

Теги: #Разработка Android #C++ #.

NET #Bluetooth #xamarin #xamarin.android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.