Di mana kita mulai?
Tambahkan paket untuk bekerja dengan tim EPS / POS di proyek Nuget. Untuk melakukan ini, buka Konsol Manajer Paket dan tambahkan Zebra.Printer.SDK dengan perintah
Install-Package Zebra.Printer.SDK
Faktanya, tidak masalah model printer yang Anda gunakan dan siapa pembuatnya. Anda perlu memastikan bahwa printer mendukung perintah EPS / POS (kebanyakan dari mereka). Dalam hal ini, perpustakaan akan dapat bekerja dengannya tanpa masalah.
Semua langkah lebih lanjut dijelaskan dengan asumsi bahwa Anda masuk ke pengaturan perangkat Android dan terhubung ke printer.
Pertama-tama, tambahkan izin ke file 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>
Dapatkan adaptor untuk bekerja dengan Bluetooth:
var bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
Kami akan menemukan printer di antara semua perangkat yang terhubung dan mengambil yang pertama:
var printers = bluetoothAdapter.BondedDevices.Where(c => c.BluetoothClass.MajorDeviceClass == MajorDeviceClass.Imaging && (int)c.BluetoothClass.DeviceClass == PrinterBluetoothMinorDeviceClassCode && c.BondState == Bond.Bonded); var printer = printers.First();
Dalam aplikasi nyata, Anda harus memilih printer dengan nama, misalnya, menampilkan dialog untuk pengguna di mana ia dapat memilih printer
Kode untuk kelas perangkat minor yang sesuai dengan printer untuk beberapa alasan hilang dari Xumarin Android enum jadi saya hanya menetapkannya sebagai konstanta:
private const int PrinterBluetoothMinorDeviceClassCode = 1664;
Selanjutnya kita perlu membuat gabungan:
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; } }
Kami mencoba untuk terhubung dalam dua cara berbeda, normal pertama, multi-channel kedua. Printer dapat bekerja di salah satunya, jadi kami mencoba keduanya secara berurutan.
Setelah Anda berhasil membuat koneksi, Anda harus membuka koneksi, mengirim data ke printer, dan menutup koneksi:
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(); } }
Jangan lupa bahwa operasi membuka koneksi itu panjang, oleh karena itu harus dilakukan di utas terpisah. Menjalankannya di utas UI utama tidak disarankan.
Setelah perintah Tulis, daftar karakter yang Anda kirim harus pergi.