poniedziałek, 31 sierpnia 2009

I po urlopie ... [PL]

Przez ostatnie pół miesiąca na blogu była cisza... ale już z urlopu w górach wróciłem i wkrótce pojawią się jakieś nowe (mam nadzieję że ciekawe) wpisy.

Pozdrowienia dla wszystkich!

czwartek, 13 sierpnia 2009

OPC Unified Architecture (OPC UA) [PL]

OPC Unified Architecture (OPC UA) jest niezależnym platformowo standardem, przy pomocy którego wiele różnych rodzajów systemów może się komunikować. Wiadomości wymieniane pomiędzy klientami i serwerami mogą być przesyłane z wykorzystaniem różnego rodzajów sieci. OPC UA zostało stworzone aby wymiana danych odbywała się w sposób wydajny, bezpieczny, odporny na ataki i zapewniającą wzajemną identyfikację klienta i serwera.

Na tym blogu pojawiło się już wiele wpisów na temat tej technologii, chciałbym jednak (aby usprawnić nawigację), przypomnieć te wpisy, od których warto zacząć, by zapoznać się z tą technologią. W tym celu przygotowałem listę ciekawszych wpisów dotyczących OPC Unified Architecture (OPC UA).

Artykuł: OPC Unified Architecture (OPC UA), czyli krok na przód:

  1. Wstęp - idźmy z duchem czasu.
  2. Dlaczego czas na nowy standard?
  3. Co przyniesie OPC UA?
  4. Typowa architektura systemów opartych o OPC Unified Architecture.
  5. Jaki krok teraz? (czyli jak ma wyglądać migracja z OPC Classic do OPC Unified Architecture (OPC UA))
  6. Podsumowanie (czy damy szansę technologii OPC Unified Architecture?)

Artykuł: Infrastruktura komunikacyjno-usługowa OPC Unified Architecture (OPC UA):

  1. OPC UA jako przykład nowoczesnego podejścia do tworzenia standardu.
  2. Architektura komunikacyjna
  3. Kodowanie i mapowanie
  4. Zbiory usług
  5. Mechanizm odkrywania
  6. Połączenie, czyli kanały i sesje
  7. Subskrypcje
  8. Subskrypcje – przykładowe ustawienia i wykorzystanie
  9. Mechanizm publikowania
  10. Podsumowanie

Profile w OPC Unified Architecture (OPC UA).

Dodatkowe materiały

  1. Specyfikacje OPC Unified Architecture (OPC UA) wreszcie opublikowane jako skończone
  2. OPC, OPC Unified Architecture (OPC UA), gdzie znaleźć informacje na te tematy?
  3. Blog jednego z twórców OPC Unified Architecture (OPC UA) - Randy'iego Armstrong'a
  4. OPC Unified Architecture (OPC UA), pakiety SDK (.NET, java) i inne oprogramowanie
  5. OPC Foundation Unified Architecture SDK .NET wreszcie ma status released
  6. Wstęp do modelowania przestrzeni adresowej OPC UA przy użyciu Address Space Model Designer
  7. Sierpniowy OPConnect (artykuły też o OPC UA)
  8. OPC Programmers' Connection: nowe strony dot. OPC UA

Życzę wszystkim miłej lektury.


Historia posta:

  1. 2009.08.13 - Wersja pierwsza
  2. 2010.04.16 - Dodano artykuł o profilach

środa, 12 sierpnia 2009

Najbliższe wydarzenia związane z OPC [PL]

Już niedługo wrzesień, a w nim odbędą się dwa wydarzenia związane z technologią OPC:

Chciałbym również poinformować, że w tym roku firma CAS (w tym ja ;) ) kolejny raz wybiera się na "Interoperability Workshop".

wtorek, 11 sierpnia 2009

Open XML - tworzymy dokument Word (docx) - Podsumowanie (1) [PL]

Ostatnio w ramach tego bloga pojawiło się trochę wpisów na temat formatu Open XML, tworzenia dokumentów dla Word (docx), języka WordProcessingML, tym razem postanowiłem przedstawić spis wspomnianych artykułów:

  1. Open XML Format SDK 2.0 - pierwsze wrażenia - gdzie znaleźć, jak zainstalować i jak napisać najprostszą aplikację
  2. Style w Open XML SDK - czyli podstawy formatowania tekstu i wykorzystaniu styli
  3. Tabele w Open XML Format SDK (DOCX) (czyli przygotowujemy tabliczkę mnożenia dla Workd 2007) - jak przygotować tabelę z wykorzystaniem SDK dla Open XML Format
  4. Kierunek: w głąb formatu "docx" - co tak na prawdę znajduje się w pliku DOCX
  5. Przyjrzyjmy się WordProcessingML wchodzącego w skład formatu OpenXML - jak wygląda ten OpenXML
  6. Na lewo, na prawo.... hej w Open XML - czyli jak sterować wyrównaniem tekstu (w stylach i paragrafach)

Wiem że te wpisy nie wyczerpują wszystkich zagadnień, a nawet można je nazwać zaledwie rzutem oka na ten temat, ale przy pomocy tego posta chciałbym usprawnić nawigację po tym blogu, tak aby łatwiej można było odnaleźć potrzebne informacje

Zapraszam do lektury!

poniedziałek, 10 sierpnia 2009

Jak wypakować zawartość pliku MSI? [PL]

Czy zdarzyło wam się, że trzeba było zajrzeć co zawiera instalator typu MSI, bez instalowania danego produktu? Mnie tak, a rozwiązanie okazało się bardzo proste. Wiem że to co za chwilę napiszę znajduje się na innych blogach, ale aby ułatwić moim czytelnikom (i sobie ;) ) możliwość skorzystania z tego sposobu, postanowiłem podać tą receptę również na tym blogu.

Do wypakowania plików zawartych w pliku .msi wystarczy w linii komend wpisać:

msiexec /a Path_to_MSI_file /qb TARGETDIR=Extraction_directory

Na przykład, gdy chcemy wypakować pliki z c:\myinstaller.msi do katalogu c:\myinstaller_content (katalog musi istnieć przed wykonaniem komendy), należy wpisać:

msiexec /a c:\myinstaller.msi /qb TARGETDIR=c:\myinstaller_content

Proste prawda?

P.S. wiem że są również inne narzędzia np. Less MSIérables, ale ponieważ to proste rozwiązanie wykonuje akurat to, co potrzebuję, więc po co sięgać po bardziej skompilowane rozwiązania?

niedziela, 9 sierpnia 2009

OPC Programmers' Connection: nowe strony dot. OPC UA [PL]

Ostatnio (6-go sierpnia 2009) na wortalu OPC Programmers' Connection pojawily się nowe strony dotyczące nowego standardu OPC Unified Architecture (OPC UA):

Zapraszam do odwiedzenia i zapoznania się z dostępnymi tam zasobami. Zwłaszcza z narzędziem (które współtworzę i o którym już wspominałem na tym blogu): OPC UA Address Space Model Designer (dostępnym w dziale: "Free UA Utilities"):

Supplier

Product

Notes

CommServer

UA Model Designer

A powerful tool for creating, displaying and editing OPC UA models that are compatible with the OPC Unified Architecture address space concept.

sobota, 8 sierpnia 2009

Na lewo, na prawo.... hej w Open XML [PL]

"Na lewo, na prawo, w górę i w dół..." :-) - tym zabawowo(weselnym) akcentem zacznę tego posta, który ... dotyczyć będzie kolejnych zagadnień związanych z Open XML Format SDK.

A dlaczego? Gdyż chciałbym zająć się wyrównaniem tekstu: do lewej, do prawej, do środka, i wyjustowany.

Jak można więc ustawiać wyrównanie tekstu? W tym celu należy ustawić odpowiednie właściwości paragrafu dla stylu, który chcemy zmienić lub paragrafu w którym chcemy ustawić wyrównanie. Wykorzystujemy więc właściwość Justification klasy ParagraphProperties, której należy nadać wartość wchodzącą w skład elementu wyliczeniowego: JustificationValues Enumeration, o następujących elementach:

  • Center: Center (Equation)
  • CenterGroup: Centered as Group (Equations)
  • Left: Left Justification
  • Right: Right

Zakończmy więc teorię i przejdźmy do kodu, który będzie krótki i łatwy. Zakładając że na przykład chcemy wycentrować dany tekst (w paragrafie, bądź przy użyciu stylu) wystarczy wykonać następujący kod:

paragraph_or_style.Append( new ParagraphProperties(
    new Justification() { Val = JustificationValues.Center } ) );

Kod ten powoduje dodanie do dokumentu, napisanego w WordProcessingML, następującego kodu XML:

<w:jc w:val="center"/>

Tutaj ważna jest jeszcze jedna kwestia, a mianowicie odpowiednie formatowanie powinno być dodane do elementu paragrafu na początku i koniecznie przed dodaniem do niego tekstu, czyli np. oczekiwany efekt uzyskamy wykonując kod:

 Paragraph paragraph = new Paragraph();
 Run run_paragraph = new Run();
 // we want to put that text into the output document
 Text text_paragraph = new Text( "Hello World!" );
 //Append elements appropriately.
 run_paragraph.Append( text_paragraph );
 paragraph.Append( new ParagraphProperties(
    new Justification() { Val = JustificationValues.Center } ) );
 paragraph.Append( run_paragraph );

Natomiast tekst nie zostanie sformatowany, gdy do paragrafu najpierw został by dodany element Run, a dopiero później ParagraphProperties

środa, 5 sierpnia 2009

Przyjrzyjmy się WordProcessingML wchodzącego w skład formatu OpenXML [PL]

Chciałbym powrócić do tematyki związanej z tworzeniem dokumentów aplikacji MS Word (docx) zgodnych z formatem OpenXML z wykorzystniem pakietu Open XML Format SDK 2.0 i zająć się zawartością tworzonych dokumentów a dokładnie dokumentów napisanych w XML'u zgodnym z "językiem" WordProcessingML.

Proste Hello World!

Na początek zobaczmy jak wygląda proste "Hello World!" (przykładowy kod funkcji generującej taki dokument jest: tutaj)

<?xml version="1.0" encoding="utf-8"?> 
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
  <w:body> 
   <w:p> 
   <w:r> 
   <w:t>Hello World!</w:t> 
   </w:r> 
   </w:p> 
  </w:body> 
</w:document> 

Jak widać w powyższym kodzie XML widać duże powiązanie pomiędzy kodem napisanym w C#, a powyższym. Zadeklarowany jest dokument (document = WordprocessingDocument) wewnąrz którego jest część Body (body), w niej znajduje się paragraf (p = Paragraph) z elementem typu Run (r) i odpowiednim tekstem (t = Text).

Style

W przypadku styli (przykładowy kod funkcji tutaj), generowane są dwa pliki, jeden zawierający definicję stylu:

<?xml version="1.0" encoding="utf-8"?> 
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:style w:styleId="MyHeading1"> 
        <w:name w:val="My Heading 1" /> 
        <w:basedOn w:val="Heading1" /> 
        <w:next w:val="Normal" /> 
        <w:rPr> 
        <w:color w:val="FF0000" /> 
        <w:rFonts w:ascii="Arial" /> 
        <w:b /> 
        <w:sz w:val="28" /> 
        </w:rPr> 
    </w:style> 
</w:styles>

oraz drugi z definicją z konkretnym dokumentem:

<?xml version="1.0" encoding="utf-8"?> 
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
    <w:body> 
        <w:p> 
            <w:pPr> 
            <w:pStyle w:val="MyHeading1" /> 
            </w:pPr> 
            <w:r> 
            <w:t>This is Heading</w:t> 
            </w:r> 
        </w:p> 
    </w:body> 
</w:document> 

Jak widać w tym przypadku otrzymujemy kod WordProcessingML bardzo podobny do tego z poprzedniego przykładu, jednak  dodana została specjalna właściwość (pPr = ParagraphProperties), w której został wybrany odpowiedni styl (pStyle = ParagraphStyleId), który jest zdefiniowany w innym pliku.

Tabele

Ostatni przykład dotyczyć będzie tabeli (której tworzący ją kod jest tutaj):

<?xml version="1.0" encoding="utf-8" ?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
    <w:body>
        <w:tbl>
            <w:tblpr>
                <w:tblborders>
                    <w:top w:val="single" />
                    <w:left w:val="single" />
                    <w:bottom w:val="single" />
                    <w:right w:val="single" />
                    <w:insideh w:val="single" />
                    <w:insidev w:val="single" />
                </w:tblborders>
            </w:tblpr>
            <w:tr>
                <w:tc>
                    <w:p>
                        <w:r>
                            <w:t>Multiplication table</w:t>
                        </w:r>
                    </w:p>
                    <w:tcpr>
                        <w:gridspan w:val="11" />
                    </w:tcpr>
                </w:tc>
            </w:tr>
            <w:tr> 
            <w:tc>
                <w:p>
                    <w:r>
                        <w:t>*</w:t>
                    </w:r>
                </w:p>
            </w:tc> 
            <w:tc>
                <w:p>
                    <w:r>
                        <w:t>1</w:t>
                    </w:r>
                </w:p>
            </w:tc> 
            <!—- many cells and rows declarations --> 
            </w:tr>
        </w:tbl>
    </w:body>
</w:document>

Czyli mamy tutaj takie elementy jak tabela (tbl = Table ) z odpowiednimi właściwościami (tblpr = TableProperties ) i ramkami (tblborders = TableBorders ), w której znajdują się wiersze (tr = TableRow ) i kolumny (tc = TableCell ).

Podsumowanie

Jak widać na powyższych przykłach jest duży związek pomiędzy wykorzystywanymi elementami pakietu Open Document Format SDK a konkretnym elementami zapisywanymi w języku WordProcessingML, dlatego jeżli nie wiemy jak coś przygotować przy pomocy SDK, można zawsze przygotować odpowiedni plik przy pomocy edytora tekstu (np. Word), a następnie sprawdzić, co rzeczywiście zostało w nim utworzone (jeżeli ktoś nie wie jak to zrobić, to zapraszam do przeczytania posta:Kierunek: w głąb formatu "docx".

wtorek, 4 sierpnia 2009

Sierpniowy OPConnect (artykuły też o OPC UA) [PL]

Wczoraj opublikowany został kolejny numer oficjalnego newslettera OPC Foundation, czyli OPConnect. Wydanie jak zawsze dostępne jest na stronach AutomationWorld: http://www.automationworld.com/newsletters/opc-08-03-09.html (linki do numerów archiwalnych można znaleźć na stronach OPC Foundation: http://www.opcfoundation.org/Default.aspx/02_news/02_newsletters.asp).

W najnowszym numerze, oprócz artykułów dot. aktualnego standardu OPC Classic, można również znaleźć dwa na temat nowej wersji OPC jaką jest OPC Unified Architecture (OPC UA):

  • Sześć korzyści z OPC UA dla końcowego użytkownika (tytuł oryginalny: "Top Six Benefits of OPC UA for End-Users"), w którym autor (Thomas Burke - szef OPC Foundation) przedstawia korzyści wynikające z wykorzystania OPC Unified Architecture, wśród nich znajdują się takie elementy jak niezawodność,wydajność, wsparcie dla wielu platform sprzętowo-systemowych oraz łatwość w użyciu i migracji (oryginalny artykuł znajduje się pod adresem: http://www.automationworld.com/feature-5795).
  • OPC UA Interoperability Proves Worth For Pharma, w którym autor opisuje m.in. inicjatywę stworzenia adaptacji standardu OPC Unified Architecture na potrzeby komunikacji z różnego rodzajami analizatorów (pracujących w takich gałęziach przemysłu jak: farmaceutyczny, spożywczy, chemiczny, itp...), inicjatywa ta ma skróconą nazwę ADI, od Analyzer Device Interface (oryginalny artykuł znajduje się pod adresem: http://www.automationworld.com/feature-5797).

Zapraszam do lektury.

OPC Foundation Unified Architecture SDK .NET wreszcie ma status released [PL]

Jakiś czas temu pisałem, że część  dokumentacji wchodzących w skład specyfikacji nowego standardu: OPC Unified Archtecture (OPC UA) zostały wreszcie opublikowane jako "released":http://maciej-progtech.blogspot.com/2009/02/specyfikacje-opc-unified-architecture.html oraz http://maciej-progtech.blogspot.com/2009/04/opc-unified-architecture-opc-ua-pakiety.html.

Teraz pojawiła się kolejna nowość: ostatnio (2009-07-31) również pakiet SDK dla OPC Unified Architecture (OPC UA) wreszcie uzyskał status released, dzięki temu dostępny został jego kod źródłowy.Pakiet jest dostępny na stronach OPC Foundation w dziale "downloads":

http://www.opcfoundation.org/Downloads.aspx?CI=288

(pliki mogą pobrać tylko członkowie OPC Foundation - OPC Foundation Corporate Members only).

Pakiet SDK zawiera wsparcie dla C/C++ oraz .NET, dokumentacja do pakietu jest dostępna online pod adresem: http://opcfoundation.org/uasdk/Help/ oraz plik "Readme" tutaj: http://www.opcfoundation.org/DownloadFile.aspx/UA%20Software/OPC%20UA%20SDK%201.00%20Readme%20250.1.rtf?RI=596

Dla tych którzy chcą zapoznać się z możliwościami pakietu (oraz z samą technologią OPC Unified Architecture), polecam obejrzenie filmu (z dość nowego webinar'u (2009-07-29)):

http://opcfiles.org/files/webinars/2009-07-29/OPC%20Unified%20Architecture%20Overview%20For%20Developers%20Architects.wmv 

(gdyby ktoś miał problem z odtwarzaniem filmu należy zainstalować GoToMeeting Codec).

Można również zapoznać się z moimi artykułami:

Posty powiązane / Related posts