Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Podobne dokumenty
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

#line #endif #ifndef #pragma

INFORMATOR TECHNICZNY WONDERWARE. Odczytywanie danych z arkusza Excel za pomocą zapytań SQL do aplikacji InTouch

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Podział programu na moduły

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

INFORMATOR TECHNICZNY WONDERWARE

Informatyka I : Tworzenie projektu

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

1 Podstawy c++ w pigułce.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Wstęp do Programowania, laboratorium 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

INFORMATOR TECHNICZNY WONDERWARE

PARADYGMATY PROGRAMOWANIA Wykład 4

INFORMATOR TECHNICZNY WONDERWARE

Fragment wykładu z języka C ( )

Kontrolka ActiveX Internet Explorer w aplikacji wizualizacyjnej InTouch

Zofia Kruczkiewicz, ETE8305_2 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 5 Okna MDI i SDI, dziedziczenie

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Instalacja oprogramowania Wonderware Application Server 3.0 na potrzeby Platformy Systemowej Wonderware

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Co nie powinno być umieszczane w plikach nagłówkowych:

Ćwiczenie 1. Przygotowanie środowiska JAVA

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Wykład 5: Klasy cz. 3

INFORMATOR TECHNICZNY WONDERWARE. Narzędzie redundancji systemu alarmowania Alarm Hot Backup dla oprogramowania. Struktura systemu redundantnego

INFORMATOR TECHNICZNY WONDERWARE

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

2 Przygotował: mgr inż. Maciej Lasota

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

STWORZENIE MOBILNEJ APLIKACJI,

Klasy abstrakcyjne i interfejsy

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Praca w środowisku Visual Studio 2008, Visual C

Instalacja komponentów systemu operacyjnego Microsoft Windows konfiguracja ustawień regionalnych

1 Podstawy c++ w pigułce.

Zaawansowane aplikacje internetowe

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Programowanie obiektowe

Microsoft Foundation Classes

Programowanie obiektowe

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Szablony klas, zastosowanie szablonów w programach

PMiK Programowanie Mikrokontrolera 8051

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

zastępować zarezerwowane słowa lub symbole innymi,

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Szablony funkcji i klas (templates)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Sieciowa komunikacja procesów - XDR i RPC

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy programowania skrót z wykładów:

ALGORYTMY I STRUKTURY DANYCH

Pytania sprawdzające wiedzę z programowania C++

Programowanie strukturalne i obiektowe. Funkcje

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Programowanie strukturalne język C - wprowadzenie

INFORMATOR TECHNICZNY WONDERWARE. Tworzenie raportów zmianowych lub szarŝ w ActiveFactory. Wstęp. Kalkulacje czasu uŝywając funkcji Microsoft Excel

Podstawy języka skryptowego Lua

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Polska wersja pakietu raportowego ActiveFactory 9.1 wymaga polskiego systemu operacyjnego Windows 2000 / Windows XP / Windows 2003.

Konfiguracja programu komunikacyjnego DAServer SIDirect do komunikacji ze sterownikami Siemens S7 300 i 400 po protokole Ethernet

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Język C - podstawowe informacje

Zaawansowane aplikacje internetowe

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Język ludzki kod maszynowy

Zaawansowane programowanie w C++ (PCP)

Powtórka algorytmów. Wprowadzenie do języka Java.

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Zmienne, stałe i operatory

Wstęp do programowania

Instalacja oprogramowania Platforma Systemowa ArchestrA 2012 R2

Microsoft IT Academy kurs programowania

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Wstęp INFORMATOR TECHNICZNY WONDERWARE. Wysyłanie wiadomości z programu Wonderware Historian. 1. Aktywowanie Database Mail

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Obliczenie azymutu ze współrzędnych wersja C++ Builder

Programowanie w Internecie. Java

Programowanie strukturalne i obiektowe

Transkrypt:

INFORMATOR TECHNICZNY WONDERWARE Informator Techniczny nr 60 04-12-2002 Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch Wstęp PoniŜsza dokumentacja oparta na przykładach stworzonych w środowisku Visual C++ przedstawia etapy postępowania w celu stworzenia i wykorzystania biblioteki DLL w skryptach oprogramowania InTouch. Omówienie Bibliotekami DLL, które mogą być wykorzystane w skryptach oprogramowania InTouch są regularne biblioteki DLL gdyŝ w porównaniu z innymi typami bibliotek tylko te eksportują funkcje z biblioteki DLL, a nie z klas C++. Proces tworzenia regularnej biblioteki DLL rozpoczynamy od utworzenia nowego projektu określając typ projektu jako MFC AppWizard (dll). W oknie kreatora biblioteki DLL określamy jej typ jako bibliotekę regularną. Wybór projektu biblioteki DLL w Kreatorze aplikacji. ASTOR Sp. z o.o. Dział Oprogramowania Przemysłowego ul. Smoleńsk 29, 31-112 Kraków tel.: 012 428-63-30 fax: 012 428-63-09 e-mail: wonderware1@astor.com.pl http://www.astor.com.pl

Określenie typu biblioteki DLL. Po utworzeniu podstawowej powłoki biblioteki, tworzymy nową klasę typu Generic, w której umieszczamy funkcje biblioteczne. W celu eksportowania zbudowanych funkcji naleŝy zadeklarować je jako funkcje eksportowe, stosując następującą konstrukcję : extern C <typ funkcji> PASCAL EXPORT <deklaracja funkcji> NaleŜy tego dokonać zarówno w prototypie funkcji w pliku nagłówkowym (.h) jak i w pliku kodu źródłowego (.cpp). Ponadto naleŝy wyeliminować w kodzie źródłowym stworzonej klasy konstruktor i destruktor, zaś w pliku nagłówkowym kaŝdy ślad rzeczywistej klasy, pozostawiając jedynie wywołania funkcji. Modyfikacje te przedstawiają poniŝsze przykłady. Kod źródłowy klasy mocczynnatg. Przykład funkcji zwracającej wartość mocy czynnej Turbogeneratora. // mocczynnatg.cpp: implementation of the mocczynnatg class. // #include "stdafx.h" #include "mocczynna.h" #include "mocczynnatg.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]= FILE ; #define new DEBUG_NEW #endif 2

// Construction/Destruction //mocczynnatg::mocczynnatg() // //mocczynnatg::~mocczynnatg() // extern "C" float PASCAL EXPORT mocczynnatg(float k1,float k2, int Q_MPEC, int Q_STOMIL, int Q_STAB, int Q_3_0, int Q_1_7, int Q_0_8) { int Q_CO,Q_TECH; Q_CO=Q_MPEC+Q_STOMIL+Q_STAB; Q_TECH=Q_3_0+Q_1_7+Q_0_8; return (k1*q_co+k2*q_tech); Plik nagłówkowy klasy mocczynnatg // mocczynnatg.h: interface for the mocczynnatg class. // #if!defined(afx_mocczynnatg_h 6DC3A3BA_C943_11D6_9B77_0080C8F63767 INCLUDED_) #define AFX_MOCCZYNNATG_H 6DC3A3BA_C943_11D6_9B77_0080C8F63767 INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 //class mocczynnatg //public: // mocczynnatg(); // virtual ~mocczynnatg(); //; extern "C" float PASCAL EXPORT mocczynnatg(float k1,float k2, int Q_MPEC, int Q_STOMIL, int Q_STAB,int Q_3_0, int Q_1_7, int Q_0_8); #endif //!defined(afx_mocczynnatg_h 6DC3A3BA_C943_11D6_9B77_0080C8F63767 INCLUDED_) 3

Po skompilowaniu klasy, naleŝy zmodyfikować plik DEF projektu biblioteki dodając do niego wszystkie nazwy wyeksportowanych funkcji, tak jak na poniŝszym przykładzie: ; mocczynna.def : Declares the module parameters for the DLL. LIBRARY "mocczynna" DESCRIPTION 'mocczynna Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here mocczynnatg Po zbudowaniu biblioteki DLL naleŝy stworzyć plik z rozszerzeniem wdf. Dzięki temu plikowi WindowMaker jest w stanie rozpoznać stworzoną bibliotekę DLL. Plik ten specyfikuje sekwencje wywołania funkcji, informacje o pliku pomocy oraz informacje o przekazaniu połączenia. Plik ten tworzy się korzystając z programu Crypt.exe zawartego w Extensibility Toolkit przy pomocy wejściowego pliku definicji (.idf).komenda tworząca plik wdf wygłąda następująco: CRYPT <infile>.idf <outfile>.wdf /e Dokładny opis tworzenia pliku idf zawarty jest w rozdziale 9 Wonderware Extensibility Toolkit Users Guide. PoniŜej został przedstawiony streszczony opis tworzenia pliku idf na bazie zbudowanej biblioteki mocczynna.dll. Plik typu idf składa się przede wszystkim z ciągu nazw wywołań, plików, flag, bibliotek, funkcji, sposobu przesyłania argumentów funkcji oraz typów samej funkcji jak i jej argumentów. Komentarze w pliku idf zaznaczone są znakiem średnika ;. Przykładowy plik idf wygląda następująco: ; ; mocczynna.idf ; Version=1,,,- puste miejsca oddzielone przecinkiem i spacją ; tu wpisuje się nazwę pliku pomocy i jego parametry. MocCzynnaTg,,,0,0x08000028,pastemocczynnaTg,MOCCZYNNA,MOCCZYNNA, mocczynnatg,pascal,float,float,float,int,int,int,int,int,int typ zwracany typy argumentów funkcji Opis nazw: MocCzynnaTg dowolna nazwa reprezentująca daną funkcję biblioteczną w zestawieniu wszystkich dostępnych skryptów w InTouch u. 0 oznacza iŝ dana funkcja będzie zwracać jakąś wartość; dla void stosuje się 1. 0x08000028 zestaw flag, młodsze słowo zawiera informacje gdzie i w jaki sposób dana funkcja moŝe być uŝyta, starsze słowo zawiera informacje dotyczące rodzaju skryptu do jakiego ma być dana funkcja przypisana np. Math Function. pastemocczynnatg nazwa funkcji przekazująca krótką definicję danej funkcji. MOCCZYNNA nazwa biblioteki DLL zawierająca funkcję pastemocczynnatg. mocczynnatg nazwa wykorzystywanej funkcji z biblioteki DLL. PASCAL sposób przekazywania argumentów funkcji. 4

Funkcja przekazująca definicję danej funkcji ma za zadanie w momencie wybrania jej przez uŝytkownika ze zbioru dostępnych skryptów wyświetlić zbiór argumentów uŝywanych przez daną funkcję. Dzięki uŝyciu makra MAKELONG definiuje się długość podświetlanego tekstu w definicji danej funkcji. Funkcja pastemocczynnatg mieści się w pliku kodu źródłowego klasy mocczynnatg. Jej postać jest następująca: extern "C" long PASCAL EXPORT pastemocczynnatg(lpstr funcname, LPSTR result ) { long hilite=0; lstrcpy( result, funcname ); if( lstrcmpi(funcname, "MocCzynnaTg") == 0 ) { lstrcat( result, " (k1,k2,q_mpec,q_stomil,q_stab,q_3_0,q_1_7,q_0_8);" ); hilite = MAKELONG(11,19); return( hilite ); NaleŜy pamiętać o zadeklarowaniu tej funkcji w pliku nagłówkowym mocczynnatg.h extern "C" long PASCAL EXPORT pastemocczynnatg(lpstr funcname, LPSTR result ); oraz o dodaniu jej nazwy do pliku DEF. Po ponownym skompilowaniu i zbudowaniu biblioteki mocczynna.dll oraz po utworzeniu na podstawie biblioteki i pliku mocczynna.idf pliku mocczynna.wdf uzyskuje się kompletne narzędzie do zastosowania we skryptach oprogramowania InTouch. Aby dana funkcja ze zbudowanej biblioteki DLL była widoczna we skryptach środowiska InTouch naleŝy pliki mocczynna.dll oraz mocczynna.wdf skopiować do głównego katalogu InTouch. Po kaŝdej modyfikacji funkcji w bibliotece DLL zaleca się ponowne utworzenie pliku wdf, po czym całość (tzn. plik wdf i bibliotekę DLL) skopiować do katalogu InTouch i ponownie uruchomić środowisko InTouch. 5