Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Heksasta ASCII

Sivun loppuun

Dukex [03.09.2007 19:32:41]

#

Eli minulla olisi yhdessä taulukossa tekstiä heksa, binääri tai desimaali muodossa, ja haluaisin tulostaa tämän tekstin. Eli millä tavalla se tulostus onnistuu niin että näytölle saataisiin teksti kirjaimin.

Kyseessä on siis AVR ohjelmointi ja taulukko saa tekstintä sarjaväylästä ja tulostus tapahtuisi LCD näytölle. Laitteita ei minulla tässä nyt ole joten eri variaatioita en pääse nyt "yrittämään" vaan ajattelin kysäistä eka.

terv. Dukex

Antti Laaksonen [03.09.2007 20:21:17]

#

Mitä heksamuoto tarkoittaa tässä tapauksessa? Jos näytölle pitää tulostaa vaikka kirjain A, niin mitä lukuja tai merkkejä ohjelma saa tietoonsa?

Dukex [03.09.2007 20:25:24]

#

ohjelma lukee sarjaportista tulevat tiedot taulukkomuuttujaan, ja jos taulukon tulostaa sellaisenaan niin näytöllä kirjaimet näkyvät desimaalimuotona. Otsikko sinänsä oli vähä huono tähän.

Antti Laaksonen [03.09.2007 20:27:36]

#

Millä koodilla tulostat taulukon nykyään ja mitä näytölle tulee ja mitä näytölle kuuluisi tulla?

Dukex [03.09.2007 20:40:47]

#

LCD näytölle tulostukseen käytän opettajan tekemää kirjastoa. Ja tulostus tapahtuu komennolla:

WriteInt(1,1,10,0,muuttuja[i]);  // neljä lukua ennen muuttujaa määrää sijainnin ja varatun koon näytöllä

Näytölle tulostuu tieto desimaalilukuna eli 0-255. Mutta tieto kuuluisi tulostua tekstinä.

Mietin että ehkä pelkkä yläpilkkujen lisäys ei toimi. eli

'muuttuja[i]'

En ole siis paljoa C koodia kirjoitellut eli ratkaisu voi olla hyvinki yksinkertainen. Mutta ehkä jotain % merkkejä tjs pitäisi lisäillä enne tai jälkeen muuttujan. Tai sitte pitäisi olla jokin oma kirjasto.

jlaire [03.09.2007 21:30:04]

#

Tuo WriteInt kuulostaa siltä, että se on lukujen tulostusta varten. Onko kirjastossa muita tulostukseen käytettäviä komentoja (WriteChar tms)?

Dukex [03.09.2007 21:40:39]

#

Jos tekstiä haluaa tulostaa niin käytetään Write(1,1,"Teksti").

Voisiko tähän löytyä vastaus tuosta Write -kirjastosta?

Antti Laaksonen [03.09.2007 22:05:55]

#

Funktiolla Write homman pitäisi onnistua, kunhan luot ensin merkkijonon, johon lisäät merkiksi muutetun luvun. Merkkijono on char-tyyppinen taulukko, jonka viimeisenä alkiona on luku 0.

Eli jos haluat tulostaa vaikka merkit A, B ja C, kirjoita näin:

char teksti[10]; // tilaa korkeintaan 9 merkille
teksti[0] = 65; // A:n ASCII-koodi on 65
teksti[1] = 66;
teksti[2] = 67;
teksti[3] = 0; // merkki 0 päättää merkkijonon

Jos taas sinulla on merkki jossain int-muuttujassa, voit menetellä näin:

teksti[0] = (char)luku;
// teksti[0] = (char)muuttuja[i];
teksti[1] = 0;

Sitten kun merkkijono on valmis, se pitää enää tulostaa:

Write(1, 1, teksti);

Minkä tyyppinen valmiina oleva taulukko muuten on? Jos se on char-tyyppinen, se on melkein valmis merkkijono, lisää vain viimeiseksi alkioksi nolla. Jos se on int-tyyppinen, kopioi kaikki alkiot char-taulukkoon ja lisää loppuun nolla.

Dukex [04.09.2007 13:16:33]

#

No tällähetkellä taulukko on int muotoinen, mutta eipä se hankalaa oo vaihtaa. Yritän koittaa tuota vielä tänään ja kerron miten kävi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta