من أين نبدأ؟
أضف حزمة للعمل مع فرق EPS / POS في مشروع Nuget. للقيام بذلك ، افتح وحدة التحكم في إدارة الحزم وأضف 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>
الحصول على محول للعمل مع بلوتوث:
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();
في تطبيق حقيقي ، يجب عليك تحديد طابعة بالاسم ، على سبيل المثال ، عرض مربع حوار للمستخدم حيث يمكنه اختيار طابعة
رمز فئة الأجهزة الثانوية الذي يتوافق مع الطابعات مفقود لسبب ما من تعداد Xumarin 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(); } }
لا تنس أن عملية فتح اتصال طويلة ، لذلك يجب أن يتم تنفيذها في سلسلة منفصلة. تشغيله في مؤشر ترابط واجهة المستخدم الرئيسي غير مستحسن.
بعد أمر الكتابة ، يجب أن تذهب قائمة الأحرف التي أرسلتها.