czwartek, 24 grudnia 2009

Wszystkiego najlepszego na Boże Narodzenie 2009 [PL]

Dziś Wigilia, dzień wspaniały, niech wesoły będzie cały.
Już choinka w domu świeci, piękny prezent gdzieś tam leci...
Niech się spełnią Twe marzenia - właśnie takie ślę życzenia!

poniedziałek, 21 grudnia 2009

OPC Client .NET (w języku C# (csharp)) [PL]

Zapraszam wszystkich do przeczytania serii postów poświęconych dostępowi do danych w OPC przy pomocy kodu w C# na platformie .NET. Przedstawione przykłady zawierają gotowe do wykorzystania aplikacje i kod źródłowy. Artykuł został podzielony na następujące części:

  1. Teoria: Implementacja klienta OPC w C# - artykuł wprowadzający, bedącym częścią serii "OPC, DCOM, .NET i C# w jednym stali domu"
  2. Przygotowania
  3. Implementacja
  4. OPC klient z linii poleceń (przykład C# .NET)
  5. OPC klient z linii poleceń (gotowa aplikacja i kod w C#)

Życzę wszystkim dobrej lektury, a zainteresowanych tematem zapraszam do dyskusji i komentowania treści.

Promuj

niedziela, 20 grudnia 2009

OPC klient z linii poleceń (gotowa aplikacja i kod w C#) [PL]

W poprzedniej części opisałem jak stworzyć aplikację klienta OPC z linii poleceń (OPC command-line client), czyli aplikację która ma za zadanie odczytywać dane serwera OPC i udostępniać je jako standardowa aplikacja pracująca w "linii poleceń" systemu Windows. Dzięki temu będziemy mogli za pomocą argumentów podawać co chcemy otrzymać, a rezultat zostanie przekazany do standardowego wyjścia, czyli domyślnie na ekran. Dzisiaj zapraszam do pobrania kodu wraz z gotową aplikacją: tutaj do pobrania.

niedziela, 13 grudnia 2009

OPC klient z linii poleceń (przykład C# .NET) [PL]

Promuj

Jakiś czas temu zacząłem cykl poświęcony implementacji klienta OPC (Cz. 1. Przygotowania, Cz. 2. Implementacja), w tym post'cie chciałbym wrócić do tematu i przedstawić przykład gotowego programu, który realizuje opisywane możliwiści:

Klient OPC z linii poleceń (OPC command-line client)

wtorek, 24 listopada 2009

OPC Xi, a słowo ciałem się stało [PL]

Niedawno na tym blogu pisałem o planach OPC Foundation dotyczących Express Interface (Xi). Plany te ogłosił Tom Burke (dyrektor OPC Foundation).

Tydzień temu (2009.11.16) na stronach OPC Foundation pojawiło się oficjalne ogłoszeniu o włączeniu Express Interface (Xi) do portfolio OPC Foundation: "OPC Foundation Adds Express Interface (OPC Xi) to Technology Portfolio". W ogłoszeniu tym pojawiła się też po raz pierwszy nazwa OPC Xi. Na stronach OPC Foundation pojawiła się również strona poświęcona Xi: www.opcfoundation.org/xi.

Promuj

poniedziałek, 23 listopada 2009

Jak zainstalować Sharepoint'a na Windows, który nie jest serwerem (Windows Vista, Seven)? [PL]

Jeżeli ktoś instalował kiedyś Windows Sharepoint Services 3.0 SP 2 (WSS), to pewnie zauważył że wymagany jest Windows 2003 SP1, a próba instalacji kończy się niepowodzeniem już na samym początku (po weryfikacji systemu). Ci którzy chcą się jednak uprzeć i zainstalować WSS na nie-serwerowym Windows, polecam przeczytanie artykułów (pokazują jak to zrobić na Windows Vista i Seven).

czwartek, 19 listopada 2009

Podziel się - gadżet do Bloggera [PL]

Dzisiaj krótko. Ostatnio znalazłem wreszcie coś czego mi od dłuższego czasu brakowało, coś co chciałem nawet ręcznie zrobić, ale znalazłem gotowca ;) Piszę tutaj o gadżecie do Blogger'a pozwalającego na dodawanie wpisu do najpopularniejszych serwisów typu "wykop". W działaniu pewnie każdy widzi teraz gadżet nad tym postem, a Ci którzy chcą go wykorzystać na swoim blogu, polecam przeczytać artykuł: http://kodatnik.blogspot.com/2009/10/podziel-sie-gadzet-do-bloggera.html, który pokazuje jak to zrobić ;)

Dodatkowo na blogu "Kodatnik" można znaleźć inne ciekawe informacje np. "Jak dodać ikonkę (Favicon) do Blogger'a ?".

poniedziałek, 16 listopada 2009

Co to jest OPC? (w prostych żołnierskich słowach) :) [PL]

Na tym blogu już wiele, wiele razy pojawił się termin OPC i z nim związane (OPC UA, Xi), ale chyba do tej pory zabrakło prostego wyjaśnienia: "Co to jest?". Postaram się by poniższe wyjaśnienie było możliwe proste, dlatego proszę o nie wytykanie mi jeśli coś zbytnio uprościłem.

sobota, 14 listopada 2009

Express Interface (Xi) [PL]

Zachęcam wszystkich do zapoznania się z Express Interface (Xi) - z nowinką, która ma chęć zostania nowym standardem wymiany danych w systemach związanych z automatyką przemysłową. W uproszczeniu Xi określić można jako OPC po WCF'ie. Artykuł został podzielony na następujące części:

  1. Pojawił się Express Interface (Xi)
  2. Porównanie Xi z innymi standardami (OPC DA, OPC XML DA, OPC UA, ...)
  3. OPC Foundation ogłasza, że będzie uczestniczyć w pracach na Express Interface (Xi)
  4. Express Interface (Xi) - moim zdaniem
Promuj

piątek, 13 listopada 2009

Express Interface (Xi) - moim zdaniem [PL]

Podczas pisania ostatnich kilku postów na temat nowego interfejsu: Express Interface (Xi), cały czas zastawiałem się, czy w ogóle ta nowa propozycja ma szansę się przyjąć. W przypadku oprogramowania związanego z szeroko pojętą "automatyką przemysłową" łatwo zauważyć, że nowości trudno wypływają na wierzch. Podstawową zaletą Xi ma być odejście od przestarzałej warstwy transportowej opartej o COM, ale przecież już inny standard to zrobił: OPC Unified Architecture (OPC UA). Xi nie jest więc rewolucyjnym krokiem do przodu (jakim jest OPC UA), a raczej drobną ewolucją, która nie musi się przyjąć (jak to już często w ewolucji bywało).

czwartek, 12 listopada 2009

OPC Foundation ogłasza, że będzie uczestniczyć w pracach na Express Interface (Xi) [PL]

Jak można przeczytać na blogu Technical Advisory Council dla OPC Foundation, kierownictwo OPC Foundation postanowiło ostatnio utworzyć grupę roboczą, która ma za zadanie ustalić plan współpracy z nowym interfejsem Xi.

środa, 11 listopada 2009

Pojawił się kolejny release OPC UA SDK:1.01.307.0 Stable [PL]

Niedawno (5-go listopada 2009) pojawiła się kolejna wersja pakietu SDK dystrybuowanego przez OPC Foundation i wspierającego standard OPC Unified Architecture: OPC UA SDK 1.01.307.0 Stable. Pakiet SDK dostępny jest w kilku postaciach instalacyjnych, których opis można znaleźć w dokumencie: "ROADMAP TO UA SOFTWARE DOWNLOADS". Plik readme można znaleźć tutaj. Poszczególne instalatory pakietu dostępne są ze strony OPC Foundation w dziale download (dostęp tylko dla członków OPC Foundation). W skład pakietu wchodzą również biblioteki i przykłady wspierające platformę .NET. Zachęcam również do zapoznania się z helpem online: http://opcfoundation.org/uasdk/Help/ oraz e-książką poświęconą OPC Unified Architecture.

Promuj

Obsługa pamięci w .NET [PL]

Tym wszystkim co chcą się dowiedzieć:

  • jak obsługiwana jest pamięć na platformie .NET,

niedziela, 8 listopada 2009

develway.pl [PL]

Niedawno (4-go listopada) wystartował nowy serwis, z którym warto się zapoznać:

develway.pl
http://www.develway.pl

sobota, 7 listopada 2009

OLX - darmowe ogłoszenia

Prowadzenie bloga, to nie tylko publikowanie nowych wpisów, ale również poszukiwanie czytelników i promocja samego bloga. Ostatnio dowiedziałem się o serwisie OLX, na którym można zamieszczać darmowe (zwykłe) i wyróżnione (płatne) ogłoszenia:

OLX Darmowe Ogłoszenia

środa, 4 listopada 2009

Porównanie Xi z innymi standardami (OPC DA, OPC XML DA, OPC UA, ...) [PL]

Promuj

Tak jak obiecywałem w poprzednim post'cie przedstawię teraz tabelaryczne porównanie standardów "konkurencyjnych" lub związanych z Express Interface (XI):

Cecha\Standard

Klasyczne OPC (OPC DA 2 i 3, OPC HDA, OPC AE)

Interfejs OPC Automation

Express Interface (Xi)

OPC XML DA (klasyczne OPC z dostępem poprzez XML)

OPC Unified Architecture (OPC UA)

Komunikacja

oparta o DCOM

oparta o DCOM

oparta o WCF z możliwością wykorzystania wszystkich dostępnych Bindings'ów WCF.

XML, SOAP

  • binarne strumienie danych UA TCP (z szyfrowaniem i bez)
  • Web serwisy oparte o SOAP/HTTP (z szyfrowaniem i bez oraz możliwością wykorzystania kodowania binarnego)
  • możliwość wykorzystania niektórych Bindings'ów WCF

Platformy i systemy operacyjne

tylko wybrane systemy Microsoft

tylko wybrane systemy Microsoft

tylko wybrane systemy Microsoft

wielo-platformowy (ale tylko teoretycznie, zwykle na systemach Microsoft)

wielo-platformowy: dostępne są implementacje dla systemów Windows (w tym również na platformę .NET), Linux, platformy oparte o wirtualną maszynę Java, urządzenia i sterowniki przemysłowe

Języki i platformy programistyczne

C/C++, .NET i C# (od wersji 1.1)

VB, Delphi

.NET 3.5

.NET, ASP, HTML

C/C++, .NET, C#, Java i inne

Serwer lokalny

COM

COM

nazwany strumień lub inny binding

HTTP

serwer dowolnego wspieranego protokołu

Przestrzeń adresowa

Hierarchiczna

Hierarchiczna

Hierarchiczna ze wsparciem pewnych struktur złożonych.

Hierarchiczna

Hierarchiczna z bardzo zaawansowanym modelem informacyjnych wspierającym typy i ich instancje, dziedziczenie, różnego rodzaju referencje pomiędzy węzłami i obiektami w przestrzeni adresowej

Funkcjonalność

dostęp do danych aktualnych, historycznych i zdarzeń

dostęp do danych aktualnych, historycznych i zdarzeń

dostęp do danych aktualnych, historycznych i zdarzeń

dostęp do danych aktualnych

dostęp do danych aktualnych, historycznych, zdarzeń, metod, programowania, zaawansowany model informacyjny może wspierać inne standardy udostępniania i uporządkowania informacji i pozwala również na lepsze odkrywanie struktury procesu leżącego poniżej

Popularność

bardzo duża (zwłaszcza OPC DA) (OPC Foundation zrzesza ponad 400 członków, z tego prawie połowa to firmy dostarczające produkty wspierające standard OPC)

mała (nadaje się do prostych rozwiązań, tylko 5% wszystkich produktów zarejestrowanych na stronach OPC Foundation wspiera ten standard)

bardzo, bardzo mała (to dopiero początek - na stronie poświęconej standardowi wymienione są cztery firmy)

mała (tylko 10% wszystkich produktów zarejestrowanych na stronach OPC Foundation wspiera ten standard)

mała, ale to dopiero początek, a nowe produkty zdają się często pojawiać (już teraz ponad 10% wszystkich produktów zarejestrowanych na stronach OPC Foundation wspiera ten standard)

W następnej części zastanowimy się nad przyszłością standardu Express Interface (Xi).

Literatura i źródło informacji wykorzystanych w tym post'cie: http://www.expressinterface.com/, http://lists.opcfoundation.org/TACblog/default.aspx, http://www.opcfoundation.org.

Promuj

wtorek, 3 listopada 2009

Pojawił się Express Interface (Xi) [PL]

Promuj

Ostatnio pojawiły się słuchy na temat nowego interfejsu, który ma zapewnić prostą migrację z klasycznego OPC do serwisów bazujących na WCF (Windows Communication Foundation). Muszę przyznać, że trochę mnie to zdziwiło, jako że "prawowitą" następczyniom technologii OPC jest technologia OPC Unified Architecture (OPC UA). Poświęćmy więc chwile i przyjrzyjmy się temu nowemu standardowi o nazwie:

Express Interface (Xi).

Express Interface (Xi) jest nowym opartym o Microsoft .NET interfejsem zaprojektowanym w celu zapewnienia bezpiecznego i niezawodnego dostępu do danych pochodzących z urządzeń warstwy przemysłowej. Xi zapewnia zintegrowany zbiór metod zapewniający dostęp do danych w czasie rzeczywistym, danych historycznych oraz informacji na temat zdarzeń i alarmów. Ma zapewnić szybką i bezpieczną komunikację poprzez firewall'e oraz jest on prosty w implementacji.

Xi oparty jest o architekturę zorientowaną usługowo (Service Oriented Architecture (SOA))i wykorzystuje MMS (Manufacturing Messaging Service) oraz WCF (Windows Communication Foundation).

Xi ma zapewnić:

  • bezpieczeństwo – bezpieczna komunikacja zapewni dostęp nawet przez firewall
  • prostotę - implementacja klienta i serwera ma być prosta w implementacji, konfiguracji i wdrożeniu
  • niezawodność – komunikacja ma być niezawodna i zapewniająca łatwe eliminowanie uszkodzeń araz powrót do stanu prawidłowego
  • Plug-and-Play – ma zapewniać automatyczne wykrywanie serwerów i ich możliwości komunikacyjnych
  • kompatybilność wstecz - zapewniając łatwą migrację ze starszych standardów OPC DA, AE i HDA poprzez proste użycie jednego interfejsu opartego o platformę .NET
  • przeźroczystość wieloprotokołową – interfejs, poprzez który udostępniane są dane nie zmienia się, niezależnie od tego przy pomocy jakiego protokołu przesyłane są informacje. Dostępne są trzy sposoby przesyłania danych wymienione niżej, a w każdym interfejs dostępu do danych jest ten sam:
    • nazwane strumienie (Named Pipes) pozwalające na szybką komunikację w ramach jednej maszyny
    • TCP z lub bez zabezpieczeń
    • HTTP w różnych formach (włączając w to standardowe Web Services)

W następnej części porównam Express Interface (Xi) z innymi standardami, takimi jak OPC DA, OPC XML DA, OPC UA.

Literatura i źródło informacji wykorzystanych w tym post'cie: http://www.expressinterface.com/

Promuj

poniedziałek, 2 listopada 2009

OPConnect - Listopad 2009 [PL]

Dzisiaj opublikowany został kolejny numer kwartalnika OPConnect wydawanego przez Automation Worls przy współpracy z OPC Foundation, dostępny jest on pod adresem:

http://www.automationworld.com/newsletters/opc-11-02-09.html


W tym numerze chciałbym wszystkim polecić artykuł pt. "3 Steps to OPC UA: Model, Bind and Run", który opisuje proste kroki pozwalające na zapoznanie się i rozpoczęcie stosowania nowej technologii OPC Unified Architecture.


Życzę wszystkim przyjemniej lektury!

sobota, 31 października 2009

OPC UA Server (CommServer UA) już dostępny! [PL]

Promuj

Po ostatniej wytężonej pracy w firmie gdzie pracuję, chciałbym ogłosić, że OPC UA Server - CommServer UA jest już dostępny i gotowy do pobrania dla wszystkich tych, którzy chcą się bliżej zapoznać z technologią OPC UA

CommServer to pakiet oprogramowania komunikacyjnego do zarządzania transferem danych. Jest to w pełni konfigurowalny serwer OPC Unified Architecture (OPC UA). Wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu.

Jest to pierwsza publiczna wersja CommServer’a UA dostępna w dziale download wortalu CommServer (wersja dostępna z licencją demo). CommServer UA został przetestowany pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy. OPC UA Address Space Model Designer w wersji 2.10.00 i OPC Viewer w wersji 3.00.02 są komponentami CommServer’a UA w wersji 1.00. 20.

CommServer UA wspiera interfejs serwera OPC UA i pozwala na udostępnianie danych z trzech źródeł (nazywanych w oprogramowaniu DataSources):

  • CommServer – silnik komunikacyjnych (wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu)
  • Klient OPC DA (działa jako Wrapper OPC DA z w pełni konfigurowalną przestrzenią adresową)
  • Symulator (dane są symulowane)

 

Zobacz online help (http://www.commsvr.com/UAModelDesigner/Index.aspx)

Pobierz najnowszą wersję CommServer UA 1.00.20

Kolejną nowością są nowe wersje oprogramowania z rodziny CommServer

Przetestowane pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy.

OPC Viewer 3.00.02

DataPorter rel. 2.00.02

CommServer 4.00.02

CommServer UA w wersji 1.00.20

OPC UA Address Space Model Designer 2.10.00

Promuj

środa, 28 października 2009

OPC Client .NET (cz.2 Implementacja) [PL]

Promuj

W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :).

Na początku należy dodać referencję do projektu w Visual Studio:


Teraz wskazujemy serwis (wpisując jego adres: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx):


Wpisujemy jeszcze nazwę naszej referencji, klikamy na "Add Reference" i referencja powinna nam się pojawić w naszym Solution:


Teraz wykorzystamy dwie funkcje: GetAvailiableItems (zwracającą dostępne w serwerze elementy) oraz GetValue_OneItem (odczytującą wartość wybranego elementu). Informacje na temat innych wywołań dostępne są tutaj: http://www.commsvr.com/DataPorter/Index.aspx?topic=html/3bddf5c3-5d5a-4569-85db-fcdc52a1b34a.htm. Poniższe dwa rysunki pokazują efekt wykonania tych dwóch funkcji przy pomocy wspomnianej wcześniej strony debugger'a.

GetAvailiableItems:


GetValue_OneItem:


Oczywiście my wywołamy te dwie funkcje z poziomu C#. W tym celu należy najpierw wykonać połączenie: OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess(). Później można pobrać listę elementów jako tablicę stringów: string[] items = opcDA.GetAvailiableItems(). Oraz można pobrać wartość dla jednego z elementów tablicy: OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] ).

Ostatecznie kod prostej funkcji nawiązującej połączenie, pobierającej i wyświetlającej listę dostępnych elementów oraz wartość pierwszego dostępnego elementu, wygląda następująco:

static void Main( string[] args )
{
  //connecting to remote object
  OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess();
  // getting availiable item list
  string[] items = opcDA.GetAvailiableItems();
  //displaing the list
  Console.WriteLine("Item List:");
  foreach ( string item in items )
    Console.WriteLine( item );
  //reading a value of the first item (#0)
  OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] );
  Console.WriteLine( "---------------------" );
  Console.WriteLine( "Value of item {0}", items[ 0 ] );
  Console.WriteLine( "value={0}", val.Value );
  Console.WriteLine( "quality={0}", val.Quality.QualityBits );
  Console.WriteLine( "timestamp={0}", val.Timestamp );

  //waiting for enter
  Console.WriteLine( "[Press Enter]" );
  Console.ReadLine();
}

I daje w efekcie:



Item List:
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/102
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/000
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/001
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/002
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/105
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/109
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/104
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/108
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/105
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/110
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/109
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/102
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/104
---------------------
Value of item CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
value=170
quality=good
timestamp=2009-08-12 15:17:04
[Press Enter]

Proste prawda? :)

Promuj

wtorek, 27 października 2009

OPC Client .NET (część 1. Przygotowania) [PL]

Promuj

Jakiś czas temu w post'cie pt. "Implementacja klienta OPC w C#" spróbowałem naświetlić podstawowe zagadnienia związane z implementacją klienta OPC na platformie .NET. Nie jest to proste zagadnienie, a do tego poza dobrą znajomością programowania opartego o DCOM należy mieć dostęp do specyfikacji standardu OPC. W tym artykule chciałbym wskazać pewną alternatywę, a mianowicie pokazać jak można dostać się do danych w OPC z poziomu platformy .NET (przykład w C#) bez implementacji pełnego klienta OPC. W tym celu zostanie wykorzystane dodatkowe oprogramowanie: DataPorter, które posiada funkcjonalność klienta OPC oraz zapewnia dostęp do odczytywanych przez niego danych poprzez WebSerwis. W prezentowanym tutaj przykładzie nie zostanie napisany "prawdziwy klient OPC", gdyż zostanie wykorzystane kompletne oprogramowanie klienta, zamierzam natomiast pokazać jak przy pomocy prostego programiku można dostać się do danych z OPC. Niniejszy artykuł może być również ciekawy dla osób, które chcą poznać przykład wykorzystania jakiegoś WebSerwisu z poziomu .NET (oczywiście nie piszę tu o WebSerwisie w rozumieniu serwisów w formie stron internetowych, a o serwisach opartych o SOAP i technologie WS-*)

Oprogramowanie DataPorter jest dostępne w pełni funkcjonalnej wersji demonstracyjnej (ograniczonej czasowo) na stronie: http://www.commsvr.com/DownloadCenter/ProductSoftware/PR2605DataPorter_Software.aspx (wymagana jest darmowa rejestracja). Instalowane jest z domyślną konfiguracją, w której podłącza się one do oprogramowania serwera OPC: CommServer. Opis domyślnej konfiguracji dostępny jest tutaj: http://www.commsvr.com/Products/DataPorterDescription/DataPortersampleconfiguration/tabid/320/language/en-US/Default.aspx. Pokazany w tym artykule przykład używa oprogramowania CommServer, dlatego warto je również zainstalować (jak to zrobić?). Przed przystąpieniem do dalszych ćwiczeń warto, w tym miejscu sprawdzić wspólne działanie CommServer'a i DataPorter'a (w przypadku jakichś problemów polecam odwiedzenie e-manuala DataPorter'a, dostępnego tutaj: http://www.commsvr.com/DataPorter/Index.aspx

Po pomyślnym zweryfikowaniu działania DataPorter'a i CommServer'a należy zainstalować dodatek do DataPorter'a udostępniający WebSerwisy (uwaga wcześniej należy mieć zainstalowany IIS, zintegrowany z platformą .NET 2.0). Dodatek znajduje się w katalogu DataPortera w następującej lokalizacji:

"%programfiles%\CAS\DataPorter\AdditionalSetup\CAS.OPCWSDataAccess\setup.exe" 

Po instalacji dodatku i wpisaniu w przeglądarkę internetową adresu: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx, oczom powinien się okazać obraz podobny do poniższego:


Jest to strona generowana w sposób automatyczny przez serwer IIS na podstawie WebSerwisu i umożliwiająca jego debugowanie (uwaga: ta strona dostępna jest tylko na lokalnej maszynie - tzn. tylko na tym komputerze, na którym zainstalowany jest WebSerwis).

Dla takiego WebSerwisu można pobrać i odczytać jego definicję zapisaną w języku WSDL. W tym celu należy do przedstawionego wyżej adresu dopisać "?wsdl" lub kliknąć na odpowiedni odnośnik na wspomnianej autogenerowanej stronie.


W następnej części zaprezentuję jak obsłużyć taki WebSerwis z poziomu C# i .NET, czyli w konsekwencji jak dostać się do danych w OPC.

Promuj

niedziela, 25 października 2009

Wprowadzenie do Open XML SDK na CodeGuru [PL]


Zainteresowanych tematem Open XML SDK chciałbym poinformować, że zamieściłem dzisiaj na portalu CodeGuru mój artykuł na te temat. Treść artykułu jest zbieżna z materiałem, który pojawiał się już na tym blogu, ale teraz połączyłem to w jedną całość. Dodatkowo zainteresować może też fakt, że przytoczone fragmenty kodu dostępne są jako gotowe solution (dla Visual Studio) i dołączone są jako załącznik do artykułu.
Zapraszam do lektury: http://codeguru.pl/article-763.aspx.



Promuj

piątek, 23 października 2009

Visual Studio 2010 Beta 2 Download [PL]

Promuj

Zgodnie z tym co pisałem wcześniej, Microsoft opublikował publicznie kolejne wersje beta swoich produktów związanych z Visual Studio 2010. Poniżej spis linków (pochodzący z oficjalnej strony poświęconej Visual Studio), wcześniej można obejrzeć filmik na temat instalacji: http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/.

Visual Studio

Visual Studio Extensibility

.NET Framework

Team Foundation Server

Test Products

Express

Promuj

środa, 21 października 2009

Visual Studio 2010 Beta 2 Training Kit już dostępny [PL]

Niedawno pisałem o tym, że pojawiła się kolejna wersja beta Visual Studio 2010, wczoraj doszła kolejna nowość: Microsoft opublikował Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview. Dostępny jest on pod adresem:

http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en

Kolejna Beta (2) tego Training Kit'u zawiera 15 prezentacji, 19 hands-on labs i 13 demonstracji. Pokazano tam wiele nowych technologii, włączając w to: C# 4, VB 10, F#, Parallel Extensions, Windows Communication Foundation, Windows Workflow, Windows Presentation Foundation, ASP.NET 4, Entity Framework, ADO.NET Data Services, Managed Extensibility Framework, and Visual Studio Ultimate.

Więcej na temat zawartości pakietu można znaleźć w artykule: "Visual Studio 2010 Beta 2 Training Kit Published"

Promuj

Google Chrome - pierwsze wrażenia [PL]

Przegląda Google Chrome ma już ponad rok, więc pomimo mojego przyzwyczajenia do Firefox postanowiłem przyjrzeć się jej trochę bliżej.


Nie korzystam jeszcze z niej długo, ale muszę przyznać, że moje pierwsze wrażenia są dość pozytywne. Przeglądarka działa stabilnie i szybko. Ma ciekawy wygląd, którego cechą jest minimalistyczny interfejs, tak aby obszar na którym wyświetlana jest strona był jak największy. Nawet pasek tytułu okna i ramka okna znika po maksymalizacji przeglądarki. Bardzo wygodny jest też zintegrowany z wyszukiwarką pasek adresu - działa on dużo lepiej niż w Firefox

Niestety są też pewne braki: naciśnięcie rolki na myszce nie powoduje otwierania strony "w tle". Na pasku adresu brakuje mi ikonki RSS, która pojawia się jeżeli na stronie znajduje się jakiś kanał, a jej naciśnięcie pozwala na dodanie RSS do wybranego agregatora. Z RSS'ami jest jeszcze jeden problem (chociaż może jest to problem mojego czytnika (RSS Bandit), który nie zintegrował się z Chromem), otworzenie kanału nie powoduje jego automatycznego importu do czytnika. Kolejny problem powodują niektóre edytory na różnych stronach, nie działa np. popularny FCKEditor, czy wykorzystywany edytor na portalu "Dotnetomaniak". Brakuje też mi opcji zaznaczenia fragmentu strony i wyświetlenia źródła zaznaczenia.... ale może już dość tego narzekania. Być może część przytoczonych przeze mnie problemów znika po odpowiedniej konfiguracji, czy zainstalowaniu odpowiedniego dodatku

Na koniec, tym wszystkim, którzy chcieliby przeczytać więcej na temat Chrome (w języku polskim), polecam odwiedzenie bloga:

GOOGLE CHROME DEV
POLSKI BLOG O PRZEGLĄDARCE GOOGLE CHROME. NOWE WERSJE, PLUGINY, CIEKAWOSTKI.

wtorek, 20 października 2009

Serwis uruchamiać albo nie? oto jest pytanie.... [PL]

Jakiś czas temu pisałem na temat tworzenia i instalowania serwisu Windows. Pokazałem wtedy prosty kod procedury Main, który uruchamia serwis:

static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
  {
      new Service1()
  };
ServiceBase.Run( ServicesToRun );
}

W większości wypadków jest to dobre rozwiązanie, gorzej jeżeli chcemy uruchamiać również wytworzony plik "exe" dwuklikając na niego (lub wciskając "play" w VS). Jeżeli wykorzystaliśmy powyższy kod otrzymamy:

W sumie otrzymaliśmy precyzyjną informację co należy zrobić by uruchomić serwis, ale przecież nie o to chodziło. Czy można coś zrobić? Oczywiście !

Rozwiązanie pierwsze (trywialne, by nie powiedzieć prymitywne) to wykorzystanie linii poleceń do przekazania argumentu mówiącego: "uruchom normalnie", np. jeżeli argument będzie brzmiał "noservice", to będziemy mieli:

 if ( m_cmmdLine.ToLower().Contains( "noservice" ) )
 {
   Application.Run( new ServerForm( ) );
 }
 else
 {
   ServiceBase.Run( new Service1() );
 }

Rozwiązanie drugie jest trochę bardziej eleganckie i zakłada sprawdzenie kontekstu w jakim aplikacja jest uruchamiana:

 if ( !Environment.UserInteractive )
  {
    ServiceBase.Run( new Service() );
    return;
  }
  else
    Application.Run( new ServerForm( ) );

Proste prawda?

Promuj

Artykuł: Certyfikacja OPC [PL]

W celu zapewnienia wysokiej jakości produktów wspierających technologię OPC, organizacja zajmująca się utrzymaniem standardu, czyli OPC Foundation, powołała program certyfikacyjny, któremu poddawane są te produkty. Chyba nie trzeba nikogo specjalnie przekonywać, że warto wybierać właśnie certyfikowane produkty. Każdy inżynier - integrator wie, jak ważne są aplikacje, które są przez niego wdrażane. Chyba nie warto ryzykować awarii lub niepowodzenia, tylko poprzez złą decyzję podjętą już na samym początku wdrożenia.

W tej krótkiej serii postów chciałbym pomóc w zrozumieniu na czym polega program certyfikacyjny prowadzony przez OPC Foundation, jak znaleźć certyfikowane produkty i jak zinterpretować to co jest na temat danego produktu podane.

Artykuł został podzielony na następujące części:

  1. Podstawy
  2. Testowanie interoperacyjności podczas warsztatów
  3. Niezależne laboratorium certyfikacyjne
  4. Jak znaleźć i sprawdzić, czy produkt jest certyfikowany?

Życzę dobrej lektury

poniedziałek, 19 października 2009

Jak wyciągnąć grafiki i muzykę z prezentacji programu PowerPoint ?[PL]

Niedawno ktoś mnie zapytał, czy jest możliwe z istniejącej prezentacji programu PowerPoint wydobycie grafik, czy muzyki. Odpowiedziałem wtedy, że muszę sprawdzić czy poszukać,bo przecież łatwo coś do PowerPoint'a wkleić lub wstawić, ale nie można kliknąć na dowolnym obiekcie i wybrać: "Zapisz jako.."

Jak więc wyciągnąć jakąś grafikę, czy muzykę z prezentacji? Okazuje się to dość proste, jeżeli używamy PowerPoint'a 2007 (lub przynajmniej zapiszemy prezentację w tym formacie (OpenXML)). Można bowiem wtedy w prosty sposób dostać się do wszystkich zasobów dokumentu. Jak? Można to zrobić w podobny sposób jak to opisywałem jakiś czas temu na przykładzie pliku programu Word (docx). Zamieniamy rozszerzenie prezentacji (nie jest istotne czy jest to pptx, czy ppsx) na rozszerzenie typu zip, następnie wypakowujemy archiwum. W tym momencie powinniśmy uzyskać strukturę plików i katalogów podobną do poniższej:

plik.zip
|   [Content_Types].xml
|  +---docProps
|       app.xml
|       core.xml
|       thumbnail.jpeg
|      +---ppt
|   |   presentation.xml
|   |   presProps.xml
|   |   tableStyles.xml
|   |   viewProps.xml
|   |  |   +---media
|   |       audio1.wav
|   |       image1.png
|   |       image10.png
|   |       image11.png
|   |       image12.png
|   |       image13.png
|   |       image14.jpeg
|   |       image15.png
|   |       image16.png
|   |       image17.png
|   |       image18.png
|   |       image19.png
|   |      |   +---slideLayouts
|   |   |   slideLayout1.xml
|   |   |   slideLayout10.xml
|   |   |   slideLayout11.xml
|   |   |   slideLayout2.xml
|   |   |   slideLayout3.xml
|   |   |   slideLayout4.xml
|   |   |   slideLayout5.xml
|   |   |   slideLayout6.xml
|   |   |   slideLayout7.xml
|   |   |   slideLayout8.xml
|   |   |   slideLayout9.xml
|   |   |  |   |   \---_rels
|   |           slideLayout1.xml.rels
|   |           slideLayout10.xml.rels
|   |           slideLayout11.xml.rels
|   |           slideLayout2.xml.rels
|   |           slideLayout3.xml.rels
|   |           slideLayout4.xml.rels
|   |           slideLayout5.xml.rels
|   |           slideLayout6.xml.rels
|   |           slideLayout7.xml.rels
|   |           slideLayout8.xml.rels
|   |           slideLayout9.xml.rels
|   |          |   +---slideMasters
|   |   |   slideMaster1.xml
|   |   |  |   |   \---_rels
|   |           slideMaster1.xml.rels
|   |          |   +---slides
|   |   |   slide1.xml
|   |   |   slide2.xml
|   |   |   slide3.xml
|   |   |   slide4.xml
|   |   |   slide5.xml
|   |   |  |   |   \---_rels
|   |           slide1.xml.rels
|   |           slide2.xml.rels
|   |           slide3.xml.rels
|   |           slide4.xml.rels
|   |           slide5.xml.rels
|   |          |   +---theme
|   |       theme1.xml
|   |      |   \---_rels
|           presentation.xml.rels
|          \---_rels
      .rels

Teraz, jeżeli zajrzymy do katalogu "media" znajdziemy tam wszystkie wykorzystane w prezentacji obrazy i dźwięki. Proste prawda??

Co więcej można również wykorzystać opisany tu sposób do podmiany dowolnego obrazka na inny. Zadziwiające, że PowerPoint sam w sobie nie posiada funkcjonalności podmień obrazek w prezentacji, a przecież gdy wykonamy skomplikowaną animację, w której potrzebujemy podmienić jeden z wykorzystanych obrazów okazuje się bardzo problematyczne. Jak więc to zrobić? W tym celu rozpakowujemy prezentację, odnajdujemy interesujący nas obraz, podmieniamy go na nowy (pod tą samą nazwą), ponownie pakujemy prezentację.

Na koniec pozostaje nam jeszcze pytanie-dylemat, czy opisane tu czynności możemy wykonać, czy prawo autorskie nam na to pozwala, ale to już temat na inne rozwiązania i pozostawię to waszemu sumieniu.

Zainteresowanych dalszymi informacjami na temat formatu w jakim zapisywane są pliki przy pomocy Office 2007, czyli OpenXML, zachęcam do przeczytania artykułu: "Open XML - tworzymy dokument Word (docx)".

Visual Studio 2010 Beta 2 nadchodzi [PL]

Czy już wszyscy zainteresowani przetestowali Visual Studio 2010 Beta (1)? Jeśli nie, to może o tamtej wersji zapomnieć i zwrócić uwagę na kolejną opublikowaną betę, która dzisiaj pojawiła się jako dostępna dla subskrybentów MSDN, a 21-go października będzie dostępna dla innych zainteresowanych. Więcej na ten temat znajdziemy w artykule: "Microsoft names Visual Studio 2010 dates". Wiadomo już też kiedy ma nastąpić oficjalna premiera nowego Visual Studio, a będzie to 22-gi marca 2010. Wiadomo też ile będzie kosztować (zainteresowanych odsyłam do wspomnianego artykułu).

Nowa wersja ma zawierać dodatkowe narzędzia wspierające Windows 7 i nadchodzący SharePoint 2010, drag-and-drop bindings w Silverlight i Windows Presentation Foundation, wykorzystanie Dynamic Language Runtime (DLR) do programowania w językach skryptowych i wsparcie dla programowania równoległego (tutaj też proponuję zajrzeć do artykułu). Ciekawe natomiast jak to będzie z wydajnością, na którą wielu do tej pory narzekało? .... pobierzemy, zainstalujemy, zobaczymy ...

Promuj

Update: linki do downloadu są podane tutaj: http://maciej-progtech.blogspot.com/2009/10/visual-studio-2010-beta-2-download-pl.html

wtorek, 13 października 2009

Certyfikowane produkty OPC [PL]

Dzisiaj w ramach kontynuacji tematu związanego z certyfikacją produktów wspierających technologię OPC chciałbym pokazać jak znaleźć certyfikowane produkty oraz jak sprawdzić, czy dany producent ma prawo do deklarowania zgodności jego produktu ze specyfikacją. Przykłady zawarte w tym tekście oprę o dobrze znany mi produkt CommServer - stworzony przez firmę CAS.

Sprawdzanie, czy dany produkt jest "certyfikowany" można zacząć od przejrzenia materiałów informacyjnych poświęconych temu produktowi, np. w przypadku serwera OPC - CommServer można odwiedzić poświęconą mu stronę: http://www.commsvr.com/Products/CommServer/CommServerProfessional.aspx, na której dobrze widoczne jest logo "OPC Selftested For Compliance":

Dodatkowo warto odwiedzić stronę organizacji OPC Foundation (http://www.opcfoundation.org) by sprawdzić, czy produkt ten jest tam zarejestrowany i jaki jest jego status w procesie certyfikacji. Dane dot. produktu, ich statusu w certyfikacji (w tym wyniki testów) dostępne są dla każdego (w tym anonimowego) użytkownika. Pokazany niżej rysunek prezentuje stronę poświęconą produktowi CommServer (http://www.opcfoundation.org/Products/ProductDetails.aspx?CM=1&RI=8491&CU=6) oraz informuje, że jest to produkt certyfikowany:

Na samym dole strony poświęconej produktowi można jeszcze znaleźć informacje na temat testów, które on przeszedł:

Z powyższej listy można wybrać test, którego sprawdzeniem jesteśmy zainteresowani i w ten sposób można sprawdzić wyniki testów wykonanych przy pomocy opisywanego wcześniej "Compliance Test Tool":

czy może wyniki testów wykonanych podczas wartszatów: "OPC Interoperability Workshop":

Szczególnie te wyniki mogą być interesujące, pozwalają bowiem sprawdzić czy dany produkt był już testowany z jakimś innym produktem z którym chcemy nawiązać komunikację.

Na koniec chciałbym jeszcze wspomnieć o certyfikacji na poziomie "Lab Certified". Aktualnie nie ma wielu produktów certyfikowanych na tym poziomie, dlatego  aby dodatkowo wyróżnić produkty, które ten poziom osiągnęły, OPC Foundation stworzyła dodatkową stronę (dostępną w menu Products -> Lab Certified Product) na której można znaleźć produkty "Lab Certified".



sobota, 10 października 2009

Certyfikacja produktów wspierających OPC i OPC UA (poziom Lab Certified) [PL]

W poprzednich postach opisałem już przygotowania do certyfikacji produktów wspierających technologię OPC oraz testowanie na tzw. "OPC Interoperability Worshop". Ostatnim (najwyższym) poziomem certyfikacyjny jest tzw. poziom "Lab Certified". Poziom ten wymaga przejścia testów w niezależnym laboratorium certyfikacyjnym. Aktualnie są dwa takie laboratorium jedno (a za razem pierwsze, które powstało) w Niemczech, a drugie USA.

W ramach takich testów sprawdzane są:

  • Podstawowe funkcje oprogramowania – wzajemna interoperacyjności i zgodność ze specyfikacją OPC.
  • Wydajność - czy jest zadowalająca i zgodna z deklarowaną przez producenta.
  • Stress Testing -  testy mające na celu sprawdzenie poprawności działania oprogramowania w warunkach granicznych obciążeń deklarowanych przez producenta.
  • Mechanizm recovery - czy oprogramowanie potrafi samodzielnie wyjść ze stanu awarii (np. utraty komunikacji z urządzeniem).
  • Testy długotrwałe mające na celu identyfikację trudniejszych problemów, pojawiających się po dłuższym okresie czasu, np. w skutek bardzo powolnego wycieku zasobów, jak i obniżenia wydajności w czasie.
  • Badanie użyteczności, czyli czy produkt jest łatwy w instalacji, konfiguracji, użytkowaniu i rozwiązywaniu problemów.
  • Środowisko - czy deklarowane przez producenta wymagania odnośnie środowiska (np. systemu operacyjnego) są zgodne z prawdą.
  • Ostatecznie po pozytywnym przejściu testów, produktowi przysługuje prawo do korzystania z loga: "Certified":

    piątek, 9 października 2009

    Certyfikacja produktów wspierających OPC i OPC UA (Interoperability Workshop ) [PL]

    Kolejnym krokiem certyfikacji jest odbycie testów podczas tzw. "OPC Interoperability Workshop" (OPC IOPW). Warsztaty te odbywają się trzy razy do roku: raz w Europie, raz w USA i raz w Japonii. Na warsztaty przyjeżdżają przedstawiciele różnych firm. Ci którzy chcą przetestować oprogramowanie typu serwer zobowiązani są go uruchomić i przygotować, by mogły się do niego podłączać aplikacje klienckie innych firm. Ci którzy testują oprogramowanie typu "klient" nawiązują komunikację z serwerami, a następnie wykonują serię testów, których wyniki są zapisywane na specjalnych stronach OPC Foundation. Zestaw testów pozwala na dość szczegółowe sprawdzenie wzajemnej kompatybilności, sprawdzane są takie elementy jak: sprawdzanie statusu, lokalizacja, tworzenie grup, powiadomienia o zamknięciu, przeglądanie elementów (tagów) i ich właściwości, operacje odczytu i zapisu (synchroniczne i asynchroniczne), zarządzanie stanem, mechanizm keep alive, deadband, filtrowanie, buforowanie, wsparcie dla różnych typów danych itp… Jak widać ilość testów do wykonania jest dość duża. Niektóre testy wymagają konsultacji pomiędzy obiema stronami (testującą i testowaną) w celu wyjaśnienia po której stronie tkwi problem. Niektóre problemy poprawiane są na bieżąco inne (bardzie poważne) mogą spowodować, że oprogramowanie testów nie przejdzie. W przypadku klientów OPC dodatkowo wymagany jest test przy pomocy (wspomnianego wcześniej) "OPC Analyser’a", który odbywa się w obecności przedstawiciela OPC Foundation, tak aby zapewnić wiarygodność testu.

    Ostatecznie po pozytywnym przejściu testów przy pomocy oprogramowania testującego (CTT lub OPC Analyser) oraz testów podczas OPC IOPW, produktowi przysługuje prawo do korzystania z loga: "Self-Tested":

    OPC Self-Tested Logo (color)SAMPLE109x133.JPG

    Na koniec tego post’a chciałbym pokazać zdjęcie z IOPW:


    czwartek, 8 października 2009

    Certyfikacja produktów wspierających OPC i OPC UA (postawy) [PL]

    Ostatnio na blogu była dłuższa chwila przerwy, dlaczego? Powód bardzo prozaiczny: więcej pracy. Można jednak zapytań, czym było to spowodowane? Otóż, tak jak pisałem jakiś czas temu w post'cie pt.: "Najbliższe wydarzenia związane z OPC", brałem niedawno udział w tzw. "OPC Interoperability Workshop", czyli w warsztatach podczas których testowane są produkty wspierające technologię OPC. Testy te mają za zadanie sprawdzić wzajemną współpracę produktów różnych firm i są częścią procedury certyfikacyjnej dla produktów OPC. Przejdę jednak do początku i spróbuję wyjaśnić na czym polega i czemu ma służyć ta certyfikacja.

    W celu zapewnienia wysokiej jakości produktów wspierających technologię OPC, organizacja zajmująca się utrzymaniem standardu, czyli OPC Foundation, powołała program certyfikacyjny, któremu poddawane są te produkty. W programie tym mogą brać wszyscy członkowie OPC Foundation, którzy mają swoje produkty wspierające OPC i których poziom członkostwa w organizacji to tzw. "Corporate Member". Certyfikacja to proces wieloetapowy, na który składają się różne elementy i który trochę różni się również w zależności od tego czy certyfikowany jest produkt wpierający poprzednią wersję OPC (coraz cześciej nazywaną OPC Classic), czy OPC Unified Architecture. W opisie tym skupię się przede wszystkim na certyfikacji związanej z technologii OPC Classic, ponieważ w tym przypadku zostały już opracowane odpowiednie specyfikacje związane z procedurą certyfikacyjną.

    Pierwszym krokiem jest oczywiście zapoznanie się z odpowiednimi specyfikacjami, opisującymi certyfikację i testowanie:

    • OPC Test Lab Part 1 - Concepts
    • OPC Test Lab Part 2 - Abstract Test Suite
    • OPC Test Lab Part 3 - Test Lab Realization
    • OPC Test Lab Part 4 - Certification Process
    • OPC Test Lab Part 5 - Quality Management Manual
    • OPC Test Lab Part 6 - COM DA Server Test Cases Specification
    • OPC Test Lab Part 7 - COM DA Client Test Cases Specification

    Drugim krokiem będą testy przy pomocy narzędzi wspomagających. W przypadku serwera OPC będzie to "Compliance Test Tool", w przypadku klienta OPC będzie to "OPC Analyser".

    "Compliance Test Tool" (CTT) jest zautomatyzowanym narzędziem, które wykonuje szereg testów  na wybranym serwerze OPC, a następnie analizuje wyniki. W przypadku pozytywnego zaliczenia wszystkich testów, CTT może wygenerować specjalny plik z rezultatami, który jest podpisany cyfrowo i może być przekazany do OPC Foundation jako potwierdzenie pomyślnego wykonania testów. Oprogramowanie CTT jest dostępne dla członków OPC Foundation i można pobrać je ze stron działu "Downloads" (http://www.opcfoundation.org/Downloads.aspx?CM=1&CN=KEY&CI=279&CU=7). Oprogramowanie te oprócz głównego modułu testującego potrzebuje jeszcze zainstalowania odpowiedniej wtyczki, która powiązana jest z konkretną specyfikacją dla której testy chcemy wykonać (np. DA 2.05, DA 3.00, AE, HDA).

    Compliance Test Tool

    "OPC Analyser " jest narzędziem do testowania klienta OPC. Jest uruchamiany jako narzędzie pośredniczące pomiędzy klientem, a serwerem OPC. Pozwala na prześledzenie całej komunikacji (wszystkich wywołań, przekazywanych danych itp..), tak by można było ocenić, czy przebiega ona poprawnie. Dodatkowo  ma wbudowany język skryptowy, który pozwala na generowanie błędów i w ten sposób można przetestować zachowanie klienta (jak reaguje na błędy, czy pokazuje je użytkownikowi, czy aplikacja nie kończy się w błędzie). Atutem programu jest duża baza gotowych skryptów, które wspomagają testowanie scenariuszy testów opisanych w specyfikacji testowania. Niestety testy nie przebiegają całkowicie w sposób automatyczny i konieczna jest interakcja z człowiekiem – testerem.  OPC Analyser (tak jak CTT)  jest dostępny dla członków OPC Foundation i można pobrać je ze stron działu "Downloads". Zainteresowani mogą obejrzeć prezentację poświęconą temu narzędziu poda adresem: http://opcf.org/Compliance-Certification/opcanalyzer-walkthrough.htm.

    OPC Analyser

    W następnej części opiszę kolejny krok certyfikacji.

    środa, 16 września 2009

    Skype extension for Firefox, czyli problemy... [PL]

    Nie wiem jak Wy, moi czytelnicy, ale ja od jakiegoś czasu miałem problemy z moim Firefox'em. W różnych serwisach nie mogłem się zalogować, lub musiałem powtarzać czynność logowania (np. przy wykorzystaniu narzędzi Google, na dotNetoManiaku, na jakichś różnych forach). Pomagało trochę czyszczenie plików tymczasowych przeglądarki, jednak po jakimś czasie problem wracał. W innych przeglądarkach np. w IE, problem nie występował. byłem więc trochę rozżalony faktem, że Firefox się zepsuł.

    Jednak dzisiaj napotkałem na posta: "Skype extension for Firefox- zło powodujące problem cachowania strony". I problem się rozwiązał. To nie Firefox był winny a dodatek Skype! Odinstalowałem go, a mój Firefox znów działa jak należy ;).

    niedziela, 13 września 2009

    Jak wykonać build kodu C# .NET przy pomocy linii poleceń systemu Windows [PL]

    Promuj

    Zwykle kod kompiluje się i wykonuje build bezpośrednio ze środowiska IDE, czasami jednak zachodzi potrzeba, że chcemy wykonać build poza środowiskiem IDE, np. wykorzystując skrypty linii poleceń systemu Windows. Jak można to zrobić? Są przynajmniej trzy możliwości: kompilator CSC, MSBUILD lub Visual Studio wywołane z linii poleceń.

    W tym artykule pokarzę przykładowe wykorzystanie każdej z metod w oparciu o prosty przykład: aplikację typu "Hello World!", o następującym kodzie w pliku Program.cs:

    using System;
    
    namespace HelloWorld
    {
      class Program
      {
        static void Main( string[] args )
        {
          Console.WriteLine( "Hello World !" );
        }
      }
    }

    Solution (HelloWorld.sln) natomiast wygląda następująco:

    CSC.EXE

    Jest to podstawowy kompilator dla C#, czyli Microsoft (R) Visual C# 2008 Compiler. Jego bezpośrednie wykorzystanie jest możliwe aczkolwiek mało wygodne. To właśnie tego kompilatora używają inne narzędzia do kompilacji kodu. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:

    "%Windir%\Microsoft.NET\Framework\v3.5\csc"  /out:.\HelloWorld.exe .\HelloWorld\Program.cs

    MSBUILD (msbuild.exe)

    MSBuild, czyli Microsoft (R) Build Engine jest bardzo wygodnym narzędziem które z wykorzystaniem linii poleceń systemu Windows pozwala na build poszczególnych projektów lub całego solution wytworzonego przy pomocy IDE jakim jest Visual Studio. Wynik działania narzędzia w czytelny sposób prezentowany jest na ekranie konsoli, a dodatkowo dzięki różnym kolorom tekstu można łatwo się zorientować, czy build przeszedł pomyślnie. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:

    "%Windir%\Microsoft.NET\Framework\v3.5\msbuild"  .\HelloWorld.sln /t:build /p:Configuration=Release

    Niestety narzędzie ma też pewne wady, a mianowicie nie wszystkie typy projektów są wspierane, np. to narzędzie nie nadaje się do zrobienia build’u projektu typu "setup".

    Visual Studio z linii poleceń (devenv.exe)

    Środowisko Visual Studio można również wywołać z linii poleceń (bez uruchamiania interfejsu graficznego). Tą cechę można wykorzystać właśnie do wykonania build’u, np.:

    "%VS90COMNTOOLS%\..\IDE\devenv.exe"  .\HelloWorld.sln /rebuild Release 

    Tutaj dużym pozytywem jest fakt , że wpierane są wszystkie typy projektów wspierane przez Visual Studio. Niestety są też wady, a mianowicie dużo trudniej stwierdzić, czy biuld się udał, czy coś poszło nie tak (i dlaczego?) oraz zdarza się (przynajmniej u mnie) że środowisko kończy swoje działanie w wyjątku.

    Podsumowując

    Na tym prostym przykładzie widać, że mamy kilka możliwości by wykonywać build’a z linii poleceń (np. przy pomocy jakiegoś skryptu). Najwygodniejszym (i polecanym) jest MSBUILD, chociaż w przypadku nie wspieranych przez niego projektów warto wspomagać się wywołaniem Visual Studio (devenv.exe) bezpośrednio z linii poleceń.

    Promuj

    Posty powiązane / Related posts