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.


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
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.