Skip to content

Latest commit

 

History

History
346 lines (250 loc) · 12.3 KB

File metadata and controls

346 lines (250 loc) · 12.3 KB

Руководство по Размерам TSPL Этикеток

⚠️ Важно: Эта проблема специфична для TSPL (TSC Printer Language). Если вы используете ZPL (Zebra) принтеры - у них нет этой проблемы, так как ZPL автоматически определяет конец этикетки через датчик GAP. См. ZPL_VS_TSPL_SIZE_DIFFERENCE.md для подробностей.

Проблема: Этикетка Не Выдвигается до Конца

Симптомы:

  • ✋ Принтер начинает печатать, но останавливается с ошибкой
  • ❌ Этикетка выходит частично, не до конца
  • ⚠️ Принтер "не может найти gap (зазор между этикетками)"
  • 🔴 Светодиод ошибки мигает/горит

Причина:

Несоответствие между указанным размером в команде SIZE и реальным размером этикетки.

Когда вы пишете:

SIZE 60 mm, 40 mm

Принтер ожидает, что этикетка имеет высоту 40mm. Он печатает содержимое и начинает искать GAP (зазор) после 40mm.

Если реальная этикетка 60mm или 80mm по высоте, принтер не найдёт зазор в ожидаемом месте и выдаст ошибку позиционирования.

💡 Почему ZPL не имеет этой проблемы? ZPL использует автоматический поиск GAP датчиком вместо команды SIZE. Команда ^LL (Label Length) в ZPL опциональна и нужна только для оптимизации скорости.


Решение: Измерить и Указать Правильный Размер

Шаг 1: Измерьте Физическую Этикетку

Возьмите линейку и измерьте вашу этикетку:

┌─────────────┐  ↑
│             │  │
│   Этикетка  │  │ Высота (Height)
│             │  │ например, 60mm
│             │  │
└─────────────┘  ↓
←──────────→
  Ширина (Width)
  например, 58mm

Зазор (GAP) - это расстояние между этикетками:

└─────────────┘  ← Конец этикетки
     ↕ GAP (обычно 2-3mm)
┌─────────────┐  ← Начало следующей

Шаг 2: Типичные Размеры Этикеток

Размер (мм) Применение Пример
40 x 30 Маленькие ценники Ювелирные изделия
58 x 40 Стандартные маленькие Артикулы товаров
58 x 60 Средние этикетки Самый популярный
60 x 80 Большие вертикальные Доставка, адреса
80 x 50 Горизонтальные Штрих-коды товаров
100 x 100 Квадратные большие Транспортные этикетки
100 x 150 Почтовые Посылки, грузы

Шаг 3: Обновить Команду SIZE

Неправильно (40mm высота, а реальная 60mm):

SIZE 60 mm, 40 mm  ❌ Ошибка позиционирования!
GAP 2 mm, 0 mm
CLS
TEXT 50,50,"3",0,1,1,"Hello"
PRINT 1

Правильно (60mm высота совпадает с реальной):

SIZE 58 mm, 60 mm  ✅ Работает!
GAP 2 mm, 0 mm
CLS
TEXT 50,50,"3",0,1,1,"Hello"
PRINT 1

Как Определить Размер Без Линейки

Метод 1: Калибровка Принтера

Большинство TSPL принтеров имеют кнопку FEED для калибровки:

  1. Выключите принтер
  2. Зажмите кнопку FEED
  3. Включите принтер, продолжая держать FEED
  4. Отпустите через 3-5 секунд
  5. Принтер прогонит несколько этикеток для автоопределения размера

После калибровки принтер "запомнит" размер этикетки.

Метод 2: Тестовая Печать с Разными Размерами

Попробуйте распространённые размеры по очереди:

// Тест 1: 58x40mm
SIZE 58 mm, 40 mm
GAP 2 mm, 0 mm
CLS
TEXT 50,20,"3",0,1,1,"Test: 58x40mm"
PRINT 1
// Тест 2: 58x60mm (самый популярный)
SIZE 58 mm, 60 mm
GAP 2 mm, 0 mm
CLS
TEXT 50,20,"3",0,1,1,"Test: 58x60mm"
PRINT 1
// Тест 3: 60x80mm
SIZE 60 mm, 80 mm
GAP 2 mm, 0 mm
CLS
TEXT 50,20,"3",0,1,1,"Test: 60x80mm"
PRINT 1

Какой из тестов напечатается без ошибки и полностью - тот размер и правильный!

Метод 3: Команда SELFTEST

Отправьте команду самодиагностики - она покажет конфигурацию:

SELFTEST

Принтер напечатает лист с информацией о размерах, DPI, версии прошивки и т.д.


Настройка GAP (Зазора)

Непрерывная Этикетка (без зазоров)

Если используете рулон без зазоров (сплошная лента):

SIZE 58 mm, 60 mm
GAP 0 mm, 0 mm     // Зазор = 0

Этикетки с Black Mark (чёрной меткой)

Некоторые этикетки имеют чёрную метку на обратной стороне:

SIZE 58 mm, 60 mm
BLINE 3 mm, 0 mm   // Вместо GAP используем BLINE

Стандартный Зазор

Обычные этикетки с прозрачным промежутком:

SIZE 58 mm, 60 mm
GAP 2 mm, 0 mm     // 2mm стандартный зазор

Если зазор больше (например, 3-4mm):

SIZE 58 mm, 60 mm
GAP 3 mm, 0 mm     // Укажите реальный зазор

Примеры для Разных Размеров

Маленькие Этикетки (40x30mm)

SIZE 40 mm, 30 mm
GAP 2 mm, 0 mm
DIRECTION 0
CLS
TEXT 20,10,"2",0,1,1,"SKU-123"
BARCODE 20,40,"128",40,0,0,2,2,"123456"
PRINT 1

Средние Этикетки (58x60mm) - Самый Популярный

SIZE 58 mm, 60 mm
GAP 2 mm, 0 mm
DIRECTION 0
CLS
TEXT 50,20,"3",0,1,1,"Product Name"
BARCODE 50,60,"128",80,1,0,2,2,"1234567890"
TEXT 50,160,"2",0,1,1,"SKU: 1234567890"
QRCODE 200,60,H,4,A,0,"https://example.com"
PRINT 1

Большие Этикетки (100x150mm)

SIZE 100 mm, 150 mm
GAP 3 mm, 0 mm
DIRECTION 0
CLS
TEXT 50,20,"4",0,1,1,"TRANSPORT LABEL"
TEXT 50,80,"3",0,1,1,"From: Warehouse A"
TEXT 50,120,"3",0,1,1,"To: Store B"
BARCODE 50,180,"128",100,1,0,3,3,"TRACK123456"
QRCODE 350,180,H,6,A,0,"TRACK123456"
PRINT 1

Проверка Статуса Принтера

Используйте метод getTSPLPrinterStatus() для диагностики:

final status = await manager.getTSPLPrinterStatus(printer);

if (status.success) {
  print('Код статуса: ${status.code}');
  print('Описание: ${status.description}');
} else {
  print('Ошибка: ${status.errorMessage}');
}

Коды Ошибок TSPL

Код Описание Решение
0x00 Норма Всё OK
0x01 Head Open Закройте головку принтера
0x02 Paper Jam Извлеките замятую бумагу
0x04 Paper Out Загрузите этикетки
0x08 Ribbon Out Загрузите риббон (для термотрансфера)
0x10 Pause Нажмите кнопку продолжения
0x20 Printing Идёт печать
0x40 Label not found Проверьте SIZE и GAP!
0x80 Cutter Error Проблема с резчиком

⚠️ Код 0x40 (Label not found) - это именно ваша проблема! Принтер не может найти конец этикетки, потому что SIZE указан неправильно.


Алгоритм Устранения Проблемы

  1. Измерьте этикетку линейкой (ширина x высота в мм)
  2. Измерьте зазор между этикетками (обычно 2-3mm)
  3. Обновите команду SIZE в коде:
    SIZE <ширина> mm, <высота> mm
    GAP <зазор> mm, 0 mm
    
  4. Сделайте калибровку принтера (зажмите FEED при включении)
  5. Проверьте печать - этикетка должна выйти полностью

Обновлённый Пример в Приложении

В example/lib/main.dart теперь используется 58x60mm вместо неправильного 60x40mm:

Future<void> _printTsplSimpleText() async {
  // Измените размер под ВАШУ этикетку!
  const tsplCommands = '''
SIZE 58 mm, 60 mm    // ← Укажите реальный размер
GAP 2 mm, 0 mm       // ← Укажите реальный зазор
DIRECTION 0
CLS
TEXT 50,50,"3",0,1,1,"Hello TSPL!"
TEXT 50,100,"3",0,1,1,"Test Print"
TEXT 50,150,"2",0,1,1,"Size: 58x60mm"
PRINT 1
''';

  await _printersManager.printTsplRawData(
    _selectedPrinter!,
    Uint8List.fromList(tsplCommands.codeUnits),
    203, // 203 DPI
  );
}

FAQ

Q: Как узнать DPI моего принтера?

A: Большинство TSPL принтеров - 203 DPI. Проверьте в характеристиках или отправьте команду SELFTEST.

Q: Что если этикетки на рулоне разного размера?

A: TSPL требует одинакового размера. Используйте рулоны с одним размером этикетки.

Q: Можно ли автоматически определить размер?

A: Да, выполните калибровку принтера (зажмите FEED при включении). Но в коде всё равно нужно указать правильный SIZE.

Q: Что делать, если размер правильный, но всё равно ошибка?

A: Проверьте:

  1. Датчик GAP чистый и не закрыт
  2. Этикетки установлены правильной стороной
  3. Направляющие плотно прижаты к краям этикетки
  4. Выполнена калибровка принтера

Итоги

Главное правило: Размер в команде SIZE должен точно совпадать с физическим размером этикетки

Самый популярный размер: 58mm x 60mm с зазором 2mm

Проверка: Если принтер останавливается с ошибкой - скорее всего неправильный SIZE

Калибровка: Зажмите FEED при включении для автоопределения размера

Тестирование: Попробуйте стандартные размеры (40x30, 58x40, 58x60, 60x80, 100x100)