Вот некоторые сведения о том, что я пытаюсь сделать:
- Открытие последовательного порта с мобильного устройства на принтер Bluetooth.
- Отправьте форму EPL / 2 на принтер Bluetooth, чтобы он понимал, как обрабатывать данные, которые он собирается получить.
- Как только форма будет получена, отправьте на принтер некоторые данные, которые будут напечатаны на этикетке.
- Повторите шаг 3 столько раз, сколько необходимо для печати каждой этикетки.
Шаг 2 происходит только в первый раз, так как форма не должна предшествовать каждому ярлыку. Моя проблема в том, что при отправке формы, если я отправлю данные этикетки слишком быстро, она не будет напечатана. Иногда вместо данных, которые я отправляю, на этикетке печатается надпись «Отказ Bluetooth: радио не работает».
Я нашел способ обойти эту проблему, выполнив следующее:
for (int attempt = 0; attempt < 3; attempt++)
{
try
{
serialPort.Write(labelData);
break;
}
catch (TimeoutException ex)
{
// Log info or display info based on ex.Message
Thread.Sleep(3000);
}
}
Так что, в принципе, я могу поймать TimeoutException и повторить метод записи после ожидания определенного промежутка времени (три секунды, кажется, работают все время, но меньше, и, кажется, выдает исключение при каждой попытке). После трех попыток я просто предполагаю, что с последовательным портом что-то не так, и сообщаю пользователю.
Этот способ, кажется, работает нормально, но я уверен, что есть лучший способ справиться с этим. В классе SerialPort есть несколько свойств, которые, я думаю, мне нужно использовать, но я не могу найти хорошую документацию или примеры того, как их использовать. Я пытался поиграть с некоторыми из свойств, но ни один из них, кажется, не делает то, что я пытаюсь достичь.
Вот список свойств, с которыми я играл:
- CDHolding
- CtsHolding
- DsrHolding
- DtrEnable
- Рукопожатие
- RtsEnable
Я уверен, что некоторая их комбинация справится с тем, что я пытаюсь сделать более изящно.
Я использую C # (2.0 framework), принтер Zebra QL 220+ Bluetooth и портативное устройство Windows Mobile 6, если это имеет какое-то значение для решений.
Будем благодарны за любые предложения.
[UPDATE]
Следует также отметить, что мобильное устройство использует Bluetooth 2.0, тогда как принтер только в версии 1.1. Я предполагаю, что разница в скорости приводит к тому, что принтер отстает в получении данных.