рд╣рдо рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ?
Nuget рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ EPS / POS рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде Zebra.Printer.SDK рдЬреЛрдбрд╝реЗрдВ
Install-Package Zebra.Printer.SDK
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рд┐рдВрдЯрд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдХреМрди рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд┐рдВрдЯрд░ рдИрдкреАрдПрд╕ / рдкреАрдУрдПрд╕ рдХрдорд╛рдВрдб (рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдЖрдЧреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЧрдП рдФрд░ рдкреНрд░рд┐рдВрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, 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();
рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдирд╛рдо рд╕реЗ рдПрдХ рдкреНрд░рд┐рдВрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╡рд╣ рдПрдХ рдкреНрд░рд┐рдВрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдорд╛рдЗрдирд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛ рдХрд┐ рдкреНрд░рд┐рдВрдЯрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдХреНрд╕реБрдорд░рд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдо рд╕реЗ рдЧрд╛рдпрдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рд░рдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ:
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(); } }
рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд▓рдВрдмрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдореБрдЦреНрдп UI рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рд▓рд┐рдЦреЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдкрд╛рддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЪрд╛рд╣рд┐рдПред