Распечатайте изображение на термопринтере с MAUI поверх BLEC#

Место общения программистов C#
Anonymous
Распечатайте изображение на термопринтере с MAUI поверх BLE

Сообщение Anonymous »

Привет, коллеги!
Недавно я купил дешевый термопринтер pt-210; он должен работать с использованием стандартного ESC-POS и поэтому описывается как бесплатный SDK
https://www.alibaba.com/product-detail/ ... 62774.html
Я протестировал его с некоторыми приложениями для печати в Googlestore, и я могу печатать тексты и изображения!
Теперь я хочу написать свой собственный проект в MAUI, чтобы иметь возможность также печатать текст и изображения.
Я провел небольшое исследование в Интернете и смог придумать код, исполняющий мое желание, но он удался только для текстовой части и не смог напечатать ни одного изображения! (ошибка не отображается).
пока вот мой код, я пытаюсь сделать снимок экрана и распечатать его

Код: Выделить всё

// take screenshoot and save it as PNG in the cachefolder
var path = FileSystem.Current.CacheDirectory;
string fn = "ScanButton.png";
var fullPath = Path.Combine(path, fn);

var result = await ScanButton.CaptureAsync(); //take screenshoot of a UI controller (i.e Button)

using MemoryStream stream = new MemoryStream(); //create Mem Stream
await result.CopyToAsync(stream);                //copy the screenshoot into stream

await File.WriteAllBytesAsync(fullPath, stream.ToArray()); //saved in cash folder

//Load it from cash into a byte array
byte[] data = await File.ReadAllBytesAsync(fullPath);

using MemoryStream stream2 = new MemoryStream(); //create another new stream
stream2.Write(SELECT_BIT_IMAGE_MODE, 0, SELECT_BIT_IMAGE_MODE.Length); //insert image mode
stream2.Write(data, 0, data.Length);
var bytes = stream2.ToArray();
if (serviceSelect != null && characteristicSelect != null)
{
await characteristicSelect.WriteAsync(INIT);
await characteristicSelect.WriteAsync(new byte[] { 0x0A });
await characteristicSelect.WriteAsync(Encoding.UTF8.GetBytes("Hello World"));
await characteristicSelect.WriteAsync(new byte[] { 0x0A });
await characteristicSelect.WriteAsync(new byte[] { 0x0A });
await characteristicSelect.WriteAsync(bytes);
Я уже попробовал оба варианта

Код: Выделить всё

//public static byte[] SELECT_BIT_IMAGE_MODE = { 0x1B, 0x2A, 33, (byte)255, 0 };
public static byte[] SELECT_BIT_IMAGE_MODE = { 0x1B, 0x2A, 33, 255, 3 };
Я также пробовал печатать с и без

Код: Выделить всё

public static byte[] INIT = { 0x1B, 0x40 };
Термальный принтер печатает только текст, изображение не отображается. Я подозреваю, что упускаю некоторые шаги!
Буду признателен за любые советы!
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/788 ... i-over-ble

Вернуться в «C#»