Xamarin Zebra Sdk - печать через Bluetooth "не удалось прочитать, возможно, сокет закрыт или тайм-аут, чтение ret: -1" - PullRequest
0 голосов
/ 06 октября 2018

Я использую последнюю версию Xamarin Zebra SDK для печати на принтере ZQ520.Примерно 70% времени печати работает нормально .В остальные 30% случаев происходит сбой с ошибкой

"чтение не удалось, сокет может быть закрыт или истекло время ожидания, чтение ret: -1"

и принтер нуждаетсябыть выключенным / включенным для печати, чтобы работать.

Отправляемое содержимое является подписью и этикеткой, и я печатаю по небезопасному соединению Bluetooth.

Воспроизведение оказывается труднымошибка последовательно.Я думаю, что это может быть связано с initialResponseTimeout и responseCompletionTimeout в моем коде ниже.У кого-нибудь есть опыт установки этих значений?

        IConnection connection = null;

        try
        {

            connection = new BluetoothConnectionInsecure(address);
            connection.Open();

            using (var printer = ZebraPrinterFactory.GetInstance(
                               PrinterLanguage.Cpcl, connection))
            {

                using (var image = ZebraImageFactory.GetImage(signature))
                {
                   printer.StoreImage(SignatureFilename, image,
                              image.Width, image.Height);
                }

                // pause to ensure image is saved
                Thread.Sleep(1000);

                var initialResponseTimeout = 3000;
                var responseCompletionTimeout = 1000;

                // is the timeout too small or large ?
                connection.SendAndWaitForResponse(printLabel,
                initialResponseTimeout, responseCompletionTimeout, null);
            }

        }

        catch (Exception exception)
        {
            Microsoft.AppCenter.Crashes.Crashes.TrackError(exception);
        }
        finally
        {
            connection.Close();
        } 

1 Ответ

0 голосов
/ 06 октября 2018

У меня были проблемы, когда я пытался подключиться напрямую к моим устройствам.Я предлагаю вам создать приложение на вашем локальном компьютере для связи с вашим мобильным телефоном и вашим принтером.Также попробуйте увеличить время ожидания в вашем коде.

 using (var printer = ZebraPrinterFactory.GetInstance(
                           PrinterLanguage.Cpcl, connection))
        {

            using (var image = ZebraImageFactory.GetImage(signature))
            {
               printer.StoreImage(SignatureFilename, image,
                          image.Width, image.Height);
            }

            // pause to ensure image is saved
            //Thread.Sleep(1000); I recommend you to remove this line

            var initialResponseTimeout = 15000;
            var responseCompletionTimeout = 15000;

            // is the timeout too small or large ?
            connection.SendAndWaitForResponse(printLabel,
            initialResponseTimeout, responseCompletionTimeout, null);
        }
...