====== Popis komunikacneho protokolu ====== DokumentaciaTD/VyvojovyUsek/VyvojSW/TransFare/Devices/Panels ====== Update firmware-u ====== Update vykonava binarka UpdateFirmwares v repozitari git@192.168.241.14:/home/git/repositories/vehiclesystemutils.git Popis konfiguracneho suboru pre update firmware-ov: [[dev_doc:configs#fwupdateconfig.xml|FWUpdateConfig]] ====== Zapojenie R&G tabul (pomala 485 rg) ====== +24 na +24V GND na -24V GND(TR) na -24V TR- na KB1 (EMRDi S1) / KB2 (EMRDi S2) TR+ na KA1 (EMRDi S1) / KA2 (EMRDi S2) ====== Poznamky k HWConfig ====== === Position === Pre vsetky zaznamy tabul musi byt unikatne. Nemozu existovat dve tabule s rovnakou poziciou (napr SIDE1 emtest a SIDE1 buse). == Moznosti position: == * FRONT1, FRONT2 (predne tabule) * SIDE1, SIDE2, SIDE3, SIDE4 (bocne tabule) * REAR1, REAR2 (zadne tabule) * INNER1, INNER2 (vnutorne tabule) === ID === Unikatne pre dany typ tabul. Nesmu byt dve emtest tabule s rovnakym ID. Ale moze byt tabula buse s ID=0 a tabula emtest s ID=0. Pre kazdy pouzity typ tabul musi pre spravnu funkcnost existovat aspon jeden zaznam s ID=0 === Specificke atributy pre typy tabul === == RG tabule == Atribut: Protocol Moznosti: ETL, ETLZU Predvolene: ETLZU Vyznam: podla toho aky je protokol sa posielaju rozne prikazy pre tabulu (pre ETL su ine prikazy) == Buse Tabule == Atribut: ResendPeriod Moznosti: Nezaporne cele cislo Predvolene: 50 Vyznam: Pocet sekund kolko ma uplynut pred tym ako budu opat poslane data na tabulu. Dovodom tohto atributu je specifikacia protokolu ibis ktory vravi ze by sa mali data posielat na tabulu periodicky a nie len raz pri zmene Platnost: Od verzie 37.0.0 == Textove Buse Tabule == Atribut: Width Moznosti: Nezaporne cele cislo Predvolene: 0 Vyznam: Pocet pixelov tabule na dlzku (pri tercikovych to bude asi pocet tercikov - neviem ako to odskusat ci to je naozaj tak) Platnost: Od verzie 39.1.0 Atribut: Height Moznosti: Nezaporne cele cislo Predvolene: 0 Vyznam: Pocet pixelov tabule na vysku (pri tercikovych to bude asi pocet tercikov - neviem ako to odskusat ci to je naozaj tak) Platnost: Od verzie 39.1.0 ====== Tabule.xml ====== Indikator ci sa ma zobrazovat na emtest vnutornej tabuli po starom alebo po novom: subor: tabule.xml tag: ==== Konfiguraciu Buse bitmapovych tabul ==== TAG Tento tag musi obsahovat dalsie dva podriadene tagy: **Prichod**, **Odchod** \\ V nich su potom definovane obrazce, ktore sa maju zobrazovat na danu udalost (prichod alebo odchod) === BuseID zastavky === Pri zobrazovani zastavky su podmienkou dobre naeditovane data lebo ako parameter sa posiela BuseID. \\ Ak sa vo vstupnych data nachadza ZastavkyBuse.xml, tak je toto ID vytahovane z neho na zaklade ID(emtest) zastavky, zony na linkeZastavke, zone pre vystup pre danu zastavku a nejakeho atributu. \\ == Zazracny atribut == * 3 - ak je zastavka v poradi paPoradie hranicna * 1 - ak je zastavka v poradi paPoradie prva v pasme * 2 - ak je zastavka v poradi paPoradie posledna v pasme * 4 - ak je zastavka v poradi paPoradie posledna na spoji * 0 - v ostatnych pripadoch == Atribut Num == Hovori, ktory obrazec dany riadok definuje. == Moznosti (hodnota atributu Id) == * LinkaSmer * zobrazi linku a ciel * na zbernicu posiela SendLinkaCislo, SendCielCislo pricom ako parameter ide cislo bitmapy (Linky a Ciele maju osobitne cisleniky teda ciel17 a Linka17 zobrazia nieco insie) * AktualnaZastavka * zobrazi bitmapu pre danu zastavku * na zbernicu posle SendZastavka (buse ID zastavky) * NasledujucaZastavka * na zbernicu SendZastavka (buse ID zastavky) * Cas, CasPasmo * malo by poslat SendPasmoCas, avsak neviem ci to funguje - vraj iba niektora verzia firmwaru je schopna spracovat takyto prikaz * podla moznosti bez otestovania to NEPOUZIVAT!!! == atribut Mode == * cyclic (periodicky prechadza jednotlive obrazce) * static - zobrazi sa a dalej nic nerobi * ones - zobrazi raz to co je zadefinovane a prejde na dalsi krok (necykli vsak medzi krokmi) == atribut EmtestInnerTab == Ak sa ma zobrazovat po novom tak atribut musi mat hodnotu "new" ==== RG tabule vynimky ==== Pri vnutornych RG tabuliach s protokolom ETL * pri zobrazeni 3 regionov mozne zobrazit do * vrchneho riadku 32 znakov * spodneho riadku 1024 znakov * pri zobrazeni 2 riadkov mozne zobrazit do * vrchneho riadku 32 znakov * spodneho riadku 512 znakov === RG vnutorne tabule - protokol ETL === * RG vnutorne tabule ignoruju atribut //Align//. Na zaklade tejto informacie sa zistila informacia ze sa automaticky rotuje druhy riadok nezavisle na nastaveni v tabule.xml alebo nastaveni v TransOffice. * V pripade ze je nastaveny //Region// na hodnotu //"1"//, co tato tabula nema, dochadza k uplnemu znefunkcneniu zobrazenia sekcii //Prichod// alebo //Odchod// ==== Nastavenia zobrazovania na vnutornych tabuliach ==== === Font === Velkost fontu je najvacsia mozna, teda: * cislo sa zobrazuje najvacsim moznym fontom (na celu vysku tabule) * ak je iba jeden riadok tak velkost fontu je rovnaka ako cislo * ak je text v jednom riadku, velkost je polovicna - teda aby bol text na polovicu tabule === Co sa ma zobrazovat === Priklad: === Popis === Princip je podobny ako pri vnutornych buse paneloch. Po prichode sa zobrazuje to, co co sa nachadza medzi tagmi a . Obdobne to je aj pre Odchod. Tag //Text// reprezentuje jeden region ktory ma byt zobrazeny. //Num// je cislo casoveho kroku, cize texty s rovnakm "Num" budu ozbrazene naraz. Hodnoty atributu musia v danej sekcii (prichod alebo odchod) tvorit suvislu postupnost cisel (napr 1,3,2 a nie 1,3). ATRIBUT //Text// urcuje co sa ma zobrazit. Ak ma atribut //Substitute// hodnotu 0, zobrazi sa presne hodnota atributu Text. Ak je Substitute rovne 1, Text prelozeny/substituovany za text s danym vyznamom. Teda text "Aktualna" bude zameneny za nazov aktualnej zastavky. Mozne hodnoty Substitute: 0/1 (0=false, 1=true) ^Mozne hodnoty Text:^ ^Popis ^ |PrvaZastavka | | prva zastavka spoja | |PrvaZastavkaPoCiarku | | prva zastavka spoja po ciarku | |Konecna |!| posledna zastavka spoja | |KonecnaPoCiarku |!| posledna zastavka spoja po ciarku | |KonecnaBezSipky | | posledna zastavka spoja ale bez sipocky na zaciatku | |KonecnaPoCiarkuBezSipky | | posledna zastavka spoja po ciarku ale bez sipocky na zaciatku | |Aktualna | | aktualna zastavka | |AktualnaNaZnamenie |*| aktualna zastavka a ak ma flag 'zastavka na znamenie', tak sa pripoji prelozeny text "(na znamenie)" - napr.: "Hricovska (na znamenie)" | |AktualnaPoCiarkuNaZnamenie |*| aktualna zastavka (nazov po ciarku) a ak ma flag 'zastavka na znamenie', tak sa pripoji prelozeny text "(na znamenie)" - napr.: "Hricovska (na znamenie)" | |Nasledujuca | | nasledujuca zastavka | |NasledujucaTXT | | text "Nasledujúca zastávka" | |NasledujucaNaZnamenie |*| nasledujuca zastavka a ak ma flag 'zastavka na znamenie', tak sa pripoji prelozeny text "(na znamenie)" - napr.: "Hricovska (na znamenie)" | |NasledujucaPoCiarkuNaZnamenie |*| nasledujuca zastavka (nazov po ciarku) a ak ma flag 'zastavka na znamenie', tak sa pripoji prelozeny text "(na znamenie)" - napr.: "Hricovska (na znamenie)" | |Trasa | | upresnenie trasy iba od aktualnej zastavky | |TrasaPoCiarku | | upresnenie trasy po ciarku iba od aktualnej zastavky | |Cislo | | cisloText linky max 3 znaky | |CisloDlhe | | cisloText linky max 6 znakov | |CisloLinkyDlhe | | cislo linky (naozaj cislo) v plnej dlzke | |CisloLinkyKratke | | cislo linky (naozaj cislo) skratene na 3 znaky | |LinkaNazov | | nazov linky | |LinkaNazovRiadok1 | | prva cast nazvu linky - po prvy podtrhovnik ('_') | |LinkaNazovRiadok2 | | druha cas nazvu linky - od prveho podtrhovniku po druhy podtrhovnik | |CasSekundy | | cas so sekundami - prikaz pre tabulu PrintTime (u RG zatial nepodporovane) | |Cas | | text obsahujuci cas hh:mm (neaktualizuje sa sam, je to text) | |Den | | aktualny den | |Datum | | aktualny datum (D.M.YYYY) | ! Ak sa zobrazuje konecna zastavka, su pred jej nazov prilepene znaky "-> " * v pripade ze sa to spolu s lokalizovanym textom nevojde do 240 znakov, tak sa nazov zastavky oreze sprava po najblizsiu medzeru, tak aby sa nazov zastavky + lokalizovany text "na znamenie" zmestil do 240 znakov. V najhorsom pripade (ak by cely nazov zastavky bol bez medzier dlhsi ako 240 znakov) sa vypise len " (na znamenie)". Atribut //Region// urcuje v ktorm regione ma byt zobrazeny dany text. ak je v danom kroku zadany len jeden riadok, na tabuli je zobrazeny 1 riadok na celu vysku tabule Mozne hodnoty: 1 - region cisla 2 - region horneho riadka 3 - region spodneho riadka pre texto BUSE tabule este aj: 0 - znamena ze to ide vsetko do jedneho riadka a buffruju sa texty v tomto regione v danom kroku NOTE: Odporucam davat cislo ako prve kedze to moze definovat ze riadky maju zacinat dalej na tabuli a nie hned od odkraju Atribut //Time// reprezentuje ako dlho ma byt zobrazeny dany casovy krok. Do uvahy sa berie hodnota v poslednom udaji daneho casoveho kroku. V pripade bude zobrazene 5 sekund. Atribut //Align// urcuje zarovnanie textu (pre rg tabule je podporovane len Rotate urcujuce ci ma rotovat spodny riadok) Mozne hodnoty: Auto - automaticky Left - zarovnane vlavo Center - vycentrovane Rotate - rotovanie Atribut //Lang// hovori o tom do akeho jazyka ma byt prelozeny dany text. Momentalne si applikacia tento atribut vsima pri NasledujucaTXT, Den, Nasledujuca, Konecna, Aktualna, postfix "na znamenie) pri AktualnaNaZnamenie a NasledujucaNaZnamenie. Pri jednom jazyku (napr pri anglictine) sa musi hodnota atributu (napr "en") zhodovat s atributov Lang v busstopsConfig.xml a s identifikatorom jazyka v prekladovych slovnikoch qm (custom_en.qm). Pozor, applikacia rozlisuje velke a male pismena! === Priradenie farby textu k cislu linky === **Farbu textu, farbu oramovania textu a farbu pozadia je mozne po novom (od buildu 1058 - vratane) nastavit len pomocou custom property - tabulka 45, custom property type ID 2 (v tvare:"#FFFFFF,#FFFFFF,#FFFFFF" - text, ramik, pozadie)** Po build 1057: Na novych Bustec RGB tabuliach je mozne priradit ku cislu linky konkretnu farbu z definovaneho ciselnika farieb. Element ma nazov LineColor, v atribute ColorValue je nastavena konkretna farba a cisla liniek, ktore budu zobrazene touto farbou su vymenovane v atribute LineNumbers, kde moze byt vymenovanych viac cisel, ktore su oddelene ciarkou.\\ Priklad: Farby su definovane nasledovne: ===Zobrazenie bitmapy a cisla=== Ak potrebujeme naraz zobrazit region s cislom aj bitmapu, je nutne tuto vlastnost zapnut prislusnym atributom a korektne nadefinovat rozlozenie tabule a sposob akym je zobrazovany text. Regiony je nutne mat nastavene nasledovne: * len region s cislom a text zarovnat vlavo **alebo** * region s cislom + region s prvym riadkom (sposob, akym bude zobrazovany text by v tomto pripade nemal byt dolezity) Atribut, kt. je nutne zapnut v root elemente (v tabule.xml): ====== Tabule.xml z hladiska vyvojara ====== System zobrazovania Vnutornych Tabul ------------------------------------ Indikator ci sa ma zobrazovat na emtest vnutornej tabuli po starom alebo po novom: subor: tabule.xml tag: atribut: EmtestInnerTab Ak sa ma zobrazovat po novom tak atribut musi mat hodnotu "new" devel ----- Toto vycitavanie sa uskutocnuje triede ETableConfig Nastavovanie podla suboru -> GetAttributeNewEmInnerSystem Ziskanie hdnoty -> IsEmInnerTabSystem //================================================================================== devel ----- Naplnanie vectora s informaciami co sa ma kedy kde zobrazit, ktore su ziskane z xml sa uskutocnuje v triede ETabuleConfig (metoda GetEmTableSettNode) Ziskanie vectora je cez GetSetting(RNG_TAB, Prichod) napr. Vrati to smernik na vector struktur ETableXmlSetting. Ak vsak ide o vector pre RNG alebo EM tabule, su to ETableInnerSett (pototmok ETableXmlSetting). V business logike je treba tento vecotr vycitat spominanou metodou Zavolat subsituciu potrebnych textov (metoda SubstituteTexts) a nasledne FillCommandParameters, kde sa naplnia iformacia o velkosti fontov, a suradniciach potrebne pre zobrazenie pre EMtabule Nasledne je upraveny vector odoslany Message do drivera ako s nastavenym priznakom bSetTimeControl. Popis ----- Nastavenia zobrazovania na vnutornych tabuliach: Font: Velkost fontu je najvacsia mozna, teda: - cislo sa zobrazuje najvacsim moznym fontom (na celu vysku tabule) - ak je iba jeden riadok tak velkost fontu je rovnaka ako cislo - ak je text v jednom riadku, velkost je polovicna - teda aby bol text na polovicu tabule Co sa ma zobrazovat: Priklad: Popis: Princip je podobny ako pri vnutornych buse paneloch. Po prichode sa zobrazuje to, co co sa anchadza medzi tagmi a . Obdobne to je aj pre Odchod. Tag Text reprezentuje jeden region ktory ma byt zobrazeny. Num je cislo casoveho kroku, cize texty s rovnakm "Num" budu ozbrazene naraz. Hodnoty atributu musia v danej sekcii (prichod alebo odchod) tvorit suvislu postupnost cisel (napr 1,3,2 a nie 1,3). ATRIBUT Text urcuje co sa ma zobrazit. Ak ma atribut Substitute hodnotu 0, zobrazi sa presne hodnota atributu Text. Ak je Substitute rovne 1 ,Text prelozeny/substituovany za text s danym vyznamom. Teda text Aktualna bude zameneny za nazov aktualnej zastavky. Mozne hodnoty Substitute: 0/1 (0=false, 1=true) Mozne hodnoty Text: Konecna - posledna zastavka spoja Aktualna - aktualna zastavka Nasledujuca - nasledujuca zastavka NasledujucaTXT - text "Nasledujúca zastávka" Trasa - upresnenie trasy po ciarku iba od aktualnej zastavky Cislo - cislo linky max 3 znaky CasSekundy - cas so sekundami - prikaz pre tabulu PrintTime (u RG zatial nepodporovane) Cas - text obsahujuci cas hh:mm (neaktualizuje sa sam, je to text) Den - aktualny den Datum - aktualny datum (D.M.YYYY) Ak sa zobrazuje konecna zastavka, su pred jej nazov prilepene znaky "-> " Atribut Region urcuje v ktorm regione ma byt zobrazeny dany text. ak je v danom kroku zadany len jeden riadok, na tabuli je zobrazeny 1 riadok na celu vysku tabule Mozne hodnoty: 1 - region cisla 2 - region horneho riadka 3 - region spodneho riadka Atribut Time reprezentuje ako dlho ma byt zobrazeny dany casovy krok. DO uvahy sa berie hodnota v poslednom udaji daneho casoveho kroku. V pripade bude ozbrazene 5 sekund. Atribut Align urcuje zarovnanie textu (pre rg tabule je podporovane len Rotate urcujuce ci ma rotovat spodny riadok) Mozne hodnoty: Auto - automaticky (== rotovanie) Left - zarovnane vlavo Center - vycentrovane Rotate - rotovanie Pozor: Niektore tabule nepodporuju viac ako jeden rotovany text. Viac ako jeden rotovany text na tabuli by nemal byt nastaveny vo vstupnych datach pre tabulu. //================================================================================== RG tabule vynimky ----------------- Pri vnutornych RG tabuliach s protokolom ETL pri zobrazeni 3 regionov mozne zobrazit do - vrchneho riadku 32 znakov - spodneho riadku 1024 znakov pri zobrazeni 2 riadkov mozne zobrazit do - vrchneho riadku 32 znakov - spodneho riadku 512 znakov devel ----- kontrola dlzky sa uskutocnuje vo funkciach kde sa buildia commandy Zobrazovanie 2 riadkov: ShowText command 0x61 Zobrazovanie 3 regionov: ShowLineAndText command 0x60 ====== Prehravanie FW v LCD tabuliach Bustec ====== Postup: - zozenieme si USB kluc, pomenujeme ho "BTXXX" - archiv s FW rozbalime a adresar Bustec skopirujeme na kluc (adresar Bustec musi byt v korenovom adresari) - zapneme LCD tabulu - otvorime zaklopku, vlozime kluc, zacne sa vykonavat prehravanie dat - po ukonceni vytiahneme kluc, tabula sa restartne FW:\\ {{dev_dec:fw_bustec_29_inch_lcd_bratislavky_kraj_2021-12-08.zip|fw_bustec_29_inch_lcd_bratislavky_kraj_2021-12-08}} \\ {{dev_dec:bustec_29_inch_lcd_bratislavky_kraj_2022-01-05.zip|fw_bustec_29_inch_lcd_bratislavky_kraj_2022-01-05}} \\ {{dev_dec:2022-04-21_bratislavskykraj.zip|2022-04-21_bratislavskykraj - verzia s opravenym mazanim prestupov}} \\ {{dev_dec:2022-06-01_lucenec_sad_br.kraj_connections_29_.zip|2022-06-01_Lučenec_SAD(Br.Kraj)_Connections_29'' - opravene zobrazovanie iba posledneho prestupu}} ====== Prehravanie FW v LCD tabuliach Buse ====== Postup: - zozenieme si USB kluc, pomenujeme ho "USB-LCDTFT" - obsah archivu (subor DeviceUpdate.conf & adresar) skopirujeme na kluc - zapneme LCD tabulu - otvorime zaklopku, vlozime kluc, zobrazi sa instalacne okno, pockame na dokoncenie - po ukonceni (zobrazi sa hlaska "Remove USB") vytiahneme kluc, tabula sa restartne FW: \\ ====== Zmena IP adresy v LCD tabuliach Buse ====== Postup:\\ - zozenieme si USB kluc, pomenujeme ho "USB-LCDTFT" \\ - pomocou suboru DeviceUpdate.conf vieme zmenit IP adresu, subor obsahuje: * set_IP (IPAdresaPanelu MaskaPodsiete Gateway) 192.168.12.128 255.255.255.0 192.168.12.199 * set_dns (DNS1 DNS2) 192.168.12.199 8.8.8.8 Konfiguracny subor:\\ {{dev_dec:deviceupdate.zip|deviceupdate.zip}}