1 Programowanie w języku G - Laboratorium 11 Ćwiczenie 11.1 Zapis plików binarnych Cel: Stworzenie programu zapisującego dane w pliku binarnym o prostym formatowaniu. Pogram będzie zapisywał dane w pliku binarnym bazującym na prostym formacie, polegającym na zamieszczaniu w nagłówku pliku wartości I32 (long word integer) informującej o liczbie danych (punktów pomiarowych) zamieszczonych dalej w pliku. W kolejnym z ćwiczeń zostanie utworzony program do odczytywania danych z takich plików. Panel czołowy 1. W oknie nowego projektu wprowadzić brakujące elementy i rozmieścić je w sposób zbliżony do pokazanego na zamieszczonym poniżej rysunku panelu czołowego. Panel zawiera: a) wykres Waveform graph, b) kontrolkę tekstową Menu Ring (Select Waveform), c) wskaźnik liczbowy Numeric Indicator (Number of Data Points). 2. Charakterystyczne elementy zamieszczonych na panelu obiektów to: a) Reprezentacja danych wskaźnika liczbowego Numeric Indicator (Number of Data Points) to 32-bitowa liczba całkowita (menu kontekstowe /Representation /I32). b) Pozycje Menu Ring to kolejno (menu kontekstowe /Properties /Edit Items): 0 Zero, 1 Sinus, 2 - Prostokąt, 3 Piła. Reprezentacja liczbowa menu to nieoznaczona liczba szesnastobitowa U-16 (menu kontekstowe /Representation /U16). Jeśli chcemy obserwować wartości liczbowe towarzyszące wybieranym pozycjom tekstowym (np. Sinus = 1), konieczne jest wyświetlenie wskaźnika (menu kontekstowe /Visible Items /Digital Display). Schemat blokowy 1. Uzupełnić schemat blokowy o brakujące elementy i połączenia. Są to: a) Węzeł Open/Create/Replace File.vi (paleta Functions /All Functions / File I/O). Węzeł zgodnie z nazwą, w zależności od konfiguracji, otwiera, tworzy lub nadpisuje pliki. W bieżącym ćwiczeniu jako podstawowa wykorzystywana będzie funkcja tworzenia plików. b) Funkcja Write File (paleta Functions /All Functions /File I/O). Funkcja występuje na schemacie dwukrotnie. Pierwsze wystąpienie funkcji Write File zapisuje binarny nagłówek pliku zawierający liczbę wartości zapisywanych w pliku. Drugie wystąpienie Write File zapisuje tablicę danych. Programowanie w języku G strona 1
2 c) Funkcja Close File (paleta Functions /All Functions /File I/O). Funkcja Close File zamyka plik po zapisaniu w nim danych. d) Program Simple Error Handler.vi (paleta Functions /All Functions /Time & Dialog), który w przypadku wystąpienia błędu powoduje wyświetlenie okna dialogowego z opisem błędu i miejscem jego wystąpienia. e) Stała wejściowa funkcji Write File - pos mode równa start (menu kontekstowe wejścia funkcji Write File i polecenia Create /Constant). Zadeklarowanie stałej wejściowej pos mode wartości start wymusza zapis nowych danych od początku pliku. f) Stała wejściowa funkcji Open/Create/Replace File równa create or replace (menu kontekstowe wejścia funkcji Open/Create/Replace File i polecenia Create /Constant). Wybór wartości create or replace umożliwia użytkownikowi utworzenie nowego lub nadpisanie istniejącego pliku. g) Program Acquire Signal.vi (paleta Functions /All Functions /Select a VI ) zlokalizowany w miejscu wskazanym przez prowadzącego. Program generuje przebieg o kształcie wybranym za pomocą kontrolki Select Waveform (Wybierz przebieg). h) Funkcja tablicowa Array Size (paleta Functions /All Functions /Array), on the block diagram. W bieżącym ćwiczeniu funkcja zwraca liczbę jednowymiarowej tablicy elementów zapisywanych w pliku. 2. Zapisać plik programu pod nazwą Binary File Writer.vi. 3. Uruchomić program, a otrzymane dane zapisać na dysku pod nazwą data.bin. 4. Zatrzymać program i zamknąć wszystkie jego okna. Ćwiczenie 11.2 Odczyt plików binarnych Cel: Stworzenie programu odczytującego dane z pliku binarnego (utworzonego w poprzednim ćwiczeniu). Panel czołowy Programowanie w języku G strona 2
1. W oknie nowego projektu wprowadzić brakujące elementy Panel zawiera: a) wykres Waveform graph, b) wskaźnik liczbowy Numeric Indicator (Number of Data Points). Reprezentacja danych wskaźnika to 32-bitowa liczba całkowita (menu kontekstowe /Representation /I32). Schemat blokowy 1. Uzupełnić schemat blokowy o brakujące elementy i połączenia. Są to: 3 a) Węzeł Open/Create/Replace File.vi (paleta Functions /All Functions / File I/O). Zadaniem węzła jest otworzenie pliku. b) Funkcja Read File (paleta Functions /All Functions /File I/O). Funkcja występuje na schemacie dwukrotnie. Pierwsze wystąpienie funkcji Read File odczytuje binarny nagłówek pliku zawierający liczbę wartości zapisywanych w pliku. Drugie wystąpienie Read File odczytuje z pliku tablicę danych. c) Funkcja Close File (paleta Functions /All Functions /File I/O). Funkcja Close File zamyka plik binarny po odczytaniu z niego danych. d) Program Simple Error Handler.vi (paleta Functions /All Functions /Time & Dialog), który w przypadku wystąpienia błędu powoduje wyświetlenie okna dialogowego z opisem błędu i miejscem jego wystąpienia. e) Stała liczbowa byte stream type (paleta Functions /All Functions / Numeric) o reprezentacji I32 (domyślna reprezentacja stałych liczbowych). Stała definiuje typ danych, na które oczekuje funkcja Read File przy odczycie nagłówka. f) Stała liczbowa byte stream type (paleta Functions /All Functions /Numeric) o reprezentacji Double Precision (DBL) (menu kontekstowe /Representation /Double Precision). Stała definiuje typ danych, na które oczekuje funkcja Read File przy odczycie danych pomiarowych. 2. Zapisać plik programu pod nazwą Binary File Reader.vi 3. Otworzyć plik data.bin utworzony w poprzednim ćwiczeniu. Po otworzeniu pliku, funkcja Read File wykorzystuje wejście byte stream type skonfigurowane czterobajtową wartością long integer, do odczytania pierwszych czterech bajtów pliku zapisanych jako nagłówek. Funkcja wyświetla liczbę przechowywanych wartości na wskaźniku Number of Data Points. Drugie wystąpienie węzła Read File odczytuje tablicę danych o reprezentacji wymuszonej za pomocą wejścia byte stream type skonfigurowanego wartością o reprezentacji double precision. Wejście count definiuje liczbę wartości odczytywanych z pliku bnarnego. 4. Zatrzymać program i zamknąć wszystkie jego okna. Programowanie w języku G strona 3
4 Ćwiczenie 11.3 Podprogram Zapis danych do pliku Cel: Ukończenie programu zapisującego dane do pliku. Tworzony w bieżącym ćwiczeniu program będzie obsługiwał przycisk opcji Log Results to File programu Analyze & Present Data.vi z ćwiczenia 9.6 Analiza i prezentacja danych (panel czołowy zamieszczono poniżej). Utworzony program będzie stanowił element większego systemu tworzonego w kolejnych ćwiczeniach. W aktualnie tworzonym programie konieczne jest zapisanie na dysku danych różnego typu. Zestaw danych stanowią proste dane liczbowe, tablica danych liczbowych i dane łańcuchowe. Wykonanie ćwiczenia doprowadzi do stworzenia programu pozwalającego na zapis wymienionych danych do pliku. Panel czołowy 1. Otworzyć plik Save Data to File.vi. Program posiada już panel czołowy. Dwie kontrolki panelu używane są do wprowadzania danych do programu i stanowią część większego systemu budowanego w trakcie ćwiczeń. Data Cluster zawierał będzie część analizowanych danych przeznaczonych do zapisu na dysk, zaś łańcuch Operator Name nazwę pracownika również zapisywaną w pliku. Programowanie w języku G strona 4
Schemat blokowy 1. Przekształć schemat blokowy wprowadzając wymagane modyfikacje, elementy i połączenia. 5 a) Usunąć stałą logiczną oznaczoną Delete Me. b) Zamieścić funkcję File Dialog (paleta Functions /All Functions /File I/O /Advanced File Functions). Funkcja wyświetla okno dialogowe umożliwiające nadanie nazwy plikowi. Wyjścia funkcji File Dialog o nazwach exists i cancelled podłączyć do wejść funkcji logicznej OR. Dodatkowo wyjście exists podłączyć do wejścia struktury wyboru Case. c) Utworzyć stałą new file wejścia select mode funkcji File Dialog (menu kontekstowe wejścia select mode funkcji File Dialog i polecenia Create oraz Constant). Za pomocą lewego przycisku myszy zadeklarować wartość utworzonej stałej równą new file. d) Utworzyć stałą Nazwa dla nowego pliku danych: wejścia prompt funkcji File Dialog (menu kontekstowe wejścia prompt funkcji File Dialog i polecenia Create oraz Constant). Wprowadzony łańcuch stanowi tytuł okna dialogowego. Do zapisu danych służy zewnętrzna struktura Case. Należy zwrócić uwagę, że połączone dane operator name i data cluster dostarczają informacji o typie danych zamieszczanych w pliku (do funkcji New File i Write File). e) Zamieścić funkcję New File (paleta Functions /All Functions /File I/O /Advanced File Functions). Funkcja odpowiedzialna jest za utworzenie nowego pliku. Informacja o typie danych pliku dostarczana jest za pomocą wejścia datalog type w dolnej części ikony funkcji. f) Zamieścić funkcję Write File (paleta Functions /All Functions /File I/O). g) Zamieścić funkcję Close File (paleta Functions /All Functions /File I/O). Programowanie w języku G strona 5
h) Zamieścić program Simple Error Handler.vi (paleta Functions /All Functions /Time & Dialog), który w przypadku wystąpienia błędu powoduje wyświetlenie okna dialogowego z opisem błędu i miejscem jego wystąpienia. 2. Zapisać plik pod istniejącą nazwą (Save Data to File.vi). Zamknąć wszystkie okna programu. 3. Otworzyć plik programu Analyze & Present Data.vi z ćwiczenia 9.6 (ćw. 9.6 Analiza i prezentacja danych). Program Save Data to File zostanie dodany w ten sposób, aby był wywoływany po wybraniu przycisku Log Results to File. 6 4. Zmodyfikować przypadek nr 1 struktury wyboru (Case) (zamieścić podprogram Save Data to File i brakujące połączenia) tak, jak to pokazano na powyższym rysunku. Zapisać plik pod istniejącą nazwą tj.: Analyze & Present Data.vi. 5. Uruchomić program Analyze & Present data. Wybrać dowolny zakres danych z wykresu, a następnie przycisk Analyze Selected Subset. W kolejnym kroku wybrać przycisk Log Results to File. Zostanie wyświetlone okno dialogowe pozwalające na nadanie nazwy zapisywanemu plikowi. Wprowadzić nazwę subset1.dat i zapisać plik. 6. Wybrać przycisk Return and zamknąć okno programu Analyze & Present Data. Ćwiczenie 11.4 Przeglądanie danych plikowych program View Analysis File Cel: Zapoznanie z programem (View Analysis File) odczytującym dane z pliku zapisanego za pomocą uprzednio utworzonego programu Save Data to File. Panel czołowy 1. Z lokalizacji wskazanej przez prowadzącego, otworzyć plik View Analysis File.vi. Program jest w pełni funkcjonalny posiada panel czołowy i kompletny schemat blokowy. 2. Po obejrzeniu panelu czołowego przejść do okna schematu. Programowanie w języku G strona 6
7 Schemat blokowy 1. Zapoznać się z możliwym sposobem funkcjonowania programu. Jeżeli użytkownik wybierze w oknie dialogowym przycisk Anuluj, program nie realizuje żadnych funkcji. Należy zwrócić uwagę, że wejście datalog type funkcji File Dialog połączone jest z pustym klastrem tego samego typu, jakiego mają być odczytywane dane. Takie połączenie powoduje, że program środowiska LabVIEW wyświetla katalogi i pliki określonego rodzaju. P wybraniu pliku odczytywany jest on jako jeden rekord. 2. Uruchomić program i wczytać utworzony wcześniej plik subset1.dat. 3. Zamknąć wszystkie okna programu nie zapisując w nim zmian. Programowanie w języku G strona 7
Ćwiczenie 11.5 Zdalny panel Cel: Demonstracja przeglądania i sterowanie programem ze zdalnego komputera z zainstalowanym środowiskiem LabVIEW. Panel czołowy 1. Uruchomić okno wyszukiwarki Example Finder (dowolne okno środowiska LabVIEW /menu Help /Find Examples lub okno startowe środowiska LabVIEW /przycisk /Find Examples). 8 2. Na karcie Browse wybrać opcję przeglądania (Browse according to:) Task. 3. Wybrać grupę Analyzing and Processing Signals, a z niej Signal Processing i program Dynamic Signal Analyzer (sim).vi. Powinien zostać wyświetlony poniższy panel czołowy. 4. Uruchomić program. Przetestować sposób funkcjonowania programu zmieniając ustawienia kontrolek panelu. 5. Zakończyć działanie programu za pomocą przycisku STOP. Programowanie w języku G strona 8
Konfiguracja serwera WWW 6. Z menu Tools wybrać polecenie Options, a listy rozwijalnej Web Server: Configuration. 7. Skontrolować, czy pole opcji Enable Web Server jest wybrane. W przypadku braku wyboru, zaznaczyć pole. 8. Z listy opcji wybrać Web Server: Browser Access. Skontrolować, czy pole opcji Allow Viewing and Controlling jest zaznaczone (dla pozycji z Browser Access List oznaczonej dwoma zielonymi checkmarkami). 9. Z listy opcji wybrać Web Server: Visible VIs. Skontrolować, czy pole opcji Allow Access jest zaznaczone (dla pozycji z listy Visible VIs oznaczonej zielonym checkmarkiem). 10. Wybrać przycisk OK, aby zamknąć okno dialogowe Options. 11. Zidentyfikować i zanotować adres IP stacji roboczej. Informacje o sposobie adresowania (adresy statyczne, dynamiczne) można uzyskać od prowadzącego zajęcia. W przypadku stacji roboczych Windows 200X i XP adres IP stacji można uzyskać po wydaniu ciągu poleceń: przycisk Start /Uruchom /cmd / ipconfig /all. W przypadku stacji roboczych systemu Windows 98 adres IP można poznać po wykonaniu poleceń: Start /Uruchom /winipcfg. 12. Zasięgnąć informacji prowadzącego o sposobie ochrony stacji roboczych. Może istnieć konieczność wyłączenia zapory sieciowej (firewall) lub zmiany jej konfiguracji. 13. Uruchomić program Dynamic Signal Analyzer (sim).vi. 14. Kolejne kroki ćwiczenia powinny być wykonywane z innej stacji roboczej lub w stosunku do programu uruchomionego na innej stacji. 9 Zdalne przeglądanie panelu programu i zdalne sterowanie 1. Otwórz okno nowego programu i z menu Operate wybierz polecenie Connect to Remote Panel. 2. W wyświetlonym oknie dialogowym wprowadź: a) w pole Server IP address - adres IP sąsiedniego komputera, b) w pole VI Name - nazwę uruchomionego na nim programu (Dynamic Signal Analyzer (sim).vi), c) pole Port pozostawić bez zmian (port 80 odpowiada domyślnemu ustawieniu Options /Web Server: Configuration), d) zaznaczenie opcji Request Control. 3. Wybierz przycisk Connect. 4. Powinno zostać wyświetlone okno programu Dynamic Signal Analyzer (sim). Zwrócić uwagę, że na zdalnym panelu został wyświetlony komunikat Control Granted wskazujący, że zdalny panel ma możliwość sterowania programem na komputerze serwera. Dodatkowo na komputerze serwera wyświetlany jest komunikat Control granted to nazwa komputera, gdzie nazwa komputera jest nazwą zdalnej stacji. Kliknięcie w dowolnym miejscu panelu powoduje ukrycie komunikatu. 5. Wprowadzić różne ustawienia w działającym programie (modyfikować ustawienia kontrolek). Zwrócić uwagę, że faktycznie sterowany jest komputera serwera. 6. Na komputerze serwera programu wybrać z menu kontekstowego (prawy przycisk myszy) panelu programu polecenie Regain Control. Kontrolę nad aplikacją przejmuje komputer serwera. Przeciwdziałanie ponownemu przejmowaniu kontroli uzyskuje za pomocą menu kontekstowego i polecenia Remote Panel Server i Lock Control. Ponowne umożliwienie przejęcia możliwe jest za pomocą poleceń kontekstowych Remote Panel Server /Unlock Control.. 7. Zatrzymać program na komputerze serwera. Zwrócić uwagę, że program zatrzymał się również na komputerze zdalnym. 8. Nie zamykać okna programu. Będzie on wykorzystywany w dalszych ćwiczeniach. Programowanie w języku G strona 9
Ćwiczenie 11.6 Zdalny panel (2) Cel: Demonstracja zdalnego przeglądania panelu programu i sterowanie programem za pomocą przeglądarki internetowej. Panel czołowy 1. Jeżeli program Dynamic Signal Analyzer (sim).vi został zamknięty, uruchomić go ponownie. Postępować zgodnie z instrukcjami z ćwiczenia 11.5 tj.: a) Uruchomić okno wyszukiwarki Example Finder (dowolne okno środowiska LabVIEW /menu Help /Find Examples lub okno startowe środowiska LabVIEW /przycisk /Find Examples). b) Na karcie Browse wybrać opcję przeglądania (Browse according to:) Task. c) Wybrać grupę Analyzing and Processing Signals, a z niej Signal Processing i program Dynamic Signal Analyzer (sim).vi. Powinien zostać wyświetlony panel czołowy programu Dynamic Signal Analyzer (sim).vi. 2. Z menu Tools wybrać polecenie Web Publishing Tool. 10 3. W oknie dialogowym zadeklarować: a) pole Document Title - tytuł okna dokumentu przeglądarce oraz pierwszego tekstu w oknie przeglądarki (np. Zdalny program Dynamic Analyzer); b) pole Header tekst (nagłówek) poprzedzający okno programu (np. Zdalny program Dynamic Analyzer); c) pole VI Name lista programów aktualnie obecnych w pamięci operacyjnej stacji roboczej. Pozostawić Dynamic Signal Analyzer (sim).vi; d) pole Viewing Options: Embedded opcja pełnego sterowania zdalnego; e) opcja Order: wybrana wyświetlanie ramki wokół grafiki panelu czołowego w przeglądarce; f) pole Request Control: pusta po wybraniu, opcja automatycznego przejmowania kontroli zdalnej; Programowanie w języku G strona 10
g) pole Footer tekst występujący na końcu okno programu w przeglądarce (np. Koniec panelu programu). 4. Za pomocą przycisku Save to Disk zapisać program w domyślnej lokalizacji (domyślnie w miejscu standardowej instalacji środowiska LabVIEW np. C:\Program Files\National Instruments\LabVIEW 7.1\www) pod domyślną nazwą (np. Dynamic Signal Analyzer (sim).htm). 5. Za pomocą Notatnika lub innego edytora tekstu skontrolować zawartość utworzonego pliku HTML (np. C:\Program Files\National Instruments\LabVIEW 7.1\www \Dynamic Signal Analyzer (sim).htm). Zwrócić uwagę na elementy tekstowe wprowadzone za pomocą edytora Web Publishing Tool. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN"> <HTML> <HEAD> <TITLE>Zdalny program - Dynamic Analyzer</TITLE> </HEAD> <BODY > <H1>Zdalny program - Dynamic Analyzer</H1> Program zarządzalny zdalnie. Wybierz "Request Control of VI".<P> <TABLE BORDER = 1 BORDERCOLOR = #000000><TR><TD> <SCRIPT language="javascript"><!-- var lng; if (navigator.userlanguage) { lng = navigator.userlanguage; }; if (navigator.language) { lng = navigator.language.tolowercase(); }; var obj = '<OBJECT ID="LabVIEWControl" CLASSID="CLSID:A40B0AD4-B50E-4E58-8A1D-8544233807AC" WIDTH=666 HEIGHT=513 CODEBASE="ftp://ftp.ni.com/support/labview/runtime/windows/7.1'; if (lng.indexof("fr")!= -1) { obj = obj + '/French'; } else if (lng.indexof("de")!= -1) { obj = obj + '/German'; } else if (lng.indexof("ja")!= -1) { obj = obj + '/Japanese'; } obj = obj + '/LVRunTimeEng.exe">'; document.write(obj); // --></SCRIPT> <PARAM name="lvfppviname" value="dynamic Signal Analyzer (sim).vi"> <PARAM name="reqctrl" value=false> <EMBED SRC=".LV_FrontPanelProtocol.rpvi71" LVFPPVINAME="Dynamic Signal Analyzer (sim).vi" REQCTRL=false TYPE="application/x-labviewrpvi71" WIDTH=666 HEIGHT=513 PLUGINSPAGE="http://digital.ni.com/express.nsf/express?openagent&code=ex3e33&"></EMBED> </OBJECT> </TD></TR></TABLE> <P> Koniec okna programu. </BODY> </HTML> 11 6. Zamknąć program Notatnik lub inny edytor tekstu nie wprowadzając zmian. 7. Uruchomić program Dynamic Signal Analyzer (sim).vi. 8. W pasku adresu okna przeglądarki internetowej wprowadzić URL: http://komputer_zdalny/dynamic Signal Analyzer (sim).htm gdzie komputer_zdalny oznacza adres IP lub nazwę NetBIOS sąsiedniego komputera (ćwiczenie można również wykonywać w oparciu o adres IP lub nazwę własnej stacji roboczej). Jeżeli wpisaniu URL nie będzie towarzyszyło wyświetlenie panelu programu, zasięgnąć informacji prowadzącego o sposobie ochrony stacji roboczych. Może istnieć konieczność wyłączenia zapory sieciowej (firewall) lub zmiany jej konfiguracji (otwarty port 80). 9. Z menu kontekstowego panelu programu wyświetlanego w oknie przeglądarki wybrać polecenie (Remote Panel Client) Request Control of VI. Zostanie wyświetlony komunikat Control Granted. 10. Wprowadzać różne ustawienia kontrolek, tak jak przy normalnej pracy z programem. Programowanie w języku G strona 11
12 11. W oknie przeglądarki wybrać przycisk STOP programu. Uruchomić ponownie program. Zwrócić uwagę, że użytkownik posiada pełną kontrolę nad funkcjonowaniem aplikacji. 12. Za pomocą polecenia kontekstowego przekazać kontrolę serwerowi aplikacji (Regain Control). 13. Zamknąć okno przeglądarki internetowej. 14. Zatrzymać działanie programu Dynamic Signal Analyzer (sim).vi. 15. Usunąć plik HTML, który został utworzony w czasie publikacji programu (np.: C:\Program Files\National Instruments\LabVIEW 7.1\www \Dynamic Signal Analyzer (sim).htm). 15. Zatrzymać funkcjonowanie serwera WWW za pomocą menu Tools /Options /Web Server: Configuration, przez wyczyszczenie pola opcji Enable Web Server. Wybrać przycisk OK, aby zamknąć okno dialogowe Options. 16. Przywrócić ustawienia sieciowe (firewall), jeśli były modyfikowane. 17. Zamknąć wszystkie okna środowiska LabVIEW. Opracowane na podstawie: LabVIEW 7 Express Basics Interactive Training CD. National Instruments 2003. LabVIEW Basics I. Introduction Course Manual. National Instruments 2002. Programowanie w języku G strona 12