OT: Jak moderátor prichazi o nervy (BASCOM BASIC a C++)

Software pro železniční modelářství, simulátory, ovládání, plánování....

Moderátoři: Michal Dalecký, Jarda H.

Re: OT: BASCOM BASIC a C++

Příspěvekod JOHNZ » úte 23 říj, 2018 6:04 pm

zdeno:
zdeno píše:vis, ze existuji stanice, kde je dovolen jen jeden pohyb na zhlavi ??
Proste kraceni provozniho casu a problematicky grafikon nemuze byt duvod porusovat pravidla.
Neni problem to opravit, ale nechcem. ;-)

Tak teraz si tomu nasadil korunu.Áno, také stanice naozaj existujú. Ale ten jeden pohyb na zhlaví je dovolený na základe toho, že tam je (alebo skôr nie je) zabezpečovacie zariadenie, ktoré neumožňuje pohybov viac. Takže si kľudne môžeme položiť otázku, či viac modelovosť naopak nekazí ten, čo si do takej stanice namontuje zariadenie, ktoré vyzerá ako releovka, obsluhuje sa ako releovka, ale neumožňuje to, čo releovka :wink: Opravovať nemusíš, ale nevydávaj to za vrchol techniky. A len pre istotu, v Nemšovej je aj v skutočnosti zariadenie, ktoré viac pohybov zvládne.

K mapovaniu funkcí: Ovládač som nad Loconetom ešte naozaj nestaval. Rád by som (chcel by som z panelu na Nemšovej vedieť aspoň na našom jazdení obsluhovať aj posunovaciu loko, na cudzom stretnutí by sa na mňa asi s notebookom strčeným do X3 dívali dosť nevraživo), ale naozaj nie je čas. Čo sa týka kódu, základ si necháme a len si ho rozšírime - ten uint8 nahradíme štruktúrou. Pre funkciu sa nadefinuje
Kód: Vybrat vše
struct TFunkciaData {
  Cislo: uint8;  //cislo vyslednej funkcie, ktora sa bude vysielat
  JeTlacitko: bool; //šlo by kľudne nahradiť enumom s hodnotami FT_TLACITKO a FT_PREPINAC, väčšina prekladačov pre jednočipy pochopí, že to je jednobitová hodnota
  PoslStav: bool;
  OdosStav: bool; //ak potrebuješ uložiť odoslaný stav do doby prijatia ACK (fakt neviem, čo sa pri poveloch pre loko ACKuje a čo nie)
}

uint8 max_funkcia = 28; //F0 až F28, dá sa tiež dať trebársdo EEPROM
TFunkciaData *data_funkcii; //pole tých štruktúr s informáciami
uint8 *mapa_funkcii //ak potrebujem volať funkcie aj podľa ich poradia, nielen prehádzané, inak toto nepotrebujem a prehádžem si ich rovno pri inicializácii data_funkcii
addr_t funkcie_eeprom //odkaz na miesto v EEPROM, kde sú tie údaje potom uložené

Neviem čo presne si predstavuješ pod balíčkami, či loconetové packety, alebo porty alebo niečo iné, ale určite by šlo informáciu pridať do tej štruktúry. Keď ju chcem dať do EEPROM, väčšinou postupujem tak, že si ju zrkadlím v RAMke a každý zápis do nej prepisujem do EEPROM. Pri štarte apod. si ju potom naťahujem z EEPROM do RAM. Inicializáciu opäť preskočím, v prípade XC od Microchip si cez #segment nadefinuješ, kde ju chceš mať v RAMke a kde v EEPROMe a potom si to z EEPROM načítaš do RAM.

No a potom vyrobím niečo ako
Kód: Vybrat vše
void SpracujTlacitko(uint8 p_funkcia) {
  if(p_funkca<=max_funkcia) //ak som paranoidny, nemusi to tu byt
  {
    TFunkciaData funkcia=data_funkcii[mapa_funkcii[p_funkcia]];

    if(funkcia.JeTlacitko) {
       //poslem si trebars dva prikazy na ZAP/VYP
         PosliFunkciuNaLoconet(funkcia.Cislo,True);
         PosliFunkciuNaLoconet(funkcia.Cislo,False);
    }
   else
   {
         PosliFunkciuNaLoconet(funkcia.Cislo,!funkcia.PoslStav); //poslem novy stav na LocoNet
         funkcia.OdosStav=!funkcia.PoslStav; //poznamenam si, ze som to poslal, kvoli ACK (ak to tam fakt treba)
         funkcia.PoslStav=!funkcia.PoslStav; //ak nie, rovno pozmenim vnutorny stav
   }

  ZapisNovyStav(funkcia);
}

void ZapisNovyStav(TFunkciaData p_funkcia const) {
  data_funkcii[p_funkcia.Cislo]=p_funkcia;
  eeprom_write(data_funkcii+p_funkcia.Cislo*sizeof(TFunkciaData),funkcie_eeprom+p_funkcia.Cislo*sizeof(TFunkciaData,sizeof(TFunkciaData));
}


Chýbajú tam detaily ako adresa lokomotívy, ale tá sa strčí trebárs do ďalšej globálnej premennej, a potom sa len použije pri volaní PosliFunkciuNaLoconet. Tú som tam tiež schválne nepísal, ale je to len načasovanie a odoslanie dát.
JOHNZ
 
Příspěvky: 140
Registrován: sob 05 led, 2008 9:24 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 9:07 am

jeden pohyb na zhlavi:
to mas rizene PC nebo mas jen analog ?
Pod analogem myslim aj nezavisle ovladani pomoci digitalu, kde nejsou osetreny zavislosti .
Jeden prujezd vlaku trva asi 30 vterin, teda to nic neblokuje. Pokud se ti sejde vic vlaku do jedne minuty, tak je neco spatne !!
Jinak neni problem to zmenit, ale nechcem. Muzes mit jiny nazor, ale to mi nevadi. ;-)
---
Ten tvuj navrh je poznamenany tim, ze dobre nepoznas zaklady, ale snaha byla.
(Trosku mi vadi otoceni =!, kde by melo byt != ).
Teda to nemas odvsivene, teda neverim, ze je to funkcni. Viz otoceni operatoru.
---
Ja jsem pouzil promennou typu Dword, ktera obsahuje 32 bitu a ty se daji ovladat pres index 0 ... 31.
Tim padem mam zabezpecenou vazbu mezi cislem funkce a poradim funkce.
'deklarace
Dim fun28 as dword 'ulozene hodnoty funkci
Dim Key as byte 'hodnota klavesy
Dim Work as byte 'vseobecna promenna
Dim Acc as byte 'vseobecna promenna
Dim Eemap(28) as eram byte 'vytvorena mapa funkci v EEPROM
...
Key = getkbd() 'volani klavesnice, kde v Key se vrati stisknuta klavesa, toto je priklad, mam to obslouzene pres preruseni a jinak
If Key > 28 then return ' kontrola spravnosti
acc = key 'zmena promenne, pro pripad dalsiho volani klavesnice z preruseni
toggle fun28.Acc 'zmena hodnoty funkce, kde v Acc je poradi funkce
work = Eemap(acc) 'vytahnuti mapovane funkce z EEPROM
...
'tady je rozdeleni na jednotlive funkce, pakety, opcode podle Work, kde je ulozene cislo funkce z EEPROM
'a tam se dosadi bit fun28.acc
....
&EEPROM
EEMAP:

'zmena v tabulke na jine cislo 0 ... 28 znamena mapovani te funkce, teda zmena 2 na 5, znamena volani funkce 5 tlacitkem 2
Data 0,1,2, ... 27,28
&End data
---
Ted zkusme porovnat vysledny kod, ktery je kratsi a rychlejsi ?
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod MiG » stř 24 říj, 2018 9:39 am

zdeno píše:Ted zkusme porovnat vysledny kod, ktery je kratsi a rychlejsi ?

Význam kratšího kódu oceníme jen v případě, že je plná paměť programu a nesmíme nebo nemůžeme použít procesor s větší programovou pamětí.
Význam rychlejšího kódu oceníme pouze v případě, že se s programem nebo jeho fragmenty dostaneme do časové "tísně", kterou nelze odstranit jiným přeskupením programu a nesmíme nebo nemůžeme použít rachlejší nastavení procesoru/procesor.

Pokud je zrychlení nebo zkrácení programu na úkor jeho čitelnosti a modifikovatelnosti, jde o "skrytou" časovanou bombu z hlediska nalezení chyb, či doplnění dalších funkcí.
A taková bomba může představovat větší problém, než nalezení vhodnějšího procesoru pro danou úlohu.

V podstatě se "neortodoxní" zkracování programu a jeho zrychlování hodí jen pro "one man show", pro rozsáhlejší případně týmovou práci je však zcela kontraporoduktivní.
MiG
 
Příspěvky: 1106
Registrován: sob 14 úno, 2015 11:55 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 9:57 am

MiG píše:V podstatě se "neortodoxní" zkracování programu a jeho zrychlování hodí jen pro "one man show", pro rozsáhlejší případně týmovou práci je však zcela kontraporoduktivní.

places na spatnem hrobe !!
otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?
---
Jinak souhllasim, obrovske programy se nedaji delat "One man show" !!
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod MiG » stř 24 říj, 2018 10:11 am

zdeno píše:places na spatnem hrobe !!

To je mi jasné, když
zdeno píše:otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?

se "smrskává" na
zdeno píše:Ted zkusme porovnat vysledny kod, ktery je kratsi a rychlejsi ?
MiG
 
Příspěvky: 1106
Registrován: sob 14 úno, 2015 11:55 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 10:16 am

MiG píše:
zdeno píše:places na spatnem hrobe !!

To je mi jasné, když
zdeno píše:otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?

se "smrskává" na
zdeno píše:Ted zkusme porovnat vysledny kod, ktery je kratsi a rychlejsi ?


timto uhybnym manevrem si potvrdil, ze mam pravdu ;-)
Zkus argumentovat k veci samotne a neurazet oponenta !!
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod MiG » stř 24 říj, 2018 10:32 am

Úhybný manévr? No toto...

Když tě to uráží, tak tě to uráží. S tím já nic neudělám.
Jsou to tvé posty.
MiG
 
Příspěvky: 1106
Registrován: sob 14 úno, 2015 11:55 pm

Re: OT: BASCOM BASIC a C++

Příspěvekod vvitty » stř 24 říj, 2018 10:48 am

zdeno píše:otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?
---


Tot otazka z kategorie jestli je lepsi zrzka nebo bruneta. Preji hezky flame. :lol:
Stavebnice, díly, nářadí pro modeláře, - [url]https://www.pojezdy.eu/eshop[/url]
vvitty
 
Příspěvky: 2622
Registrován: pát 28 pro, 2007 7:11 pm
Bydliště: Praha

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 10:49 am

MiG píše:Úhybný manévr? No toto...
Když tě to uráží, tak tě to uráží. S tím já nic neudělám.
Jsou to tvé posty.

no comment, nebudem se snizovat na tvoji podrazackou uroven !!
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 10:51 am

vvitty píše:
zdeno píše:otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?
---

Tot otazka z kategorie jestli je lepsi zrzka nebo bruneta. Preji hezky flame. :lol:


Ja mam radsi odbarvene blondynky ;-)
---
Koncim, mas pravdu, nech kazdy pouziva to, co mu vyhovuje.
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod Pavel-HP » stř 24 říj, 2018 11:07 am

vvitty píše:
zdeno píše:... pri zachovani spolehlivosti ... ?
---


Tot otazka z kategorie jestli je lepsi zrzka nebo bruneta. Preji hezky flame. :lol:



To bude celkem jedno, hlavně když zůstane zachovaná "spolehlivost".
TT, epocha III. - V., U profil
www.vlakytt.cz
Uživatelský avatar
Pavel-HP
 
Příspěvky: 1018
Registrován: čtv 11 pro, 2008 2:47 pm
Bydliště: Praha

Re: OT: BASCOM BASIC a C++

Příspěvekod belgarat » stř 24 říj, 2018 11:11 am

Pavel-HP píše:To bude celkem jedno, hlavně když zůstane zachovaná "spolehlivost".


Prave spolehlivost dostava spolehlive na frak, kdyz vyvojar uprednostni "super optimalizovany kod" (ktery nepotrebuje) pred solidnim navrhem a cistym zapisem. Predchazeni (i vlastnim) chybam a dlouhodoba udrzovatelnost je presne to, co amater neresi.

A tenhle, bohuzel, ani nevi, ze takove pristupy mohou vubec existovat. Je trapne, ze pro maly a navic nepodstatny detail (napr =! namisto != apod) se zcela ztratil obsah sdeleni - tomu se rika "jit k podstate".
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: OT: BASCOM BASIC a C++

Příspěvekod tondakladno » stř 24 říj, 2018 11:23 am

zdeno píše:
vvitty píše:
zdeno píše:otazka znela ci je lepsi C++ nebo Bascom pro jednocipy AVR, pri zachovani spolehlivosti ?
---

Tot otazka z kategorie jestli je lepsi zrzka nebo bruneta. Preji hezky flame. :lol:


Ja mam radsi odbarvene blondynky ;-)
---
Koncim, mas pravdu, nech kazdy pouziva to, co mu vyhovuje.


Zdeno, to co zde řešíte musí umět každý, kdo je v DCC ? Myslím programování, nebo uživatel DCC musí někoho požádat, aby mu to naprogramoval.
tondakladno
 
Příspěvky: 123
Registrován: sob 12 kvě, 2018 12:40 pm
Bydliště: Kladno

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 11:31 am

tondakladno píše:Zdeno, to co zde řešíte musí umět každý, kdo je v DCC ? Myslím programování, nebo uživatel DCC musí někoho požádat, aby mu to naprogramoval.

tak toto te vubec nemusi trapit, tam nez se dostanes, tak to uplyne spousta vody ;-)
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: OT: BASCOM BASIC a C++

Příspěvekod zdeno » stř 24 říj, 2018 11:36 am

Pavel-HP píše: "spolehlivost".

tak s tim problem nemame, pokud by to existovalo, tak by Bascom rychle skoncil ;-)
---
Proste mi vadi, kdyz se podcenuji dobre a spolehlive veci. Treba Loconet. ;-)
A toto je neco podobne,
---
kdo to umi, ten to dela
kdo to neumi, ten to ridi,
kdo to neumi ani neridi, ten to uci,
a ti ostatni to aspon kritizuji ;-)
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

PředchozíDalší

Zpět na Software

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků