Yayın tarihi:
Ucuz 4×6 ve küçük etiket yazıcılarının çoğu TSPL konuşur ve Bluetooth ile gelir. Bir web uygulamasından ya da telefondan bunlara basmak mümkündür — insanlar bunu Android Chrome'dan birkaç düzine satır JavaScript ile yapıyor — ama önce yazıcının hangi Bluetooth'u konuştuğunu bilmeniz ve Web Bluetooth'u uygulayan bir tarayıcı kullanmanız gerekir.
Bluetooth Low Energy (BLE) cihazlar veriyi GATT üzerinden sunar: içinde okuyup yazabileceğiniz ya da abone olabileceğiniz karakteristikler bulunan servisler. BLE etiket yazıcısında baskı verisini kabul eden genellikle bir karakteristik vardır. Bluetooth Classic yazıcılar ise çoğunlukla seri port profili (SPP) sunar: kablo gibi bir bayt akışı. Hangisine sahip olduğunuzu yazıcının teknik sayfası ya da eşleşme davranışı söyler; bazı yazıcılar ikisini de sunar.
Bu ayrım bir web sayfasının ne yapabileceğini belirler. Web Bluetooth API BLE cihazlara GATT üzerinden bağlanır. Classic cihazlar için Chrome'un kendi belgesi Web Serial API'yi gösterir; Web Serial, Chrome 117 masaüstünde eşlenmiş cihazlardaki SPP gibi RFCOMM servislerini destekler.
Web Bluetooth deneysel olarak işaretli ve Baseline değil. Chrome
(masaüstü ve Android), Edge, Opera ve Samsung Internet'te var. macOS ve
iOS'taki Safari ile Firefox desteklemiyor. iPhone ve iPad'de Safari'de
desteklenen bir yol yok; kendi Bluetooth köprüsünü ekleyen üçüncü taraf
tarayıcılar var ve aşağıdaki bildirimlerden biri bunlardan birini kullandı,
ama bu WebKit'in parçası değil. API yalnız HTTPS'te (güvenli bağlam)
çalışır ve requestDevice() düğmeye dokunma gibi bir kullanıcı
hareketinden çağrılmalıdır — yani bir "Yazıcıya bağlan" düğmesi
gerekir.
1. Kullanıcıdan yazıcıyı seçmesini isteyin ve kullanacağınız servisi bildirin. 2. Bağlanın ve özellikleri yazmaya izin veren bir karakteristik bulun. 3. TSPL işini küçük parçalar hâlinde gönderin.
// SERVICE_UUID: yazıcınızın belgesinden ya da bir BLE tarayıcı uygulamasından
const device = await navigator.bluetooth.requestDevice({
acceptAllDevices: true,
optionalServices: [SERVICE_UUID],
});
const server = await device.gatt.connect();
const service = await server.getPrimaryService(SERVICE_UUID);
const chars = await service.getCharacteristics();
const out = chars.find(
(c) => c.properties.writeWithoutResponse || c.properties.write);
const bytes = new TextEncoder().encode(tsplJob);
const CHUNK = 180;
for (let i = 0; i < bytes.length; i += CHUNK) {
const part = bytes.slice(i, i + CHUNK);
if (out.properties.writeWithoutResponse) {
await out.writeValueWithoutResponse(part);
} else {
await out.writeValueWithResponse(part);
}
}
Neden parça parça. Web Bluetooth belirtimi 512 bayttan uzun tek bir
yazmayı reddeder; yazma başına kullanılabilir boyutu ise bağlantının
müzakere edilen MTU'su belirler — tarayıcı müzakere eder, sayfa görmez. Bir
etiket işi, özellikle BITMAP içerenler, bundan çok uzundur; bu
yüzden parça parça gider. 4×6 bir BLE yazıcıyla ilgili bir bildirim,
writeValueWithoutResponse ile 179 baytlık parçaları aralarında
8 ms bekleyerek kayıpsız gönderdi; bu tür sayıları sabit değil, kendi
cihazınız için başlangıç noktası sayın.
UUID'ler yazıcınındır, bizim değil. Servis ve karakteristik
kimlikleri üreticiden üreticiye, hatta modelden modele değişir —
aşağıdaki bildirimler farklı yazıcılarda farklı kısa kimlikler gösteriyor —
ve burada listelemiyoruz. Üreticinin belgesinden ya da bir BLE tarayıcı
uygulamasıyla okuyun. Bir bildiren, optionalServices'in yalnız
tam 128 bitlik UUID biçimiyle çalıştığını gördü.
203 dpi yazıcı (milimetrede 8 nokta) için bir satır metin ve Code 128 barkodlu 50 × 30 mm etiket:
SIZE 50 mm, 30 mm
GAP 2 mm, 0 mm
CLS
TEXT 40,24,"3",0,1,1,"BOX 42"
BARCODE 40,80,"128",80,1,0,2,2,"12345678"
PRINT 1
SIZE ve GAP etiket malzemesini gerçek birimle
tanımlar, CLS görüntü belleğini temizler, TEXT ve
BARCODE içeriği sol üst köşeden nokta cinsinden yerleştirir,
PRINT 1 bir kopya basar. Bu iş
TSPL doğrulayıcıdan bulgusuz geçer
ve TSPL görüntüleyicide etikete sığar;
kendi işinizi havadan göndermeden önce oraya yapıştırın — yanlış
SIZE ya da kenarı aşan bir koordinat bir şerit etiket yerine
ekranda görünür. Komut ayrıntıları
TSPL komut başvurusunda,
geniş önizleme akışı
TSPL önizleme ve hata
ayıklama yazısında.
Bildirim için kullanılan karakteristiğe değil, baskı verisini kabul edene
yazdığınızı kontrol edin. İşin PRINT ile bittiğini kontrol
edin. Bir ailedeki bazı yazıcılar kendi cep yazıcısı komutlarına da cevap
veriyorsa TSPL'in varsayılan olduğunu varsaymayın: bir bildirim, aynı
karakteristikte TSPL'in temiz ve kenara hizalı baskı verdiğini, üreticinin
raster komutlarınınsa kesik çıktığını buldu. Siyah dikdörtgen olarak basılan
logo bir TSPL bit kutupluluğu sorunudur — bkz.
TSPL BITMAP siyah kutu
basıyor. Zebra yazıcılar ve telefondan ZPL için yollar farklıdır; bkz.
iPhone, iPad ya da
Android'den ZPL basmak.
Evet, yazıcı Bluetooth Low Energy kullanıyorsa ve tarayıcı Web Bluetooth'u uyguluyorsa: masaüstü ve Android'de Chrome, Edge, Opera ve Samsung Internet. iPhone, iPad ve macOS'taki Safari ile Firefox desteklemiyor.
Hayır. Web Bluetooth BLE cihazlarla GATT üzerinden konuşur. Classic seri port yazıcılar için Chrome, Chrome 117 masaüstünde eşlenmiş cihazlardaki SPP gibi RFCOMM servislerini destekleyen Web Serial API'yi gösterir.
Web Bluetooth belirtimi 512 bayttan uzun tek bir yazmayı reddeder ve yazma başına kullanılabilir boyut bağlantının MTU'suna bağlıdır. Bir bildirim 179 baytlık parçaları 8 ms arayla kayıpsız gönderdi; boyutu kendi yazıcınıza göre ayarlayın.
USB etiket yazıcısının 9100 portu yoktur. İşletim sisteminin yazdırma kuyruğu ham ZPL'i nasıl taşır ve Labelixa agent'ı o kuyruğu bulut API'ye nasıl bağlar.
CUPS Güncellemesinden Sonra Etiket Büyük, Kesik ya da Boş BasıyorLinux güncellemesinden sonra etiket büyüyor, kesiliyor, boş çıkıyor ya da barkod siyah blok oluyor. Sürücülü kuyruğun payı ve ham kuyruk çözümü.
Etiket neden yanlış yazıcıdan çıktı?Etiketin yanlış yazıcıdan çıkması şanssızlık değil, bir kimlik sorunudur: kuyruk adları, DHCP kiraları ve paylaşılan sürücüler. Teşhis ve önleme.
macOS ve Linux'ta Ham CUPS Kuyruğuyla ZPL Basmaklpadmin ile ham (raw) CUPS kuyruğu kurma, lp ile ZPL gönderme ve klasik tuzak: süzgeçli kuyruğun ZPL kodunuzu düz metin olarak basması.