Opravy chyb
Přístroj httpd mohl za běhu spotřebovávat
systémové zdroje (handle objektů typu Event) a vyžadovat tak po
určité době restart serveru.
V přístrojích alarm_viewer a
data_viewer odstraněn pád po stisknutí tlačítka
Zrušit v dialogovém okně pro zadání rozsahu
tisku.
V přístroji alarm_viewer odstraněn
pád při zapínaní/vypínaní stromu datových elementů,
v situaci kdy nebyl viditelný řádek nástrojů.
V přístroji data_viewer odstraněn pád
při tisku z historického režimu v módu table.
V přístroji data_viewer odstraněn pád
při přepínání z módu table do módu chart
(pokud je po startu aplikace přístroj v módu table).
Přístroj draw v runtime verzi
neumožnil změnu kurzoru myši a výběr objektů.
Odstraněn problém inspektora objektu přístroje
draw — přidané barvě přechodu se nedal
ihned nastavit seznam alternativních barev.
V IDE odstraněna chyba, kdy při přetažení přístroje
z palety přístrojů nebo ze stromu přístrojů do stromu
přístrojů Control Web hlásil chybu a nedovolil přístroj
vložit.
V IDE odstraněna chyba, kdy vložení přístroje do
přístroje selector (přímo do něj, nikoli do jeho
větví) způsobilo pád systému.
Odstraněna chyba, která při instalaci ovladače
s pirátskou licencí způsobila pád systému.
Odstraněny chyby překladu po chybě v přístroji;
chyby se projevovaly různým způsobem (nadbytečná a matoucí
chybová hlášení, pád, ...).
Odstraněno několik chyb souvisejících se systémovou
zálohou. Chyby se projevovaly jednak pády při vytváření záloh,
jednak chybným obnovováním hodnot a jednak nesouvislým
zálohováním.
Odstraněna chyba časování, která mohla způsobit
u absolutně časových přístrojů aktivace zcela mimo pořadí a
která mohla po delším běhu takto dotčené aplikace způsobit vznik
trvalého skluzu.
Opravena chyba datově řízených aplikací, kdy změna
hodnoty výrazových elementů nezpůsobovala aktivaci závislých
přístrojů.
Opravena chyba přístrojů pid_regulator,
boolean_regulator a
step_regulator, kdy při určitém nastavení jejich
parametrů mohlo dojít při přechodu do grafického editoru
k pádu systému.
Opraveno několik chyb vzdáleného přístupu; chyby se
projevovaly jednak při přenosu řetezcových datových elementů a
polí, jednak při opakovaném navazování spojení (kdy se Control Web
buď nepřipojil, nebo se připojil po době delší, než očekávané) a
jednak při přenosu databázových dat (zde se při ukončení či
rozpojení spojení mohl objevit pád).
Opravena chyba synchronizace sekcí se scope = synchronized_shared_remotely,
která v určitých konfiguracích způsobila, že se
synchronizované servery navzájem nenašly.
Přístroj multi_switch se v módu
menu občas nedostatečně překresloval.
Přístroj multi_label se po přechodu
s notace, kdy pozice obsahovala informace jen o poloze
levého horního rohu, nastavil na nepříliš vhodnou velikost.
Správnou velikost bylo poté nutno nastavit ručně. Nyní je
velikost automaticky nastavena na největší rozměr textu nebo
podle největší použité ikony.
Přístroj switch svým vzhledem neukazoval,
kdy je selektován. Nyní je správně kreslen navíc selektovací
rámeček.
U dialogového okna pro změnu hesla se již zobrazují
správné popisky u editačních řádků (a nikoliv chybně
třikrát "Staré heslo").
Relativně zadané pozice světelných zdrojů ve 3D scéně
(přístroj gl_scene) nereagovaly na změny
velikosti souřadného systému scény.
Úpravy chování
V nativní proceduře OpenRecordset
přístroje sql byl zrušen parametr Async,
který povoloval asynchronní vykonání SQL příkazu, příkazy tato
procedura vykonává synchronně. Přístroj má novou nativní
proceduru OpenRecordsetAsync, která vykoná SQL
příkaz asynchronně.
Příkaz pause procedur byl pro čekání kratší
než 15 milisekund významně zpřesněn, takže tento příkaz lze nyní
použít s plným rozlišením.
Atribut timer datových sekcí a elementů lze
nyní definovat pouze pro datové sekce.
HTTP server httpd vrací prohlížeči stránku
(pokud existuje) i po požadavku POST, nikoliv pouze po
GET.
Přístroj httpd pracoval s IP adresou
v tzv. síťovém tvaru (big-endian). Nyní je IP
adresa vždy převedena do tvaru používaného na lokálním počítači
(little-endian v případě PC s procesory
x86).
Pokud datové sekce ukládají data do databází
s využitím Microsoft JET Engine (Access/MDB/MDW), je
standardně po startu aplikace provedena komprimace databáze.
Toto chování lze ovlivnit nastavením parametru compact_mdb_on_start
v sekci settings nebo v záložce
Datové inspektory/Nastavení aplikace/Databáze,
parametr Komprimovat MDB databázi před startem
aplikace.
Rozšíření
do datových sekcí přibyly nové událostní procedury OnStartup,
OnTerminate a OnActivate.
Přístroj sql byl rozšířeno
o několik nových OCL procedur:
ExecCommandAsync Asynchronně vykoná
předdefinovaný SQL CommandId.
ExecuteAsync Asynchronně vykoná SQL
příkaz.
GetData Nové varinaty procedury umožňují
číst hodnoty přímo do pole řetězců.
GetDataType a GetDataTypeName
Umožňují zjistit název datového typu sloupce.
SetData nové varianty procedury umožňují
zapisovat hodnoty z pole řetězců.
Přístroj active_x je schopen volat
i metody Active X komponent, které jako parametry
vyžadují předání obecné (netypové) struktury VARIANT. Díky tomu
je možné použít např. komponentu WWW prohlížeče Internet
Explorer a pomocí metody Navigate2 jí zadávat
požadovanou URL apod.
Legenda přístroje data_viewer byla
doplněna o tlačítka pro zapínání a vypínání viditelnosti
jednotlivých průběhů za běhu aplikace a o posouvací
lišty.
Do přístroje data_viewer byla přidána
možnost uživatelského pojmenování sloupců datových elementů v
módu tabulky. Jako jméno sloupce je použit obsah parametru
description v definici skupiny datových elementů data_group.
Není-li zadán, je použit parametr comment v
definici datového elementu v sekci. Není-li zadán ani ten, je
v záhlaví sloupce uvedeno jméno datového elementu.
Do přístrojů alarm_viewer a
data_viewer byla doplněny parametry date_mask
a time_mask pro masku datových a časových informací
( v popisu časové osy, v informačním okně časového
kurzoru, datum a čas alarmů).
V přístroji alarm_viewer byl doplněn
atribut history parametru content umožňující
zapnutí historického módu při startu aplikace.
Přístroje data_viewer a
gl_data_viewer bylz rozšířeny o několik
nových OCL procedur:
GetXAxisStart() : real — metoda
vrátí Juliánské datum počátku časové osy.
GetXAxisEnd() : real — metoda
vrátí Juliánské datum konce časové osy.
GetXAxisRange( var JDStart, JDEnd : real ) — v proměnných
JDStart a JDEnd vrátí Juliánské
datum počátku a konce časové osy.
GetFirstJD( var JulianDate : real ) : boolean — v proměnné
JulianDate vrátí Juliánské datum odpovídající
prvnímu platnému záznamu v aktuálním rozsahu časové
osy, případně v prvním řádku tabulky (v módu
viewer_mode = table přístroje
data_viewer). Funkce vrátí true
pokud pronměnná JulianDate obsahuje platné
datum (v tabulce nebo v grafu je zobrazen alespoň
jeden platný záznam).
GetLastJD( var JulianDate : real ) : boolean — v proměnné
JulianDate vrátí Juliánské datum odpovídající
poslednímu platnému záznamu v aktuálním rozsahu časové
osy, případně v posledním řádku tabulky (v módu
viewer_mode = table přístroje
data_viewer). Funkce vrátí true
pokud pronměnná JulianDate obsahuje platné
datum (v tabulce nebo v grafu je zobrazen alespoň
jeden platný záznam).
Přibyly nové systémové nativní procedury system.ExecuteProgram
a files.GetTemporaryFilePath. Podrobný popis je
v dokumentaci k produktu.
Rozšíření přístroje httpd
Virtuální přístroj httpd byl velmi
významně rozšířen. Přibyla řada nových parametrů i OCL
procedur, které umožňují nasazení systému Control Web
v roli podnikových WWW serverů. Všechny změny jsou
detailně popsány v dokumentaci k přístroje
httpd, zde uveďme jen přehled
novinek.
Bylo změněno chování přístroje v případě
obdržení HTTP požadavku POST. I po POST lze vracet data
klientovi obdobně jako po požadavku GET s daty
v URL (podrobně je chování po POST popsáno
v dokumentaci přístroje).
Implementace protokolu HTTP byla rozšířena
o možnost zasílat serveru soubory prostřednictvím
požadavku POST dle RFC 1867 (Form-based File Upload in
HTML).
Přístroj httpd nyní kompletně
spolupracuje s lokální vyrovnávací pamětí klientů a
prostřednictvím hlaviček Last-Modified
and If-Modified-Since redukuje síťový
provoz (vrací odpověď 304 Not Modified,
pokud má klient aktuální data).
Byla zpřísněna syntaktická kontrola při překladu
přístroje. Pokud byly v přístroji zadány stejné
identifikátory vyhledávané v HTML stránce, jejich
náhrada způsobí nesprávnou funkci. Nově jsou detekovány
i výskyty podřetězců a není nadále možno zadat dva
různé řetězce, z nichž ale jeden je podřetězec
druhého.
Nové parametry přístroje:
Nové nativní procedury:
PutFile umožní vložit do
generovaného textu obsah souboru.
RedirectToFile umožní přerušit
dynamické generování dokumentu a odeslání souboru (např.
obrázku) jako dokumentu.
SetStatusCode umožní měnit stavový
kód odpovědi HTTP. Umožní tak realizovat např.
přesměrování apod.
SetContentType umožní přímo měnit
typ vracených dat.
SetLastModified umožňuje nastavovat
datum u dynamicky tvořených dokumentů.
GetURLData zpřístupňuje původní
řetězec dat předaný z formuláře prostřednictvím
požadavku GET.
DateToString a StringToDate
převádí datum a čas do a z textové podoby užívané
v HTTP protokolu.
IPAddressToString a StringToIPAddress
převádí číselnou podobu IP adresy (typu longcard) na
textovou podobu (čtveřici čísel oddělených
tečkami).
DecodeURL mění řetězec zakódovaný do
podoby přenášené v URL požadavku do nezakódované
podoby.
StripTags odstraní z řetězce
HTML značky.
Nové událostní procedury
Rozšíření 3D vykreslovacího systému
Ve 3D vykreslovacím systému byly některé existující
mechanismy optimalizovány pro dosažení vyššího výkonu a
některé nové vlastnosti byly přidány.
Optimalizace načítání modelů ve formátu
*.OBJ - sobory s 3D modely v tomto textovém
formátu jsou často docela veliké. Navíc je nutno je načítat
dvouprůchodově. V tomto servisním balíčku bylo pomocí
hluboké optimalizace pamětově mapovaných proudů dat dosaženo
téměř desetinásobného zrychlení načítání těchto modelů. Nyní
již v řadě případů zabere více času inicializační
preprocessing dat než samotné načítání datových souborů.
A toto předzpracování dat již asi znatelně urychlit
nelze. U vizualizací s OBJ modely nyní zaznamenáme
výrazně rychlejší start aplikačního programu.
Načítání 3D modelů ve formátu *.3DS - systém
byl rozšířen o načítání modelů ve velmi populárním a
rozšířeném formátu 3DS. Ze souborů jsou získávána vektorová
data a materiály povrchů, ostatní informace o scéně
(jako jsou např. vlastnosti světel a kamer) se neuplatňují -
jsou dodány scénou, do které je takto dovezený model
zařazen. Načítání je rovněž optimalizováno na vysokou
rychlost. 3DStudio má jinou orientaci os prostoru než je
tomu u nás. Prostor modelu je patřičnými transformacemi
při načítání automaticky konvertován do našeho souřadnéhu
systému.
Bitmapové soubory *.CEL a *.PIC jako textury
- možnosti načítání obrazových souborů jako textur jsou
rozšířeny o tyto dva nové formáty.
Možnost volby metody přenosu vektorových dat
z CPU do GPU - pomocí nového parametru geometry_transfer_method
můžeme definovat způsob přenosu geometrických dat do
grafického procesoru. Tento parametr může nabývat jedné ze čtyř
možností:
automatic - implicitní nastavení.
Podle schopností grafické karty je automaticky vybráno
z obvykle nejvýkonějších mezi client_arrays
a server_arrays.
immediate - paměťově nejúspornější a
obvykle nejpomalejší metoda (geometrie se přenáší po
jednotlivývh vertexech pomocí volání funkcí API).
Nicméně proti tomuto pravidlu existuje řada výjimek -
v případě rychlého CPU a relativně pomalé grafické
karty (platí pro veškerou grafiku na sdílené sběrnici a
karty s 64 bitovou sběrnicí), může být výkon
dokonce lepší než u ostatních metod (při
přetrvávající výhodě menší spotřeby paměti).
client_arrays - geometrické data se
do grafického ovladače přenáší po blocích, které jsou
umístěny v pamětovém prostoru aplikace. Výraznější
zrychlení přináší především u rychlých grafických
karet.
server_arrays - u moderních
karet, které mají schopnost pracovat s bloky
vektorových dat umístěnými přímo v rychlé paměti na
grafické kartě (VBO - Vertex Buffer Objects), přináší
tato metoda dramatické (cca tří až pětinásobné)
zrychlení vykreslování. To může být pro některé aplikace
zásadním přínosem.
Nový příznak flares_disabled ve
vlastnostech světelného zdroje - tento parametr
umožňuje zakázat čočkové efekty pro zvolený světelný
zdroj. 
Dva zdroje světla ve scéně, oheň vytváří měkký
prostorový stín, ale nikoliv čočkové efekty jako světlo
v lampě
Nová nativní procedura 3D přístrojů SetLightAbsPosition( LightOrder, X, Y, Z, W : real )
- umožňuje nastavit pozici zdroje světla v absolutních
souřadnicích prostoru scény (a nikoliv v relativních
jednotkách, jejichž absolutní velikost je dána velikostí
prostoru scény).
Nové nativní procedury 3D přístrojů - vrací
data daná obsahem sekce location - na vracených
datech se neuplatňují případné další transformace dané
aktivitou evaluátorů nebo transformačních nativních
procedur.
GetLocationTranslate( var X, Y, Z, : real )
- vrací posun vůči počátku souřadného systému
scény
GetLocationRotate( var Angle, AxisX, AxisY, AxisZ : real )
- vrací natočení vůči orientaci souřadného systému
scény
GetLocationScale( var X, Y, Z : real )
- vrací poměr meřítka prostoru virtuálního přístroje
vůči měřítku souřadného systému scény
Pro 3D scénu (přístroj gl_scene) je
možno definovat tzv. skybox - skybox je tvořen šesti
texturami ve všech směrech uzavírajícími náš výhled do
volného prostroru. 
Výhled do volného prostoru je definován
texturami skyboxu Jednotlivé textury zadáváme podle jejich
umístění v kladném či záporném směru jednotlivých os
souřadného systémy scény. Sekce s definicí skyboxu může
vypadat např. takto: skybox
texture_filter = linear;
negative_z = 'mountains_negz.jpg';
positive_z = 'mountains_posz.jpg';
negative_x = 'mountains_negx.jpg';
positive_x = 'mountains_posx.jpg';
negative_y = 'mountains_negy.jpg';
positive_y = 'mountains_posy.jpg';
end_skybox;
Sekce skybox může obsahovat tuto
parametry:
box_mapping - způsob kladení textur
na horní a dolní stěny krychle. Na přední, zadní a obě
boční stěny krychle jsou textury vždy mapovány tak, aby
byly správně orientovány při pohledu zevnitř krychle
skyboxu. Orientaci horní a dolni textury si můžeme
zvolit ze tří možností
top_bottom_rotated_180 - horní a
dolní textura jsou správně natočeny, podíváme-li se
nahoru a dolů z pohledu v kladném směry
osy Z (tedy jakoby směrem
zevnitř ven z obrazovky). Tato konvence je asi
používána nejčastěji (takto je orientován skybox
např. ve většině ukázek od firmy nVidia).
top_bottom_rotated_0 - horní a
dolní textura jsou správně natočeny, podíváme-li se
nahoru a dolů z pohledu v záporném směry
osy Z (směrem dozadu dovnitř
do obrazovky).
top_bottom_rotated_plusminus_180
- horní a dolní textura jsou proti sobě otočeny
o 180 stupňů.
texture_filter - způsob filtrace
textury můžeme volit ze dvou možností:
nearest - textura je vykreslena
ostře a zobrazuje se až do okrajů
linear - textura je spojitě
lineárně vyhlazena. Při této filtraci se na starších
verzích OpenGL než 1.2 nemusí nezobrazovat úzké
okraje (šířku definuje parametr filter_edge),
které bývají lineární filtrací obvykle poškozeny.
U novějších verzí OpenGL jsou textury
zobrazovány správně až do okrajů.
filter_edge - ořez okrajů textur při
použití lineární filtrace. Nastavovat tento parametr
má smysl jen tehdy, máme-li starší verzi OpenGL než je
verze 1.2. Od této verze již systém dokáže
bezchybně lineálně filtrovat textury až k jejich
okrajům a dotek dvou textur je pak zcela neviditelný.
Implicitní hodnota je 0.0 - u starých verzí OpenGL
může být prospěšné nastavit tuto tento parametr na
hodnoty připližně 0.0015 pro textury velké 512 bodů. Pro
větší textury může být nastaveno méně, pro menší bude
občas nutno tento parametr i zvětšit.
negative_z - textura pro pohled
ve směru záporné osy Z.
positive_z - textura pro pohled
ve směru kladné osy Z.
negative_x - textura pro pohled ve
směru záporné osy X.
positive_x - textura pro pohled ve
směru kladné osy X.
negative_y - textura pro pohled ve
směru záporné osy Y.
positive_y - textura pro pohled ve
směru kladné osy Y.
|