С чего начать? Добавим в проект Nuget пакет для работы с командами EPS/POS. Для этого откройте консоль диспетчера пакетов и добавьте Zebra.Printer.SDK с помощью команды
Install-Package Zebra.Printer.SDK
По сути, не имеет значения, какую модель принтера вы используете или кто производитель.Все дальнейшие действия описаны в предположении, что вы зашли в настройки вашего Android-устройства и подключились к принтеру.Необходимо убедиться, что принтер поддерживает работу с командами EPS/POS (большинством из них).
В этом случае библиотека сможет без проблем с ней работать.
Прежде всего, давайте добавим разрешения для файла 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
-
Станьте Ресурсом, И Они Вернутся!
19 Oct, 24 -
Разборка И Приручение Лампового Звука Гитары
19 Oct, 24