1. Live-striimi: Ylläpito pelaa PUBGia klo 21:30-00, tule mukaan katsomaan ja keskustelemaan
    Poista ilmoitus

Pieniä kysymyksiä ohjelmoinnista

Viestiketju alueella 'Ohjelmointi, pelikehitys ja muu sovelluskehitys' , aloittaja Kautium, 17.10.2016.

  1. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    No suoraan nuolifunkkarista vissiin et, mutta tietty luokka syntaksin kanssa getterillä hyvinkin helposti.
     
  2. Hessu

    Hessu Team H2O

    Viestejä:
    3 456
    Rekisteröitynyt:
    29.10.2016
    Jos kyseessä Web sivusto niin valitset backendiin jonkin kielen ja teet jonkun tutoriaalin mukaan rajapinnan valmiiksi. Tuohonhan taipuu .NET, PHP, java, Node.js, React jne, joten valikoimaa on, vaikka kuinka. Itse pidän nodesta. Tuo rajapinta on helppo pistää vaikka WAMPilla apachen päälle pyörimään. Luot tietokantayhteyden ja jonkinlaisen tietokannan. Sitten haet datan esim. Ajaxilla tuota rajapintaa käyttäen tai teet jonkin react kikkareen, joka renderöi datan sivulle/tallentaa sen välimuistiin. Sitten jollain JS johdannaisella laitetaan data, vaikka datagridiin/taulukkoon.

    Se mikä on sitten paras tekniikka toteuttaa tälläinen kokonaisuus, on täysin mielipidekysymys. PHP:ta on koitettu kovasti kuopata hautaansa sen kykenemättömyyden takia, mutta kovasti sitä vaan edelleen käytetään yritysmaailmassa.

    En tiedä tarkensiko paljoa tämä kertomus, mutta vähän eteenpäin kuitenkin.
     
  3. oselotti

    oselotti

    Viestejä:
    319
    Rekisteröitynyt:
    02.11.2016
    No sillä itse asiassa lähdin alunperin miettimään, kun olio-ohjelmoinnissa kaiken saa selville reflektion avulla, eikä gettereitä tarvita. JavaScript on vielä sen luontoinen, että ei edes tarvita reflektiota!

    Koodi:
    class Esimerkki {
      constructor(x) {
        this.x = x
      }
    }
    
    const testi = new Esimerkki(8)
    
    /* Onnistuu reflektion avulla */
    const x1 = Reflect.get(testi, 'x')
    
    /* Tai jopa ILMAN sitä! */
    const x2 = testi.x
     
  4. J45U

    J45U

    Viestejä:
    326
    Rekisteröitynyt:
    20.04.2017
    Tarkoituksena ei ollut tehdä rajapintaa vaan palvelu, joka hyödyntää 3. osapuolen rajapintaa.
    Lähinnä pohdin sitä, että mihin nuo 1. sivulatauksella tehdyt vastaukset tallennetaan.
    Päädyin tutkimaan djangoa ja sen memcached tukea. Pitänee kaivella lisää tuosta memcache ratkaisusta...

    Nuo JS-härpäkkeet on kyllä niin kryptisiä. Jos joskus opettelisi jotkut perusteet, niin ehkä ymmärtäisikin.
    Monet tutoriaalit on vain niin itsetietoisia, ettei niistä tosiasiassa saa käsitystä, että miksi joku tehdään tavalla x ja miten se toimii. Ja toisaalta, nekin edellyttää, että tuntisi jonkun kirjaston, mikä on taas kovan työn takana...
    Ja jos lataa jonkun tutoriaalin versionhallinnasta, niin ei niistäkään ota tolkkua, että mikä on käyttäjän tekemää, mitkä tulee jonkun työkalun avustamana tai tulee osittain, mutta pitääkin puukotta käsin jne.
    Yleensä buildin/distin/src ehkä erottaa toisistaan, mutta niissäkin on vaihtelua, että mitä ne sitten tosiasiassa ovat.
     
    Trotor tykkää tästä.
  5. Hessu

    Hessu Team H2O

    Viestejä:
    3 456
    Rekisteröitynyt:
    29.10.2016
    Javascriptillä/Jqueryllä onnistuu cookieen tallentamalla: how to save data in a cookie using jquery
    Varmaan tuollatavoin helpoin ja kätevin säilöä dataa sinunkin tapauksessasi.
     
  6. J45U

    J45U

    Viestejä:
    326
    Rekisteröitynyt:
    20.04.2017
    Haluaisin kyllä backendiin tallentaa. Evästeet on alttiita käyttäjien toimenpiteille.
     
  7. Nigel

    Nigel

    Viestejä:
    257
    Rekisteröitynyt:
    23.10.2016
    Jaa täällä onkin sopivasti keskustelua API:sta.

    Koitan tehdä harjoitustehtävänä selainta JavaScriptillä NHL:n ilmaiselle API:lle. Luonnollisesti tehtävään tarvitsen fetch-funktiota ja "promiseja".

    Ohjelma on tällä hetkellä siinä vaiheessa, että sain haettua New Jerseyn pelaajien statsit onnistuneesti. Ohjelmassa on kaksi vaihetta. Ensin haen New Jerseyn rosterin täältä:
    https://statsapi.web.nhl.com/api/v1/teams/1/roster. Tämä kutsu sisältää rosterissa olevien pelaajien ID:t, joiden avulla teen erillisen API-kutsun jokaiselle pelaajalle osoitteeseen
    https://statsapi.web.nhl.com/api/v1/people/${id}/?hydrate=stats(splits=statsSingleSeason)
    . En vielä tässä vaiheessa ole miettinyt tiedon tallentamista, mutta haluaisin kuulla kommentteja tuosta koodista. Erityisesti tuo loppuosa vaikuttaa oudolta. Onko oikein kutsua fetchPlayers-funktiossa Promise.all()? Tuntuu, että tuossa on liikaa noita then-funktiota, mutta en keksi miten saisin siistittyä tuota hieman.

    Koodi:
    apiUrl = "https://statsapi.web.nhl.com/api/v1/teams/1/roster";
    
    const fetchTeams = new Promise((resolve, reject) => {
        const data = fetch(apiUrl);
        resolve(data);
        reject("No data")
    })
    
    function createUrls(playerIDs) {
        return playerIDs.map(id => queryString(id));
    }
    
    function fetchPlayers(urls) {
        return Promise.all(urls.map(url => fetch(url)));
    }
    
    function doSomething(players) {
        // Do something with the fetched data
        for (player of players) {
            console.log(player.people[0].fullName);
        }
    }
    
    fetchTeams.then( (response) => {
        return response.json();
    }).then(response => {
        // Create a list that contains all player ids
        const ids = [];
        for (player of response.roster) {
            ids.push(player.person.id);
        }
        // Create a new list with all player urls to be fetched
        const urls = ids.map(id => queryString(id));
        return urls;
    }).then(urls => fetchPlayers(urls))
        .then(responses => responses.map(response => response.json()))
        .then(players => Promise.all(players))
        .then(players => doSomething(players));
    
    
    function queryString(id) {
        return `https://statsapi.web.nhl.com/api/v1/people/${id}/?hydrate=stats(splits=statsSingleSeason)`;
    }
     
  8. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    No siis juu tottahan toki se onnistuu, kun Luokka syntaksi on pelkkää silmäkarria prototype-mallin päällä ;D

    avaas vähän lisää, minne päin tähtäilet ajatuksia tässä?
     
  9. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016

    Henkilökohtaisesti en pidä fetch apia juuri minään, koska axios on vaan aika hemmetin kova promise based http kirjasto.

    Koodi näyttää nopeesti vilkastuna ihan about järkevältä, pieni then hell näyttäs orastavia perkelöitymisen merkkejä. await/asyc voi tehdä siitä mukavamman näköstä lukea.

    .then(players => Promise.all(players)) <- Sitä en tiedä miksi haluat lupauksen arraysta joka pitää sisällään objecteja?
    ( Tämä on tietämykseni fetchistä. Oletan ettei sieltä tule Promisea kun kutsuu json() )

    Edit: piti ihan kokeilla
    Ja juu pitäähän ne json resolvaa?!
    Jotenki tämmönen tuntus kivalta

    Koodi:
    const baseUrl = "https://statsapi.web.nhl.com";
    
    const playerStats = ({ person: { link } }) =>
      `${baseUrl}${link}?hydrate=stats(splits=statsSingleSeason)`;
    
    fetch(`${baseUrl}/api/v1/teams/1/roster`)
      .then(result => result.json())
      .then(({ roster }) => Promise.all(roster.map(player => fetch(playerStats(player)))))
      .then(rosterResponses => Promise.all(rosterResponses.map(response => response.json())))
      .then(rosterStats => console.log(rosterStats));
    
     
    Viimeksi muokattu: 22.03.2019
  10. oselotti

    oselotti

    Viestejä:
    319
    Rekisteröitynyt:
    02.11.2016
    Niin, en tarkoittanut pelkkää JavaScriptiä, vaan ihan yleisesti oliokieliä. Esim. jos vaikka Javan kanssa tekisi sopimuksen, ettei jotain luokan tietoja saa kertoa muille, pääsee instanssien yksityisiin tietoihin siitä huolimatta käsiksi:
    Koodi:
    final class Testi {
        private int x;
    
        Testi(int x) {
            this.x = x;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            var instanssi = new Testi(8);
            try {
                var f = instanssi.getClass().getDeclaredField("x");
                f.setAccessible(true);
                System.out.println(f.get(instanssi));
            } catch (NoSuchFieldException | IllegalAccessException e) {
                System.err.println(e.toString());
            }
        }
    }
    
    Lähinnä vain tutkin ohjelmointikielien rajoja. Aloin miettimään pystyisikö reflektiota hyödyntämään sulkeumien kanssa. En ole ainakaan vielä keksinyt keinoa siihen.
     
  11. Tuke

    Tuke

    Viestejä:
    30
    Rekisteröitynyt:
    21.10.2016
    Kyllähän se pitäisi onnistua, koska Javassa lambda on vain erilainen syntaksi kirjoittaa anonyymimetodi. Sitä miten se tapahtuu en osaa sanoa.
     
  12. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016

    Ideone.com

    Olisko tässä jotain ideaa?


    Ja sitten vastaavasti Javan security conffilla voi luultavasti estää reflection.
     
    Viimeksi muokattu: 22.03.2019
  13. Pertin Perunat

    Pertin Perunat

    Viestejä:
    20
    Rekisteröitynyt:
    25.09.2017
    En keksinyt parempaakaan paikkaa:

    Miksi obs välillä nauhoittaa pelkkää mustaa? Yritin nauhoittaa paria videoa ja pelkkää mustaa?
     
  14. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    Kaitzschu tykkää tästä.
  15. Nigel

    Nigel

    Viestejä:
    257
    Rekisteröitynyt:
    23.10.2016
    Kiitos tästä. Näin tehtynä näyttää sata kertaa paremmalta kuin minun versio.
     
  16. Pertin Perunat

    Pertin Perunat

    Viestejä:
    20
    Rekisteröitynyt:
    25.09.2017
  17. Barbarossa

    Barbarossa

    Viestejä:
    335
    Rekisteröitynyt:
    17.10.2016
    Liittyy ohjelmointiin 0
    Tuossa ylempänä sait jo kaksi suoraa linkkiä suoraan kysymyksen aiheeseen liittyviin ketjuihin. Josko jommasta kummasta se vastaus löytyisi kun lukaisee läpi? Ellei, niin todennäköisemmin saat vastauksen kysymällä esim. noista ketjuista kuin tästä.
     
  18. JKAVS

    JKAVS

    Viestejä:
    258
    Rekisteröitynyt:
    22.10.2016
    Olen aina "tiennyt", että C++:ssa taulukon koon on oltava vakio, eikä sitä voi lukea käyttäjän syötteestä.
    Nyt kuitenkin opin, että se onkin mahdollista. Voisiko joku selittää?
     
  19. Barbarossa

    Barbarossa

    Viestejä:
    335
    Rekisteröitynyt:
    17.10.2016
    Horo kääntäjä kelpuuttaa standardin vastaista C++:aa sallimalla C99 VLA:t myös C++:ssa?
     
  20. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    Haluan ensimmäisen segment:in line:n käsiksi.
    Ja normi css menee about näin

    Koodi:
    .segment.first-child > .line {
        display:none
    }
        
    <div  class="segment">
        <div class="dot"></div>
        <div class="line"></div>
    </div>
    mutta mites sitte

    CSS IN JS ???


    Koodi:
      segment: {
        '&:first-child': {
          // toimii pääsen ekaan segmenttiin käsiksi!
        }
      },
    
      segment: {
        '&:first-child >.line': {
          // ei toimi
        }
      },
    
      segment: {
        '&:first-child': {
          line: {
           // ei toimi
          }
        }
      },
    
      segment: {
        '&:first-child': {
          '&.line': {
           // ei toimi
          }
        }
      },
    :confused::confused::confused:
     
  21. Zigh

    Zigh

    Viestejä:
    905
    Rekisteröitynyt:
    17.10.2016
    Mikä CSS-in-JS kirjasto? Eihän tuohon mitään standardia kai ole olemassa.
     
  22. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    Eikös JSS ala olla aika standardi?

    Koodi:
      segment: {
        '&:firt-child': {
         '& $line':{
          // ja tämä toimii.
         }
        }
      }
    hetiku avaan suunsa ja kysyy! niin vastaus yleensä seisoo jo nenän edessä! :btooth:
     
  23. Vieras

    Vieras

    Viestejä:
    17
    Rekisteröitynyt:
    18.10.2016
    Mitenkäs PHP:llä (tai jollain muulla kielellä mitä voi käyttää Apache serverillä) onnistuisi sellainen Fire & Forget funktio?

    Ideana on että käyttäjä menee esim osoitteeseen http://localhost/start_test.php joka sitten käynnistää toisen PHP skriptin. Tässä tapauksessa test.php:n. En tarvitse mitään vastausta skriptiltä enkä mitään muutakaan käyttäjä interaktiota. Test.php tiedosto käy parin sadan megan XML tiedoston läpi ja tallentaa tietoja MySQL databaseen.

    PHP:
    $command 'php -f test.php >/dev/null 2>&1 &';

    system($command);

    echo 
    'Test started!'
    Välillä toi komento toimii ja välillä ei. Riippuen XML tiedoston koosta.
     
  24. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    PHP: ignore_user_abort - Manual

    Olisko tämä se mitä haetaan? Eli se test.php laukaistaan http get reguestilla ja se saa jäädä rullaamaan.
     
  25. Vieras

    Vieras

    Viestejä:
    17
    Rekisteröitynyt:
    18.10.2016
    ignore_user_abort(true) ja set_time_limit(0) on test.php:ssä jo käytössä mutta niillä ei vaikuttaisi olevan mitää vaikutusta.
     
  26. Zigh

    Zigh

    Viestejä:
    905
    Rekisteröitynyt:
    17.10.2016
    Tästä tulee kuva, että vika ei ole siinä etteikö prosessi käynnistyisi vaan että se taustaprosessi itsessään jumii. Pistä logittamaan johonkin muualle kuin /dev/nulliin niin näät mikä on ongelma.
     
  27. ©©©

    ©©©

    Viestejä:
    223
    Rekisteröitynyt:
    16.10.2016
    Oliskohan tuossa PHP-tapauksessa parempi ratkaisu ja design siten että kun tuota http routea kutsutaan niin taustalla kirjoitetaan vain jokin arvo tiedostoon sen merkiksi, että tausta-ajo pitää suorittaa. Sitten se tausta-ajon käynnistysscripti croniin kyttäämään tiedostoa. Kun ajo on suoritettu niin taas merkki tiedostoon, että ajoa ei tarvitse suorittaa. Ikään kuin hyvin light weight eventbus.
     
  28. J45U

    J45U

    Viestejä:
    326
    Rekisteröitynyt:
    20.04.2017
    Rajapinta ei palauta Last-Modified otsaketta, joten kuinka huono tai hyvä ajatus olisi käyttää Content-Length otsaketta triggeröimään välimuistin päivitys?
    Äkkiseltään vaikuttaisi ihan toimivalta ratkaisulta.
     
  29. Tuke

    Tuke

    Viestejä:
    30
    Rekisteröitynyt:
    21.10.2016
    Oletan että käytät HTTP HEAD -pyyntöä hakemaan pelkät headerit taustajärjestelmästä ja sieltä tulee silloinkin Content-Length headeri, niin tuon pitäisi olla kohtuullisen toimiva ratkaisu.

    Jos pyyntö tehdään kuitenkin HTTP GET -pyyntönä, niin silloin itse voisin kuvitella laskevani jonkin tarkistussumman sisällöstä ja vertaamalla sitä välimuistiin tallennettuun tarkistussummaan.

    EDIT: Aina tuota Content-Length headeria ei tule vastauksena HTTP HEAD -pyyntöön
     
  30. Lare

    Lare Error 404 Tukijäsen

    Viestejä:
    1 068
    Rekisteröitynyt:
    13.11.2016
    Eclipsessä heittää tuollaista virhettä, kun yritän ajaa mitä tahansa ohjelmaa:

    [​IMG]

    JavaFX asennettu Eclipseen uudestaan tuloksetta. Kone käynnistetty luonnollisesti uudestaan. Millä ihmeellä pääsen tuosta ohi?
     
  31. Pseudonymous

    Pseudonymous

    Viestejä:
    4
    Rekisteröitynyt:
    01.12.2016
    Jos haluaisin Windows-peliin online high score -listan esim. nettisivulle niin miten tämä olisi järkevä toteuttaa?

    En käytä mitään yleistä pelimoottoria ja kokemusta on vain Windows offline työpöytäsoftien koodaamisesta harrastelijatasolla.
     
  32. Hessu

    Hessu Team H2O

    Viestejä:
    3 456
    Rekisteröitynyt:
    29.10.2016
    Varmaan helpoin (eniten ohjeita youtubessa jne) on lähteä tekemään jokin SQL -tietokanta. Tuonne sitten päivittää clientilta pisteet. Verkkosivulle sitten hakee jollain ajaxilla tms. tiedot suoraan, vaikka datagridiin.
    Tapoja on valtavasti erillaisia ja riippuen entisestä osaamisestasi/tasostasi on helpointa lähteä tekemään moista. Oletan, että olet ilmeisesti koodannut jotain .NET/java softaa aiemmin, joten tuossa on aspilla toteutettuna jonkulainen ohje:
     
  33. Xiyng

    Xiyng

    Viestejä:
    1 015
    Rekisteröitynyt:
    19.10.2016
    Jos käytät pelille jotain jakelualustaa (esim. Steam), se saattaa tarjota moisen toiminnallisuuden, jolloin sitä voinee käyttää suoraan API:n kautta. Ainakin Steam tarjoaa leaderboard-toiminnallisuuden. Muussa tapauksessa toiminee varmaan esim. tuo yo. viestin idea.
     
  34. Pseudonymous

    Pseudonymous

    Viestejä:
    4
    Rekisteröitynyt:
    01.12.2016
    Kiitos. Näköjään opiskeltava aika paljon uutta. Ympäristönä on Delphi ja kielenä siis pascal. Olen tosiaan koodaillut lähinnä omaan käyttöön apuohjelmia ja Delphi on siihen riittänyt mainiosti. Tuo Steam API näyttää mukavalta, mutta Steam-julkaisu ei taida olla kovin realistinen vaihtoehto kun sen verran niche juttu kyseessä (vuoropohjainen roguelike-peli vanhahtavalla toteutuksella).
     
  35. Xiyng

    Xiyng

    Viestejä:
    1 015
    Rekisteröitynyt:
    19.10.2016
    Steamiin saa kyllä jokseenkin pelin kuin pelin, jos vaan näyttää Valvelle sopivan nipun rahaa. Pikaisen googlauksen perusteella sopiva nippu näyttäisi olevan $100.
     
    hsalonen tykkää tästä.
  36. nnaku

    nnaku I'm object-oriented! Tukijäsen

    Viestejä:
    684
    Rekisteröitynyt:
    28.11.2016
    google firebase, tai joku muu realtime database ratkaisu?
     
    hmb ja ©©© tykkäävät tästä.
  37. J45U

    J45U

    Viestejä:
    326
    Rekisteröitynyt:
    20.04.2017
    Mitenkäs Slim3:lla väännettyn PHP-ohjelmaan saisi tuotua esim. webeweb/bootstrap-bundle - Packagist ?

    Olen koittanut tuoda Slim3 tutoriaalien mukaisesti addExtension, mutta kaatuu aina siihen, ettei ko. extensionin sisältämiä funktioita löydy esim. renderIcon.

    PHP:
      $view->addExtension(new GridTwigExtension($view->getEnvironment()));
    Tulostamalla tuon $view objektin voi haivaita, että ko. extensionin kohdalla siellä tulee *RECURSION*.

    Sinällään ymmärrän sen, kun tuossa kutsutaan ensin tuota $view objektia, joka annetaan myös parametrinä uudelle lisäosalle.
    Ilmeisesti noita lisäosia voi tehdä monella tapaa...
     
  38. Nigel

    Nigel

    Viestejä:
    257
    Rekisteröitynyt:
    23.10.2016
    Koodi:
    const hello = () => console.log("Hello World")
    
    function hello() {
      console.log("Hello Word")
    }
    Javascriptiä. Miksi en aina käyttäisi tuota ylempää tapaa (function expression) alemman (function declaration) sijasta? Olen tykästynyt tuohon ylempään tapaan ja tulee käytettyä sitä omassa koodissa aina. Noiden ero on ainakin se, että alemmalla tavalla luodut funktiot hoistataan, eli niitä voidaan kutsua ennen niiden luomista, mutta mitäs muita tärkeitä eroja noiden välillä on?
     
  39. arcane

    arcane

    Viestejä:
    667
    Rekisteröitynyt:
    23.10.2016
    Are 'Arrow Functions' and 'Functions' equivalent / exchangeable?

    Siinä on suht hyvä vastaus, ja perässä linkkejä lisämateriaaliin.

    Arrow function (tai "fat arrow") ei tietenkään toimi silloin, jos ajoympäristö on ES5, joten toisinaan pitää kirjoittaa vanhalla mallilla (tai transpileta babelilla tai muulla vastaavalla) kun uudempaa ei tueta. Muuten käytän itsekin 90% nuolifunktioita, paitsi silloin jos tulee tarve kirjoittaa luokkia - joka riippuu aika vahvasti siitä mitä ohjelmointikehystä ympärillä käyttää. Funktionaalisessa koodissa uudempi tapa on ihan ylivertainen, kun useat asiat menevät usein siisteiksi onelinereiksi.
     
    hmb tykkää tästä.
  40. Xiyng

    Xiyng

    Viestejä:
    1 015
    Rekisteröitynyt:
    19.10.2016
    Käytännössä iso ero tulee ainakin siitä, miten this toimii. Monen tarpeen kannalta merkityksetön ero on myös se, että function-syntaksilla määritellyillä funktioilla on myös kielen kannalta nimi kun taas nuolifunktioilla ei ole. Nimi siis löytyy funktion name-propertystä jos on löytyäkseen.
     
    hmb tykkää tästä.
  41. J45U

    J45U

    Viestejä:
    326
    Rekisteröitynyt:
    20.04.2017
    Jollain käytännön kokemusta Eloquent&SQLite yhdistelmästä?
    Miten Eloquentia saisi hyödynnettyä tehokkaasti olemassaolevan SQLite kannan kanssa?
     
  42. K4R1

    K4R1

    Viestejä:
    290
    Rekisteröitynyt:
    25.04.2018
    Onko tietoa miten pystyisi simuloimaan sulautettua C-ohjelmointia?

    Esim. Jos jotain ihan perustavaraa kuten LED:in vilkkumista haluaisi testata mutta ei ole mitään rautaa jonka sisään ohjelmoida, niin voiko millään C-ohjelmointi softalla simuloida sitä piirilevyn outputtia?

    Alla simppeli LED-blinky koodi C-kielellä.

    void wait (void) { /* wait function */
    ; /* only to delay for LED flashes */
    }

    void main (void) {
    unsigned int i; /* Delay var */
    unsigned char j; /* LED var */

    while (1) { /* Loop forever */
    for (j=0x01; j< 0x80; j<<=1) { /* Blink LED 0, 1, 2, 3, 4, 5, 6 */
    P4 = j; /* Output to LED Port */
    for (i = 0; i < 20000; i++) { /* Delay for 10000 Counts */
    wait (); /* call wait function */
    }
    }

    for (j=0x80; j> 0x01; j>>=1) { /* Blink LED 6, 5, 4, 3, 2, 1 */
    P4 = j; /* Output to LED Port */
    for (i = 0; i < 20000; i++) { /* Delay for 10000 Counts */
    wait (); /* call wait function */
    }
    }
    }
    }
     
  43. Stephen Elop

    Stephen Elop

    Viestejä:
    608
    Rekisteröitynyt:
    07.03.2017
    Teet erillisen säikeen, joka lukee tuota P4 muistipaikkaa. Vai pitääkö sijoituksen P4:ään olla blokkaava, eli softa on aina pysähdyksissä niin kauan, kunnes kirjoitus on suoritettu? Sitten tarvitaan vähän erilainen ratkaisu.
     
  44. Hyrava

    Hyrava

    Viestejä:
    332
    Rekisteröitynyt:
    17.10.2016
    Miten olisi ihan jonkun mikrokontrollerin oma kääntäjä/simulaattori? Ainakin aikanaan Atmelin AVR:n IDE:ssä oli simulaattori ja varmaankin Microchipin PICcien kanssa on sama juttu.