Autor Wątek: Aplikacja DomowyKokpit  (Przeczytany 62030 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #75 dnia: Stycznia 16, 2010, 21:09:45 »
Gratuluję codeking,moduł przechwytuje dane z Falcona oraz je wyświetla na fizycznym LCD.Teraz mogę dokładniej testować ten moduł.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #76 dnia: Stycznia 19, 2010, 09:41:03 »
Witam

Od paru dni testuje moduł LCD na fizycznych wyświetlaczach. Dobra wiadomość dla posiadających nowsze komputery bez portu LPT. Przetestowałem przejściówkę PCI -> LPT i działa. Musiałem w pliku konfiguracyjnym zmienić tylko numer portu / dzięki pomocy codekinga / i zadziałało. Codeking pracuje już nad wprowadzeniem w aplikacji DK możliwości zmiany numeru portu z poziomu programu.
Cały czas testuje co można wyświetlić z FS-a na wyświetlaczu. Częstotliwości radia - ok.- "pożyczyłem" ze skryptu FS Multiradio kawałek i jest dobrze. Teraz sprawdzam wartości autopilota. W związku z tym, że wartości jakie podaje FS trzeba trochę modyfikować aby były prawidłowo wyświetlane trochę to trwa. ALT i HDG już działa dalej pracuje nad tym. / z dużą pomocą codekinga - wielkie dzięki /. Robocze skrypty są na moim ftp-e ftp://zajac.homeftp.net w katalogu skrypty.

pozdrawiam Zając
Zapraszam na stronę projektu www.simproject.zajac.waw.pl

Odp: Aplikacja DomowyKokpit
« Odpowiedź #77 dnia: Stycznia 23, 2010, 19:33:08 »
Witam ponownie.Jestem po nieudanych próbach z USBLcd z OC.Nie potrafię uruchomić tej karty,podejrzewam program w uP.
Wracam do testów DK pod kątem LCD.Po analizie oraz konsultacjach z Gerrach doszedłem do wniosku,że jest możliwa realizacja PFL na wyświetlaczu 4x16 lub 4x20 jako alternatywa dla rozwiązania z LCD graficznym.Informacja na PFL jest wyświetlana po naciśnięciu przycisku w kokpicie F-ACK.Jeśli jest awaria to można odczytać informację na tym wyświetlaczu naciskając kolejno wspomniany przycisk.Oprócz tego wyświetlacza są wyświetlane informacje o alarmach na LED.Reasumując można stwierdzić,że informacja na wskaźniku LCD jest informacją uzupełniającą w stosunku do LED,dlatego można zrobić pewne uproszczenia.Nie można tego zrobić z wyświetlaczem DED.
Teraz prośba do codeking.
Dopisałem 2 instrukcje do skryptu DED-LCD.
variable $a1 { module = "LCDOnLPT"; id = "a1"; type = string; direct = out; }
$a1=GetValue($PFLLines , 0 );
Mogę w ten sposób wyświetlać na fizycznym LCD informację zerowej linii komunikatu.
Z tego co widzę na wyświetlaczu to na początku informacji jest kilka spacji.Chciałbym przeformatować linie tekstu wyrzucając spacje i centrując tekst dla każdej linii osobno.
Docelowo chciałbym zastosować 4x16 lub 4x20 LCD.Teraz mogę wykonywać testy na 2x16.
Mogę robić testy wpisując do skryptu kolejne linie i odczytując na LCD ich treść.W ten sposób mogę określić nadmiar spacji oraz ustawienie centrowania.
Teraz konkretne pytanie do codeking.Jakimi instrukcjami mogę zmienić treść wyświetlanej linii.
U mnie zmienna a1 obejmuje 32 znaki ułożone w 2 liniach po 16.Czy mogę prosić o przykład takiego skryptu dla mojego przypadku.Jeśli coś pomieszałem proszę o pytania co autor miał na myśli.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #78 dnia: Stycznia 23, 2010, 22:21:30 »
Na chwilę obecną nie ma dostępnej funkcji do usuwania znaków białych itp. (w tym spacji). Dodam je w nowej wersji DK. Co do wyświetlacza. Lepiej jest robić jeden obszar dla jednego parametru, w Twoim przypadku jeden obszar na jeden wiersz wyświetlacza. Obszar wyświetlacza ma dodatkowe opcje:
 - wyrównanie - jeśli napis jest krótszy niż długość obszaru to zostanie on wyrównany do lewej, środka lub do prawej strony obszaru
 - przycięcie - jeśli napis jest dłuższy niż długość obszaru to zostanie on obcięty z lewej lub prawej strony
 - dołączenie - jeśli napis jest krótszy to podany tekst (minimum jeden znak) zostanie dołączony do tekstu z lewej lub prawej strony, dołączenie można wyłączyć

Jeśli w pobieranym tekście z DED zawsze na początku w danym wierszu masz spacje, to możesz ten tekst skrócić funkcją Substring:

Cytuj
  • Substring($string, $start, $dlugosc)
    – metoda zwraca wycinek łańcucha tekstowa przekazanego do funkcji, zmienna $start określa pozycję w łańcuch od której rozpocznie się kopiowanie (indeks od 0), zmienna $dlugosc określa ile liter ma być skopiowanych, użycie wartości wykraczających poza przekazany łańcuch tekstowy spowoduje błąd skryptu i przerwanie wykonywania skryptu


Przykład użycia:
        $zmienna = "DomowyKokpit" ;
        $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
        Log( "$zmienna = " + $zmienna );
        Log( "$nowaZmienna = " + $nowaZmienna );
Wynik:
Skrypt: $zmienna = DomowyKokpit
Skrypt: $nowaZmienna = owyKokpit

Odp: Aplikacja DomowyKokpit
« Odpowiedź #79 dnia: Stycznia 24, 2010, 16:37:40 »
Wykonałem kilka testów z KD oraz LCD z Falconem.Pojawiły się jak zwykle pytania.Na początek powtórzę to co już napisałem wcześniej.Nie ma sensu stosować LCD znakowego do DED.Potrzeba dużej liczby kolumn w LCD co najmniej 26,tyle policzyłem.Inna jest sytuacja z PFL.W tym przypadku można śmiało zastosować prawdopodobnie 3x16 LCD.Po tym wstępie opiszę wykonane testy.
Zrobiłem tak jak radził codeking tzn.zdefiniowałem obszary znakowe.Każda linia komunikatu ma swój wiersz,u mnie 16 znaków.W edycji obszaru znakowego mamy domyślnie ustawione :wyrównanie do lewej,przycięcie do lewej oraz dołączenie puste.
Po zdefiniowaniu nowych obszarów otrzymałem komunikaty,które są już do przyjęcia.Widać to na zdjęciu.Dołączyłem skrypt,który to realizuje.
Mogę sprawdzić informację w module wyjściowym TestModule.Wynika z tego,że tekst został obcięty z lewej strony o 9 pozycji dla zerowej linii oraz o 9 dla linii2.Linia1 jest pusta.
Próbowałem sprawdzić funkcję dołącz do tekstu z lewej strony np.spację,ale to nie działa.
Wymusiłem inny alarm na PFL  i tutaj przyciął drugą linię za bardzo.Tekst powinien wyglądać następująco:SMS STA3 DEGR .Przycięcie widać na zdjęciu.






Cytuj
script "PFL - LCD-_2linie"
{
      variable $L0 { module = "LCDOnLPT"; id = "L0"; type = string; direct = out; }
      variable $L1 { module = "LCDOnLPT"; id = "L1"; type = string; direct = out; }
   // PFL, tablica 5 wierszy wartości typu string
      variable $PFLLines
   {
      module = "FalconData";
      id = "PFLLines";
      type = string_array;
      direct = in;
   }

   // zdarzenie zmiany wartości PFL czyli zawartości wyświetlacza PFL w Falcon
      variable_changed $PFLLines
   {
   // przypisanie odpowiednich wartości
   // funkcja GetValue(<tablica>, <indeks>) służy do pobierania wartości z tablicy
      
      $L0=GetValue($PFLLines , 0 );
      $L1=GetValue($PFLLines , 2 );
   }
}
W tym momencie zabrałem się za czytanie strony codeking Operatory i funkcje wbudowane.Jest tam def.Substring($string,$start,$długość).W przykładzie jest trochę bardziej rozbudowane $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
Próbowałem to zastosować do mojego skryptu,ale mam problemy

Cytuj
script "PFL - LCD-2linie-Moduł-5linii"
{
   // linie tekstu z modułu testowego (należy podmienić na zmienne z modułu LCDOnLPT)
      variable $out_string_00 { module = "TestModule"; id = "out:string_00"; type = string; direct = out; }
      variable $out_string_01 { module = "TestModule"; id = "out:string_01"; type = string; direct = out; }
      variable $out_string_02 { module = "TestModule"; id = "out:string_02"; type = string; direct = out; }
      variable $out_string_03 { module = "TestModule"; id = "out:string_03"; type = string; direct = out; }
      variable $out_string_04 { module = "TestModule"; id = "out:string_04"; type = string; direct = out; }
      //variable $a1 { module = "LCDOnLPT"; id = "a1"; type = string; direct = out; }
      variable $L0 { module = "LCDOnLPT"; id = "L0"; type = string; direct = out; }
      variable $L1 { module = "LCDOnLPT"; id = "L1"; type = string; direct = out; }
   // PFL, tablica 5 wierszy wartości typu string
      variable $PFLLines
   {
      module = "FalconData";
      id = "PFLLines";
      type = string_array;
      direct = in;
   }

   // zdarzenie zmiany wartości PFL czyli zawartości wyświetlacza PFL w Falcon
      variable_changed $PFLLines
   {
   // przypisanie odpowiednich wartości
   // funkcja GetValue(<tablica>, <indeks>) służy do pobierania wartości z tablicy
      $out_string_00 = GetValue($PFLLines , 0 );
      $out_string_01 = GetValue($PFLLines , 1 );
      $out_string_02 = GetValue($PFLLines  , 2 );
      $out_string_03 = GetValue($PFLLines  , 3 );
      $out_string_04 = GetValue($PFLLines  , 4 );
      $L0=GetValue($PFLLines , 0 );
      $L1=GetValue($PFLLines , 2 );
      //$a1=GetValue($PFLLines , 0 );
   }
}
Zmienna a1 ma obszar znakowy 2x16,zmienne L0 oraz L1 16 znaków w wierszu 0 oraz 1.Nie potrafię dla tego przykładu zastosować funkcję Substring().Codeking w Tobie nadzieja,trochę wstyd się przyznać do porażki.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #80 dnia: Stycznia 24, 2010, 18:17:39 »
Próbowałem sprawdzić funkcję dołącz do tekstu z lewej strony np.spację,ale to nie działa.
Jeśli było ustawione na przycięcie z lewej strony to dołączenie nie miało sensu. Linia miała więcej niż 16 znaków więc obcięty został on do 16 z lewej strony. Czyli np. "12345678901234567890" zostałby obcięty i w wyniku wygląda tak: "5678901234567890". 4 znaki z lewej zostały usunięte.

W przykładzie jest trochę bardziej rozbudowane $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
Ten przykład robi prostą rzecz, ucina 3 pierwsze znaki i zwraca pozostałe do zmiennej $nowaZmienna. Dodałem funkcję GetLength(...), która zwraca długość tekstu, aby nie trzeba było wpisywać ilości znaków zwracanych. W tym przykładzie zawsze usunie 3 pierwsze znaki i zawsze zwróci pozostałe. Jeśli wiemy, że nasz tekst będzie miał zawsze 25 znaków to można to zapisać na stałe:
$nowaZmienna = Substring( $zmienna , 3 , 22 );

Próbowałem to zastosować do mojego skryptu,ale mam problemy
Zmienna a1 ma obszar znakowy 2x16,zmienne L0 oraz L1 16 znaków w wierszu 0 oraz 1.Nie potrafię dla tego przykładu zastosować funkcję Substring().
Napisz dokładnie co chcesz uzyskać.

Póki nie ma wbudowanej funkcji Trim, napisałem te funkcje przy pomocy dostępnych funkcji wbudowanych w wersji 1.0.2.6. Wklej poniższy kod do skryptu. Funkcja FunkcjaTrimBegin(...) usuwa spacje z początku przekazanego tekstu (zmiennej), a funkcja FunkcjaTrimEnd - z końca.

    variable $tmpFunkcjaTrim { type = int; }
   
    function FunkcjaTrimBegin( $tekst )
    {
        $tmpFunkcjaTrim = GetLength( $tekst ) ;
        if ( $tmpFunkcjaTrim > 0 )
        {
            if ( Substring( $tekst , 0 , 1 ) == " " )
            {
                if ( $tmpFunkcjaTrim > 1 )
                {
                    return FunkcjaTrimBegin( Substring( $tekst , 1 , $tmpFunkcjaTrim - 1 ) ) ;
                }
                else
                {
                    return "" ;
                }
            }
        }
        return $tekst ;
    }
   
    function FunkcjaTrimEnd( $tekst )
    {
        $tmpFunkcjaTrim = GetLength( $tekst ) ;
        if ( $tmpFunkcjaTrim > 0 )
        {
            if ( Substring( $tekst , $tmpFunkcjaTrim - 1 , 1 ) == " " )
            {
                if ( $tmpFunkcjaTrim > 1 )
                {
                    return FunkcjaTrimEnd( Substring( $tekst , 0 , $tmpFunkcjaTrim - 1 ) ) ;
                }
                else
                {
                    return "" ;
                }
            }
        }
        return $tekst ;
    }

Odp: Aplikacja DomowyKokpit
« Odpowiedź #81 dnia: Stycznia 24, 2010, 22:14:57 »
Dzięki za wyjaśnienia,muszę to ze spokojem przetrawić.Nie byłoby problemu gdyby mieć wyświetlacz z 25 kolumnami.Ja mam tylko 16.W praktyce treść do wyświetlenia nie przekracza 16 znaków i można to wyświetlić w wierszu o 16 znakach.Problem polega na tym,że definiując obszar znakowy mamy zawsze opcję przycięcie z lewej lub prawej strony.Czyli zanim zmodyfikowana linia trafi do wyświetlacza to trzeba ją tak przerobić aby nie było obcięcia treści tylko spacje.Poprosiłem codeking na pw o pomoc.Jeśli testy wyjdą pozytywnie to opiszę to w tym wątku.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #82 dnia: Stycznia 25, 2010, 07:43:47 »
Zrobiłem kolejne testy i jest postęp.Potrafię przycinać tekst z lewej strony przed wysłaniem go do wyświetlacza.Zrobiłem to wg.zaleceń codeking przykład:
$nowaZmienna = Substring( $zmienna , 3 , 22 );
Ponieważ mam problemy z funkcją  GetLength( $zmienna ) to zwracam długość obciętego tekstu (w przykładzie 22) ręcznie.
Jeszcze jedna uwaga dotycząca wyświetlacza LCD.Staram się zastosować najmniejszy LCD ze względu na kokpit (zbliżone wymiary do reala ).Myślę,że 4x16 będzie optymalny.W związku z czym te zabiegi związane z formatowaniem tekstu.
Aby uzyskać obcinanie tekstu z lewej strony wprowadziłem dodatkowe instrukcje do skryptu przedstawionego w poprzednich post:

variable $out_string_05 { module = "TestModule"; id = "out:string_05"; type = string; direct = out; }
$L1=Substring($L1,4,21);
$out_string_05=GetValue($PFLLines  , 2 );
$out_string_05=Substring($out_string_05,4,21);
Zmienna $out_string_05 jest potrzebna do obserwacji treści komunikatu w module wyjściowym TestModule (jest to bardzo przydatny moduł).
Teraz muszę opanować obcinanie z prawej strony za pomocą funkcji TrimEnd.W tym momencie prośba do codeking o pomoc,najlepiej przykład do mojego skryptu np.obcięcie 4 spacji z prawej strony dla zmiennej $L1
pozdrawiam,vito_zm

Odp: Aplikacja DomowyKokpit
« Odpowiedź #83 dnia: Stycznia 25, 2010, 09:38:52 »
Ponieważ mam problemy z funkcją  GetLength( $zmienna ) to zwracam długość obciętego tekstu (w przykładzie 22) ręcznie.
Jaki problem ?

Teraz muszę opanować obcinanie z prawej strony za pomocą funkcji TrimEnd.W tym momencie prośba do codeking o pomoc,najlepiej przykład do mojego skryptu np.obcięcie 4 spacji z prawej strony dla zmiennej $L1
Funkcje pokazane wcześniej (FunkcjaTrimBegin i FunkcjaTrimEnd) usuwają wszystkie spacje z lewej (Begin) i z prawej (End) strony tekstu. Nie można do niej przekazać ilości spacji, które ma usunąć. Problemem późniejszym może być to, że tekst wynikowy będzie miał np. 10 znaków, na wyświetlacz wysyłane są tylko te znaki, które się zmieniły (porównanie tego co jest na wyświetlaczu z tekstem). Dlatego trzeba ustawić w opcjach obszaru dołączanie spacji (z lewej jeśli chcemy wyrównać tekst do prawej, lub z prawej jeśli chcemy wyrównać tekst do lewej). Przykład użycia powyższych funkcji (należy je skopiować do skryptu wraz ze zmienną $tmpFunkcjaTrim):
        $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
        Log( "Oryginal = \"" + GetValue( $PFLLines , 0 ) + "\"" );
        Log( "$L0 = \"" + $L0 + "\"" );
Wynik działania:
Skrypt: Oryginal = "    te   kst    "
Skrypt: $L0 = "te   kst"
Czyli widać dokładnie - funkcje usunęły wszystkie spacje z początku i końca tekstu.

Co do wyświetlania tylko 2 wybranych linii z PFL. Proponuje dodać przełącznik obrotowy i w zależności od pozycji wyświetlać dwie kolejne linie np. 1 i 2, 2 i 3, 3 i 4, 4 i 5. Zamiast przełącznika obrotowego można to zrobić przy pomocy enkodera, ew. tact-switch'y. Realizacja tego jest prosta. Przykład:
    // zmienna pomocnicza
    variable $trybLCDPFL { type = int; }
   
    function ShowPFL()
    {
        if ( $trybLCDPFL == 1 )
        {
            // pokazujemy 1 i 2 linię
            $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ) ;
            $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
        }
        else
        {
            if ( $trybLCDPFL == 2 )
            {
                // pokazujemy 2 i 3 linię
                $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
                $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 3 ) ) ) ;
            }
            else
            {
                if ( $trybLCDPFL == 3 )
                {
                    // pokazujemy 3 i 4 linię
                    $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 3 ) ) ) ;
                    $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 4 ) ) ) ;
                }
                else
                {
                    // pokazujemy 0 i 1 linię
                    $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
                    $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ) ;
                }
            }
        }
    }
   
    // zdarzenie przycisku "Pokaż 0 i 1 linię PFL"
    variable_changed $przycisk1
    {
        if ( $przycisk1 )
        {
            $trybLCDPFL = 0;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 1 i 2 linię PFL"
    variable_changed $przycisk2
    {
        if ( $przycisk2 )
        {
            $trybLCDPFL = 1;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 2 i 3 linię PFL"
    variable_changed $przycisk3
    {
        if ( $przycisk3 )
        {
            $trybLCDPFL = 2;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 3 i 4 linię PFL"
    variable_changed $przycisk4
    {
        if ( $przycisk4 )
        {
            $trybLCDPFL = 3;
            ShowPFL();
        }
    }
   
    // zdarzenie zmiany zawartości PFL
    variable_changed $PFLLines
    {
        ShowPFL();
    }
Aby ten kod zadziałał należy zdefiniować zmienne przycisków ($przycisk1, $przycisk2 itd.), zmienne $PFLLines, $L0 i $L1, oraz skopiować funkcje FunkcjaTrimBegin i FunkcjaTrimEnd z mojego poprzedniego postu. Tekst będzie się zmieniał na wyświetlaczu o jeden wiersz. Można zrobić tak, że będzie się zmieniał co 2 linie, wtedy wystarczy 3 przyciski (pokaż 0 i 1 linie, 2 i 3, 4).

Odp: Aplikacja DomowyKokpit
« Odpowiedź #84 dnia: Stycznia 25, 2010, 13:18:40 »
Dziękuję za wyjaśnienia,pomału chwytam o co chodzi.Zanim rozpocznę testy mam jeszcze pytania.Aby zastosować funkcje  FunkcjaTrimBegin(.....) oraz  FunkcjaTrimEnd (....) np.w tej instrukcji:
$L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
to muszę wpisać do skryptu definicję tych funkcji.
Definicje podałeś w poprzednim post.:
function FunkcjaTrimBegin( $tekst )
function FunkcjaTrimEnd( $tekst )
Rozumiem,że parametrem dla tej funkcji jest $tekst oraz,że funkcja zwraca  $tekst,ale bez spacji.Muszę także wpisać zmienną pomocniczą:
variable $tmpFunkcjaTrim { type = int; }
Teraz trywialne pytanie czy pisząc definicję wspomnianych funkcji piszę dosłownie jako argument ogólnie $tekst a wywołując te funkcje wstawiam konkretną zmienną tekstową np. GetValue( $PFLLines , 1 )?
Zauważyłem także,że można wywoływać funkcję "zagęszczoną" np.
 FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ).
Przepraszam,że pytam o szczegóły,ale dawno nie miałem do czynienia z programowaniem.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #85 dnia: Stycznia 25, 2010, 13:29:24 »
Teraz trywialne pytanie czy pisząc definicję wspomnianych funkcji piszę dosłownie jako argument ogólnie $tekst a wywołując te funkcje wstawiam konkretną zmienną tekstową np. GetValue( $PFLLines , 1 )?
Tak, do funkcji przekazujesz dowolną zmienną typu string lub nawet wprost tekst, np. 'FunkcjaTrimBegin("   proszę usunąć spacje na początku tego tekstu").

Zauważyłem także,że można wywoływać funkcję "zagęszczoną" np.
 FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ).
Można, traci się wtedy czytelność kodu. Można też oczywiście po kolei:
$L0 = GetValue( $PFLLines , 2 ) ;
$L0 = FunkcjaTrimBegin( $L0 ) ;
$L0 = FunkcjaTrimEnd ( $L0 ) ;
Jak kto woli.

Przepraszam,że pytam o szczegóły,ale dawno nie miałem do czynienia z programowaniem.
Nie ma za co przepraszać, po to jest ten wątek :)

Odp: Aplikacja DomowyKokpit
« Odpowiedź #86 dnia: Stycznia 25, 2010, 14:12:50 »
Dzięki za szybką odpowiedź,powoli zaczynam rozumieć o co chodzi.Będę próbował wieczorem wykonać testy,dam znać o wynikach.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #87 dnia: Stycznia 25, 2010, 18:01:45 »
Dobra wiadomość skrypt jest o.k.Zrobiłem modyfikację mojego skryptu dodając dwie nowe funkcje usuwania spacji z lewej oraz prawej strony.Wyświetlam zawsze dwie linie 0 oraz 2,ponieważ na tych liniach jest tylko informacja.Pozostałe są puste.Sprowokowałem 6 różnych typów alarmów i zawsze jest tekst na 0 oraz 2 linii.Jeśli to jest prawdą to wystarczy LCD 2x16.W manuale są opisane alarmy,których treść nie przekracza 16 znaków.
Oprócz wyświetlania informacji na LCD linie są zapisywane w module wyjściowym TestModule.Mogę w ten sposób porównać treść na LCD z treścią zapisaną do modułu.
Istotne funkcje w skrypcie.
Cytuj
      $out_string_00 = GetValue($PFLLines , 0 );
      $out_string_01 = GetValue($PFLLines , 1 );
      $out_string_02 = GetValue($PFLLines  , 2 );
      $out_string_03 = GetValue($PFLLines  , 3 );
      $out_string_04 = GetValue($PFLLines  , 4 );
      // pokazujemy 0 i 1 linię
      $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
      $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
Ponieważ mam na wyświetlaczu dodatkowe 3 znaki,które nie widzę w module wyjściowym to chciałbym zrobić log dla linii 0 (lub dla wszystkich 5 linii).I znowu prośba do codeking.Mogę prosić o instrukcję log dla linii 0 lub dla wszystkich.Chciałbym śledzić co się dzieje na tych liniach.
Jeszcze wyjaśnienie dla nieznających Falcona.W kokpicie jest przycisk F-ACK.Naciskając ten przycisk wyświetlamy na LCD kolejne komunikaty alarmowe,które się pojawiły podczas awarii.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #88 dnia: Stycznia 25, 2010, 19:09:56 »
Ponieważ mam na wyświetlaczu dodatkowe 3 znaki,które nie widzę w module wyjściowym to chciałbym zrobić log dla linii 0 (lub dla wszystkich 5 linii).I znowu prośba do codeking.Mogę prosić o instrukcję log dla linii 0 lub dla wszystkich.Chciałbym śledzić co się dzieje na tych liniach.
Nie wiem dokładnie jakie te znaki dodatkowe widzisz. Jeśli są to pozostałości po starych wiadomościach to musisz ustawić w konfiguracji obszaru na wyświetlaczu opcję Dołączenie (z lewej lub prawej - w zależności od tego do której strony chcesz mieć przyrównany tekst), jako znak dołączany możesz wpisać spację.
Jeśli nie o takie znaki chodzi, to być może dane z PFL zawierają znaki, które w komputerze (DK) są traktowane jako znaki białe (niewidoczne), natomiast wyświetlacz ma je zdefiniowane jako znaki widzialne (można sprawdzić w dokumentacji które to znaki dokładnie są i jakie mają kody).

A logowanie jest proste:
Log( "$L0 = \"" + $L0 + "\"" );
Znaki \" powoduje wpisanie do Log znaku " (cudzysłów), który normalnie jest ogranicznikiem tekstu.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #89 dnia: Stycznia 25, 2010, 19:39:20 »
Dzięki,teraz dokładnie się przyjrzę tej linii.Tak się zastanawiałem co oznacza ten znak\.Teraz się to wyjaśniło.Jeszcze raz dziękuję za pomoc.