Novexx XApps
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.
Bir XApps uygulaması (JS uygulaması) üç farklı ortamda çalışabilir :
- Novexx yazıcının içerisinde
- Node.js kurulmuş bir bilgisayarda
- 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
npm install nxmi.tgz
"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);
Yorumlar
Yorum Gönder