Я разрабатываю приложение java (которое будет работать на рабочем столе Linux) для печати меток доставки с использованием принтера TSC TTP-244 Pro. Этот принтер поддерживает команды TSPL2.Печать на принтер TSC из java-приложения
Я использую USB-соединение и начал писать несколько простых тестов, используя API-интерфейс высокого уровня usb4java для связи с этим принтером. Я могу успешно запросить статус/состояние принтера <ESC>?!
или <ESC>?S
(<ESC>
здесь ASCII 27) без каких-либо проблем, но не удалось выполнить команду PRINT
.
Ниже приведен мой код.
@Test
public void printTest() throws UsbException
{
final UsbServices services = UsbHostManager.getUsbServices();
UsbDevice printerUsbDevice = findDevice(services.getRootUsbHub(), 0x1234, 0x1734);
UsbConfiguration configuration = device.getActiveUsbConfiguration();
UsbInterface iface = configuration.getUsbInterface((byte) 1);
iface.claim();
try
{
UsbEndpoint inEndpoint = iface.getUsbEndpoint(0x01);
UsbPipe pipe = inEndpoint.getUsbPipe();
UsbEndpoint outEndpoint = iface.getUsbEndpoint(0x82);
UsbPipe pipe2 = outEndpoint.getUsbPipe();
pipe2.open();
pipe.open();
pipe.syncSubmit(27 + "!?".getBytes("US-ASCII"));
pipe.close();
pipe2.open();
byte[] statusResponse = pipe2.syncSubmit(new byte[1]);
pipe2.close();
System.out.println(new String(statusResponse, "US-ASCII")); // Here status got is "00" if ok otherwise getting error code
pipe.open();
pipe.syncSubmit("SIZE 57 mm,37 mm");
pipe.syncSubmit("GAP 3 mm,0 mm");
pipe.syncSubmit("DIRECTION 1");
pipe.syncSubmit("CLS");
pipe.syncSubmit("TEXT 10,10 "3",0,1,1, "Test printing");
pipe.syncSubmit("PRINT 1");
pipe.close();
// at this pint of time, printer is not printing anything instead just idle
}
finally
{
iface.release();
}
}
private UsbDevice findDevice(UsbHub hub, short vendorId, short productId)
{
for (UsbDevice device : (List<UsbDevice>) hub.getAttachedUsbDevices())
{
UsbDeviceDescriptor desc = device.getUsbDeviceDescriptor();
if (desc.idVendor() == vendorId && desc.idProduct() == productId) return device;
if (device.isUsbHub())
{
device = findDevice((UsbHub) device, vendorId, productId);
if (device != null) return device;
}
}
return null;
}
Правильно ли установлено мое сообщение usb?
Поддерживает ли это USB-связь с принтером TSC без установки драйвера принтера (на Linux)?
Большое спасибо. Посмотрите контрольную сумму или различные аспекты конечной точки. – Venky
Хотя я все еще не имел успеха при печати, но определил, в чем была проблема с командой 'PRINT'. Мне пришлось выпустить '' в конце команды 'PRINT', чтобы принтер начал печатать (вероятно, это указание, чтобы очистить его внутренний буфер). После изменения моего кода на выпуск '' принтер отвечал, но из-за моих проблем с настройкой (связанных с размещением ленты и расположением ярлыков), принтер дает мне ошибку во время печати. Во всяком случае, спасибо за ваши материалы. –
Venky
Да, CR LF в конце команды является существенным, если это помогло вам, пожалуйста, примите мой ответ. –