Novexx XApps

 


Yeni nesil etiket yazıcılarımızdan 
XPA93x, yaz & yapıştır modeli olmakla beraber, XLP60x, XLP51x masaüstü, XDM94x ise print engine modeli olarak anılmaktadır. Bu cihazların içinde koşan yazılım (firmware) Linux tabanlıdır. Bunun bir avantajı olarak, cihazın dahili (flash) belleğinde konumlanabilen küçük programlar yazılabilmektedir. XApps olarak adlandırılan bu programlar sayesinde NOVEXX Solutions donanımının yazılımındaki işlevler, değiştirilebilmekte veya ilaveler yapılabilmektedir. XApp'ler kompakt Node.js (JavaScript) programlarıdır. JS API aracılığıyla firmware ile etkileşime girebilirler. Bir XApps uygulaması, JavaScript bilgisine sahip herkes tarafından kolayca yazılabilir. 


JS API dokümanına, bir internet tarayıcı kullanarak cihazın web arayüzünden ulaşılabilmektedir..

Resimde gözüken, JS ikonunun hemen üstünde bulunan dosya yöneticisi sayesinde, cihazın hafızasında bulunan dosyalar, bilgisayara indirmeden de düzenlenebilmekte veya silinebilmektedir.


Customization dizininde örnek XApps programları ve json dosyaları bulunmaktadır.

Bir XApps uygulaması (JS uygulaması) üç farklı ortamda çalışabilir :

  1. Novexx yazıcının içerisinde
  2. Node.js kurulmuş bir bilgisayarda
  3. Internet tarayıcı ile (Chrome, Edge, Opera vs.)

Web sayfası tasarlayanların bildiği gibi JavaScript (JS), eskiden sadece kullanıcı tarafında, tarayıcı ile açılan bir html dosyasında kullanılırdı. Node.js sayesinde JS artık sunucu tarafında da kullanılmaktadır. Node.js'i asenkron olaya dayalı bir JS çalıştırma (runtime) ortamı olarak tanımlayabiliriz. O kadar popüler hale gelmiştir ki npm diye adlandırılan paket yöneticisinin web sayfasında iki milyondan fazla paket (kütüphane), yazılımcılara ücretsiz olarak sunulmuştur. Örneğin bir excel dosyasını okumak veya yazmak için npm ile xlsx modülünü bilgisayara kurmak yeterli olacaktır. XApps uygulaması, örneğin bir XPA934 cihazının içinde tek başına çalışabilir demiştik. Bunun yanı sıra, başka bir proje için, bilgisayarda çalışan bir Node.js programı ile XPA934'ü ethernet üzerinden haberleştirerek etikete yazılacak bilgileri yazıcıya yollamak da gayet mümkündür.. Node.js içinde yüklü gelen modüller, burada listelenmiştir. Örneğin net modülü ile yazıcıya, bilgisayardan etiket bilgilerini yollayabiliriz.

XApps uygulamasına pratik bir örnek vermek gerekirse, diyelim ki XPA934 yazıcısı, konveyörde bulunan koliye bir etiketi otomatik olarak yapıştırdıktan sonra harici bir pnömatik silindir ile etiketi katlamak veya sıvamak istiyorsunuz. Harici silindiri, XApps uygulaması ile kontrol edebilirsiniz. Yazacağınız JS kodu, yazıcıya takılan 8IO kartındaki giriş ve çıkışları kontrol edebilir. Yani böyle bir işleyiş için ayrıca bir PLC kullanmak gerekmeyecektir. 


XApps uygulama geliştirme

Windows'a, Node.js kurulum dosyasını indirip, kurmanız gerekiyor. (Windows Installer .msi dosyası)


Kurulum için aldım, kabul ettim kutucuğunu işaretledikten sonra 4 kez Next'e ardından Install'a tıklamak ve gelen soruya evet demek yeterli oluyor.

Kurulumu, diğer işletim sistemleri için de kolayca yapabilirsiniz.

Bilgisayarda boş bir proje dizini açtınız. Cihazın web arayüzünden nxmi.tgz dosyasını bu dizine indirdiniz. Komut istemi (CMD) penceresini açtınız ve bu dizine geldiniz. Aşağıdaki satırı kopyalayıp yapıştırdıktan sonra enter tuşuna basın. (Bu esnada bilgisayar internete bağlı olmalıdır)

npm install nxmi.tgz

Yazacağınız uygulamayı öncelikle bilgisayar tarafında test edip, daha sonra cihaza yüklemeniz gerekiyor. Bilgisayar ve cihazı (XPA934) ethernet kablosuyla birbirine bağlamanız gerekiyor. JS kodu, bilgisayarda, sanki cihazın içindeymiş gibi çalışabiliyor. 


"use strict";

const nxmi = require('nxmi');
const DEVICE_IP='192.168.2.99'; // yazıcının ip adresi  
// bu kod yazıcı içinde çalışıyor ise DEVICE_IP='localhost' olmalıdır

function ack(msg){/*console.log("ack " + JSON.stringify(msg));*/}

function startSignalInputChanged(msg) {
    if (msg.value == true) {
//        nxmi.mstatus.startSignalTrigger(ack);
          nxmi.mstatus.startSignalWithOffsetTrigger(ack);
    }
}

function calistir(msg) {
    console.log('StateChanged ' + JSON.stringify(msg));    
}

function open_mstatus() {
    console.log('open_mstatus:' + new Date().toString());
    nxmi.mstatus.registerMachineStateChanged(ack, calistir);
}

function open_iosignals() {
    nxmi.iosignals.registerInputUpdate(nxmi.iosigconsts.HW_8IO1_IN5, ack, startSignalInputChanged); 
}

nxmi.mstatus.open(open_mstatus, DEVICE_IP); 
nxmi.iosignals.open(open_iosignals, DEVICE_IP);


Bu kodu, Notepad'e yapıştırın. Dosyayı single.js adıyla aynı dizine kaydedin. Komut istemi penceresinde node single komutunu verdiğinizde programın çalıştığını göreceksiniz. Yazıcı ekranında, cihazı durduran ve çalıştıran tuşa bastığınızda, bu durum değişikliklerinin bilgisayara bildirildiğini göreceksiniz.

Programın, cihazın içinde çalışması için DEVICE_IP sabitinin değerini 'localhost' yapmanız gerekiyor. Bir de dosyayı, web arayüzü ile dahili hafızada apps dizinine yerleştirmelisiniz.




Yazıcıyı PLC gibi kullanmak istiyorsak, aplikatörlü sistemlerde standart olan 8IO kartı gerekmektedir. Etiketi, direk ürün üzerine sıyıran basic modelde (aplikatörsüz) normalde 8IO kartı bulunmamakta, opsiyonel olarak takılabilmektedir. Bir sisteme en fazla 3 adet takılabilen 8IO kartı 8 giriş, 8 çıkış içermektedir.

Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Lazarus free pascal - Tanıtım