FELHASZNÁLÓI FELÜLET FEJLESZTÉSE AZ EPICS RENDSZERHEZ. Kósa Márk 1, Pánovics János 1, Heinrich du Toit 2 Nyakóné Juhász Katalin 1, John Pilcher 2

Hasonló dokumentumok
Elemi alkalmazások fejlesztése III.

3D-s számítógépes geometria és alakzatrekonstrukció

3D-s számítógépes geometria és alakzatrekonstrukció

Elemi alkalmazások fejlesztése III.

Alkalmazások fejlesztése III. Qt 4 /C++ alapú grafikus alkalmazás Bevezetés I.

Grafikus Qt programok írása segédeszközök nélkül

Java I. A Java programozási nyelv

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Bevezetés az informatikába

OOP és UML Áttekintés

Kommunikációs rendszerek teljesítőképesség-vizsgálata

Operációs rendszerek. Az X Window rendszer

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Bevezető. Servlet alapgondolatok

Robotot vezérlő szoftverek fejlesztése Developing robot controller softwares

A Java EE 5 plattform

ISA szimulátor objektum-orientált modell (C++)

Közösség, projektek, IDE

Budapest, március. ELTE Informatikai Kar

Dr. Schuster György október 30.

JAVA webes alkalmazások

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelő GUI alkalmazás készítése 3. Összetett tábla karbantartása

Bevezetés a programozásba Előadás: A const

A Debreceni Egyetem és a Nagyváradi Egyetem WiFi alapú helymeghatározó rendszere

Webes alkalmazások fejlesztése

Programozási technológia

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

WWW MULTIMÉDIA INTERFÉSZ ADATBÁZISHASZNÁLATHOZ AZ INTERNETEN

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Iman 3.0 szoftverdokumentáció

MVC. Model View Controller

ARM Cortex magú mikrovezérlők

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Elemi alkalmazások fejlesztése III

Bevezetés a programozásba előadás: Öröklődés

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Elemi alkalmazások fejlesztése III. A Qt assistant elindítása. Ajánlott ir odalom. A Qt assistant nyitó ablaka

Bevezetés a programozásba Előadás: Fordítási egység

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Virtuális függvények (late binding)

Elemi alkalmazások fejlesztése III

Számítógépes munkakörnyezet II. Szoftver

Alkalmazás és megjelenítés virtualizáció

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Végfelhasználói Applet kézikönyv

Programozás II gyakorlat. 4. Öröklődés

Verifikáció és validáció Általános bevezető

Osztálytervezés és implementációs ajánlások

Osztott alkalmazások fejlesztési technológiái Áttekintés

Osztálytervezés és implementációs ajánlások

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Java I. A Java programozási nyelv

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Flex: csak rugalmasan!

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Biztonsági folyamatirányító. rendszerek szoftvere

Mobil informatika gyakorlat. 2. óra: NFC a gyakorlatban

Miért jó nekünk kutatóknak a felhő? Kacsuk Péter MTA SZTAKI

SZOFTVEREK A SORBANÁLLÁSI ELMÉLET OKTATÁSÁBAN

A szoftverfejlesztés eszközei

TÁVOKTATÁSI TANANYAGOK FEJLESZTÉSÉNEK MÓDSZERTANI KÉRDÉSEI

Mérnök informatikus (BSc) alapszak levelező tagozat (BIL) / BSc in Engineering Information Technology (Part Time)

Operációs rendszerek - bevezető

Cloud computing Dr. Bakonyi Péter.

A NetBeans IDE Ubuntu Linux operációs rendszeren

SZEMLÉLETES RÉSZINFORMÁCIÓK INTEGRÁCIÓS PROBLÉMÁINAK VIZSGÁLATA A VIRTUÁLIS VALÓSÁGOT TEREMTŐ SZIMULÁTOROK ALAPJÁN

Produktív környezetben használt, nyílt forráskódú komplex térinformatikai megoldások dr. Siki Zoltán

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Objektum orientált kiterjesztés A+ programozási nyelvhez

A L i n u x r u h á j a

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

SZET GYAK1: Követelmények ellenőrzése

QLabel *label = new Qlabel("Hello Qt!",0);

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Swing GUI készítése NetBeans IDE segítségével

ATM hálózatra épülő Interaktív Televízió Szolgáltatás

Grid menedzsment megoldás az ARC köztesrétegben

iseries Client Access Express - Mielőtt elkezdi

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

ARM Cortex magú mikrovezérlők. mbed

Tervezőeszközök, fejlesztőeszközök használata Qt alapú alkalmazásoknál. Saját vezérlő használata tervezőben (worldclocks)

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Projekt beszámoló. NEWSIT News basedearlywarning System forintradaytrading: Hír alapú Korai Figyelmeztető Rendszer Napon belüli Kereskedéshez

Az ErdaGIS térinformatikai keretrendszer

A felhőről általában. Kacsuk Péter MTA SZTAKI

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Mobil készülékek programozása

Könyvtári címkéző munkahely

Átírás:

FELHASZNÁLÓI FELÜLET FEJLESZTÉSE AZ EPICS RENDSZERHEZ DEVELOPMENT OF A GRAPHICAL USER INTERFACE FOR THE EPICS SYSTEM Kósa Márk 1, Pánovics János 1, Heinrich du Toit 2 Nyakóné Juhász Katalin 1, John Pilcher 2 1 Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék 2 ithemba Labs, Cape Town Összefoglaló A Magyar Dél-afrikai Kormányközi TéT keretében létrejött együttműködést magyar részről a Debreceni Egyetem Informatikai Kara (IK), dél-afrikai részről az ithemba Laboratory for Accelerator Based Sciences (ithemba LABS) koordinálja. A két intézet tapasztalatai és lehetőségei nagyon jól kiegészítik egymást. Az ithemba LABS-nek sok kutatási és fejlesztési projektje van, ezért állandóan biztosítania kell kísérleti eszközeinek magas szintű megbízhatóságát. Az IK nagy információtechnológiai tapasztalattal és gyakorlattal rendelkezik a számítógéprendszerek tervezésében és a szoftverfejlesztésben, illetve ezen ismeretek oktatásában, kevés lehetőség van azonban technikai problémákkal foglalkozni. A kétéves projekt egy precíziós, nagy intenzitású nyalábosztó rendszer és a hozzá tartozó nyalábcsatorna vezérléséhez és diagnosztikájához szükséges szoftverek tervezésére, fejlesztésére és tesztelésére irányul. Cikkünkben a projekt keretében eddig elkészült szoftverről és a fejlesztés során szerzett tapasztalatainkról számolunk be. Kulcsszavak EPICS, MEDM, Qt programkönyvtár, signal/slot technika, Qt plugin, nemzetköziesítés Abstract The Hungarian South African Intergovernmental Cooperation in the frame of the Hungarian Science and Technology Foundation is coordinated by the University of Debrecen, Department of Informatics (DI) from Hungarian side, and ithemba Laboratory for Accelerator Based Sciences (ithemba LABS) from South African side. The experience and facilities of these two institutes complement each other very well. ithemba LABS has a lot of research and development projects, thus it needs to provide constant availability of its equipments. DI has lots of experience and practice in computer system design and software development, as well as in education of this knowledge, but it has very little chance to deal with technical problems. This two-year project aims at designing, developing and testing sotware used to control and diagnose a high precision, high intensity beam splitter system and the belonging beam tube. In this paper we show the software made by us so far in the frame of the project and about our experience of development. Keywords EPICS, MEDM, Qt program library, signal/slot technique, Qt plugins, internationalization 1

1. Együttműködés a TéT keretében A Magyar Dél-afrikai Kormányközi TéT keretében létrejött együttműködést magyar részről a Debreceni Egyetem Informatikai Kara (IK), dél-afrikai részről az ithemba Laboratory for Accelerator Based Sciences (ithemba LABS) koordinálja. A két intézet tapasztalatai és lehetőségei nagyon jól kiegészítik egymást. Az ithemba LABS-nek sok kutatási és fejlesztési projektje van, ezért állandóan biztosítania kell kísérleti eszközeinek magas szintű megbízhatóságát. Az IK nagy információtechnológiai tapasztalattal és gyakorlattal rendelkezik a számítógéprendszerek tervezésében és a szoftverfejlesztésben, illetve ezen ismeretek oktatásában, kevés lehetőség van azonban technikai problémákkal foglalkozni. A kétéves projekt egy precíziós, nagy intenzitású nyalábosztó rendszer és a hozzá tartozó nyalábcsatorna vezérléséhez és diagnosztikájához szükséges szoftverek tervezésére, fejlesztésére és tesztelésére irányul. A projekt első fázisában az ithemba LABS részecskegyorsítójának vezérlésére használt programhoz (EPICS) egy új, felhasználóbarát GUI kifejlesztését tűztük ki célul, amelyhez nyílt forráskódú rendszereket szerettünk volna felhasználni. A kialakítandó szoftverrel szemben elvárás volt, hogy egy grafikus elemekkel tetszőlegesen bővíthető interfészt nyújtson az EPICS rendszerhez, ezáltal ugyanis könnyebben kielégíthetők lennének a részecskegyorsító operátorainak az igényei, valamint hogy legyen lehetőség a szoftver nemzetköziesítésére. Választásunk azért esett a Qt grafikus programkönyvtárra, mert a signal/slot technológia segítségével szabványos módon tudjuk megoldani az EPICS folyamatváltozói (process variable, PV) és a grafikus elemek közötti kapcsolatot, a beépíthető modulok (plugin) biztosítják a könnyű bővíthetőséget, ráadásul a Qt hatékony eszközöket nyújt a különböző nyelvek közötti váltáshoz is. 2. Az EPICS rendszer Az Experimental Physics and Industrial Control System (magyarul: kísérleti fizikai és ipari vezérlő rendszer, röviden EPICS) szoftveres eszközök és alkalmazások olyan együttese, amely szoftveres infrastruktúrát biztosít elosztott vezérlő rendszerek építéséhez, részecskegyorsítók vagy nagy teleszkópok működtetéséhez és komplex kísérletek vezérléséhez. Az ilyen elosztott vezérlő rendszerek tipikusan több tíz, vagy akár több száz számítógépből állnak, amelyek hálózatba vannak kapcsolva, egyrészt ezzel biztosítva közöttük a kommunikációt, másrészt pedig hogy egy központi vezérlőből vagy akár az internetről vezérelhessük a rendszer különböző részeit, illetve hogy visszajelzést kaphassunk tőlük. Az EPICS a kliens/szerver és a publish/subscribe (közzétesz és előfizet) technikákat használja a számítógépek közötti kommunikáció során. A legtöbb szerver (amelyeket input/output controllernek, IOC-nek nevezünk) valós I/O-t és helyi vezérlő feladatokat hajt végre, és a klienseknek közzétesz bizonyos információkat a Channel Access (CA) hálózati protokoll segítségével PV-ken keresztül. A CA-t az olyan nagy sávszélességet igénylő, valós idejű hálózati alkalmazásokra optimalizálták, mint amilyen az EPICS is, ez az egyik oka, amiért több száz számítógépet magában foglaló vezérlő rendszerek építéséhez is használható. Az Advanced Photon Source (APS) intézménynél az EPICS-et több rendszer vezérlésére is használják. Körülbelül 250 IOC van (főleg Motorola VME kártyák MC680x0 és PowerPC processzorokkal, amelyek vxworks operációs rendszert futtatnak, de egyre több IOC már Linuxot, MacOS-t és RTEMS-et futtat), amelyek közvetlenül vagy közvetetten irányítják 2

csaknem az összes gépi műveletet, míg a vezérlőben 40 darab Sun munkaállomás és szerver biztosítja a magas szintű vezérlést, és nyújt felületet az operátoroknak, valamint az adatok archiválását, naplózását és elemzését is ezek végzik. A mérnökök és fizikusok számára egy Channel Access Gateway biztosít lehetőséget arra, hogy az IOC-ktől (és az irányított eszközöktől) biztonságos távolságban, az épület más részeiben vizsgálhassák az IOC-k aktuális állapotát, de megakadályozza, hogy illetéktelen módosításokat végezzenek a működő rendszerben. Sok esetben a mérnökök biztonságos internetkapcsolaton keresztül otthonról is felderíthetik és kijavíthatják a rendszerben fellépő hibákat. Az EPICS-nek megbízhatónak kell lennie, és biztosítania kell az intézményeknek, hogy a kapott vezérlő rendszer karbantartható és könnyen frissíthető legyen. Az APS-nél az említett több mint 200 IOC legtöbbjének meghibásodása vagy leállása azt eredményezheti, hogy az APS gyorsítója eldobja a sugarat, sőt bizonyos esetekben egy hibás output egyes eszközök meghibásodását is okozhatja, amelynek javítása több ezer dollárba kerülhet, és több napot, vagy akár heteket is igénybe vehet. Az IOC-knek folyamatosan kell működniük hónapokon keresztül újraindítás nélkül, ezért az EPICS megbízhatósága segíti az APS-t a sugár 95%-os vagy jobb rendelkezésre állásának biztosításában. 1. ábra Az EPICS rendszer honlapja 3

Eredetileg az összes EPICS IOC-nek a Wind River wxworks valós idejű operációs rendszerét kellett futtatnia, de 2004 óta lehetőség van GNU/Linuxot, Solarist, MS Windowst, MacOS-t és RTEMS-et is futtatni. Rendelkezésre állnak olyan hordozható szoftverek is, amelyek lehetővé teszik, hogy az EPICS-től eltérő vezérlő rendszereket CA szerverekként használhassunk. A CA kliensek mindig is számítógépek és operációs rendszerek széles skáláján működtek a legkedveltebbek a Unix, a GNU/Linux, a Windows, az RTEMS és a vxworks. Az EPICS-et eredetileg a Los Alamos National Laboratory és az Argonne National Laboratory fejlesztették ki, ma pedig már számos tudományos intézmény használja az egész világon. Ilyen például a claytoni (Ausztrália) Australian Synchrotron, a berlini (Németország) Berlin Electron Synchrotron, a villigeni (Svájc) Swiss Light Source, a Newport News-i (USA) Jefferson Laboratory, a padovai (Olaszország) Laboratori Nazionali di Legnaro, a didcoti (Nagy Britannia) Diamond Light Source és az tsukubai (Japán) KEK B-Factory. Az EPICS-et ma már ezen csoportok egymással együttműködve fejlesztik, és megosztják egymás között az I/O eszközök támogatását és a kliens alkalmazásokat. 3. A Qt programkönyvtár A Qt egy keresztplatformos alkalmazói keretrendszer asztali és beágyazott fejlesztésekhez. Tartalmaz egy intuitív API-t, egy gazdag C++ osztálykönyvtárat, integrált eszközöket GUI-k fejlesztéséhez és a nemzetköziesítéshez, valamint Java és C++ fejlesztői támogatást. A Qt lehetővé teszi, hogy a forráskód újraírása nélkül olyan alkalmazásokat készítsünk, amelyek különböző asztali operációs rendszereken és beágyazott eszközökön futnak. 3.1. A signal/slot mechanizmus A signalokat és slotokat objektumok közötti kommunikációra használják. A signal/slot mechanizmus a Qt központi eszköze, és valószínűleg ez az a rész, amely a leginkább különbözik a más keretrendszerek által biztosított eszközöktől. Egy GUI programozásánál, amikor módosítunk egy widgetet (a GUI egy tetszőleges elemét), gyakran szeretnénk, hogy erről a módosításról egy másik widget is értesüljön. Általánosabban azt szeretnénk, hogy bármilyen típusú objektum bármilyen típusú objektummal tudjon kommunikálni. Például ha a felhasználó rákattint a Bezár gombra, vélhetően azt szeretnénk, hogy meghívódjon az ablak close() metódusa. A régebbi eszköztárak ezt a fajta kommunikációt az úgynevezett callback mechanizmus segítségével valósították meg. A callback nem más mint egy függvénymutató, tehát ha azt szeretnénk, hogy egy feldolgozó függvény értesítsen minket valamilyen eseményről, akkor át kell adnunk neki egy másik függvényre mutató pointert (callback). Ezután a feldolgozó függvény meghívja ezt a callbacket, amikor szükséges. Ennek a mechanizmusnak két alapvető hátránya van. Egyrészt is nem típusbiztosak: soha nem lehetünk biztosak benne, hogy a feldolgozó függvény a callbacket megfelelő paraméterekkel fogja meghívni. Másrészt a callback szorosan kapcsolódik a feldolgozó függvényhez, hiszen a feldolgozó függvénynek tudnia kell, melyik callbacket kell meghívni. A Qt-ben van egy másik lehetőség: a signalok és slotok használata. Bizonyos események bekövetkezésekor kiváltunk egy signalt. A Qt widgetjei számos előre definiált signallal rendelkeznek, de bármikor származtathatunk új widgeteket az eredetiekből, hogy saját signalokkal egészítsük ki őket. A slot egy olyan függvény, amely egy bizonyos signalra reagálva 4

hívódik meg. A Qt widgetjei számos előre definiált slottal rendelkeznek, de általános gyakorlat, hogy új widgeteket származtatunk az eredetiekből, hogy saját slotokkal egészítsük ki őket, hogy kezelhessük a számunkra érdekes signalokat. A signal/slot mechanizmus típusbiztos: a signal specifikációjának meg kell egyeznie a fogadó slot specifikációjával. Mivel a specifikációk kompatibilisek, a fordítóprogram segíthet felfedezni a típuskeveredéseket. A signalok és slotok lazán kapcsolódnak egymáshoz: az az osztály, amelyik kiváltja a signalt, nem is tudja és nem is érdekli, hogy mely slotok fogják azt kezelni. A Qt signal/slot mechanizmusa biztosítja, hogy ha összekötünk egy signalt egy slottal, akkor a slot megfelelő időben meghívódjon a signal paramétereivel. A signalok és a slotok tetszőleges számú és típusú paraméterrel rendelkezhetnek, és teljes mértékben típusbiztosak. Egy slothoz tetszőleges számú signal köthető, ahogy egy signal is tetszőleges számú slothoz köthető, sőt arra is van lehetőség, hogy egy signalt közvetlenül egy másik signalhoz kössünk, ebben az esetben a második signal azonnal kiváltódik, amikor az első signal kiváltódik. Ahogy egy signal nem tudja, hogy bármi is kezeli-e őt, úgy a slot sem tudja, hogy van-e hozzá kötve signal, ezáltal teljesen független komponenseket készíthetünk a Qt-vel. #ifndef TEXTBOXPLUGIN_H #define TEXTBOXPLUGIN_H #include <QObject> #include <QMainWindow> #include "textboxinterface.h" class TextBoxPlugin : public TextBoxInterface { Q_OBJECT Q_INTERFACES( TextBoxInterface ) public: TextBoxPlugin(); ~TextBoxPlugin(); virtual void exec(); QStringList textboxes() const; protected: virtual void connectnotify( const char *signal ); public slots: virtual void setlanguage( QLocale::Language lang ); signals: void textchanged( QString s ); }; #endif 3.2. Nemzetköziesítés a Qt segítségével 2. ábra Signalok és slotok a QTDM programban Egy alkalmazás nemzetköziesítése az a folyamat, amikor felkészítjük az alkalmazást különböző nyelvi környezetekben történő felhasználására. Bizonyos esetekben a nemzetköziesítés egyszerű, például ha egy amerikai alkalmazás ausztrál vagy brit felhasználók számára szeretnénk elérhetővé tenni, akkor ez szinte csak néhány helyesírási korrekciót igényel. Ha viszont egy amerikai alkalmazást japán felhasználók számára, vagy egy koreai alkalmazást 5

német felhasználók számára szeretnénk elérhetővé tenni, akkor a szoftvernek nemcsak különböző nyelveken kell működnie, hanem más beviteli technikákat, karakterkódolást és megjelenítési szabályokat is igényel. A Qt megpróbálja a nemzetköziesítést a lehető legfájdalommentesebbé tenni a fejlesztők számára. Minden beviteli widget és szövegrajzolási módszer beépített támogatást nyújt minden támogatott nyelvhez. A beépített fontmotor helyesen tudja megjeleníteni a különböző írási rendszerek karaktereiből álló szövegeket. #include <QtDebug> #include "textboxplugin.h" TextBoxPlugin::TextBoxPlugin() { } TextBoxPlugin::~TextBoxPlugin() { } void TextBoxPlugin::exec() { qdebug() << "exec()"; emit textchanged( tr( "apple" ) ); } QStringList TextBoxPlugin::textboxes() const { return QStringList() << tr( "TextBox" ); } void TextBoxPlugin::connectNotify( const char *signal ) { qdebug() << "The" << QLatin1String( signal ) << "signal is connected."; } void TextBoxPlugin::setLanguage( QLocale::Language lang ) { emit textchanged( tr( "apple" ) ); } Q_EXPORT_PLUGIN2(textboxplugin, TextBoxPlugin); 3. ábra Signalok kiváltása és nemzetköziesített sztringek a QTDM TextBoxPlugin osztályának tagfüggvényeiben Akárhol is használ a programunk idézőjelezett szöveget, hogy megjelenítse azt a felhasználónak, biztosítanunk kell, hogy azt feldolgozza a QCoreApplication::translate() metódus. Ahhoz, hogy ezt elérjük, mindössze a QObject::tr() függvényt kell használnunk, ahogy az a 3. ábrán is látható. Ez a felhasználó által látható sztringek 99%-ánál működik. Ha használjuk a tr() függvényt egy alkalmazásban, elő kell állítanunk a felhasználó által látható szövegek fordításait is. Egy Qt alkalmazás fordítása egy három lépéses folyamat: 1) Az lupdate segédprogram futtatása, amely kigyűjti a C++ forráskódból a fordítható szövegeket, és előállít egy üzenet fájlt a szövegfordítók számára (ez egy.ts kiterjesztésű állomány). A segédprogram a tr() konstrukciók alapján ismeri fel a kigyűjtendő szövegeket, és rendszerint nyelvenként egy.ts fájlt generál. 2) A.ts fájlban található forrásszövegekhez fordítások biztosítása a Qt Linguist használatával (4. ábra). Mivel a.ts fájlok XML formátumúak, kézzel is szerkeszthetők. 3) Az lrelease segédprogram futtatása, amely a.ts fájlból egy üzenet fájlt hoz létre, amely már alkalmas a végső felhasználásra. A.ts fájl úgy működik mint egy forrás fájl, a.qm fájl pedig mint egy tárgykód fájl. A szövegfordító a.ts fájlokat szerkeszti, de az alkalmazás felhasználóinak csak a.qm fájlokra van szükségük. Mindkét fájltípus platform- és nyelvfüggetlen. 6

Ezeket a lépéseket az alkalmazás minden egyes verziójához meg kell ismételni. Az lupdate segédprogram mindent megtesz, hogy az előző verzióból újra felhasználja a fordításokat. Mielőtt lefuttatjuk az lupdate-et, elő kell készítenünk egy projektfájlt. Az általunk használt projektfájl az 5. ábrán látható. 4. ábra A Qt Linguist program ###################################################################### # Automatically generated by qmake (2.01a) Cs dec. 13 22:52:30 2007 ###################################################################### TEMPLATE = app subdirs SUBDIRS =. plugin/texboxplugin plugin/caplugin CONFIG += release TARGET = # Input HEADERS += mainwindow.h \ textboxinterface.h \ cainterface.h \ plugindialog.h SOURCES += main.cpp \ mainwindow.cpp \ plugindialog.cpp TRANSLATIONS += p1_hu.ts 5. ábra Egy egyszerű projektfájl a nemzetköziesítéshez 7

4. Kommunikáció egy virtuális gyorsítóval A 6. ábrán egy virtuális lineáris gyorsító vezérlőjének az operátori felületét láthatjuk. A virtuális gyorsítót vezérlő IOC szerver kimenete a hátsó parancsablakban látható (részben takarva az operátori felülettel). Ehhez az IOC szerverhez egy olyan egyszerű program kapcsolódik, amely CA segítségével lekérdezi az operátori felület bal oldalán látható (az ábrán piros színnel jelölt) hőmérsékleti értéket, és megjeleníti azt egy szövegdobozban az alkalmazás munkaterületén. 6. ábra A Virtual Linac és a QTDM működés közben Irodalomjegyzék [1] A Trolltech honlapja, http://trolltech.net. [2] Experimental Physics and Industrial Control System, http://www.aps.anl.gov/epics. 8