كيفية الاتصال بسهولة وبدء الطباعة عبر طابعة Bluetooth EPS / POS المحمولة في تطبيق Xamarin Android

من أين نبدأ؟

أضف حزمة للعمل مع فرق 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(); } } 

لا تنس أن عملية فتح اتصال طويلة ، لذلك يجب أن يتم تنفيذها في سلسلة منفصلة. تشغيله في مؤشر ترابط واجهة المستخدم الرئيسي غير مستحسن.

بعد أمر الكتابة ، يجب أن تذهب قائمة الأحرف التي أرسلتها.

Source: https://habr.com/ru/post/ar463691/


All Articles