Hallo allemaal,
Ik kwam laatst het volgende stukje tegen, hierin word een string opgeslagen.
const lcd1 = "Initializing..." ; <-- mikroe basicNou wil ik ook zo iets doen met picbasic.
Wat ik tot nu toe heb is dat ik de text als een string in een byte array weg schrijf.
Maar dit is natuurlijk niet efficient.
Is er een manier om dit efficient te doen in proton picbasic?
De bedoeling is dus dat ik een keer een bepaalde text neerzet, en als ik vervoglens die text wil printen, hoef ik alleen nog maar print lcd1 ,in te typen.
Zo iets dus:
lcd1 = "text1"
lcd2 = "text2"
lcd3 = "etc."
print lcd1
;
print lcd2
etc
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Je zult in PicBasic toch ook wel constanten kunnen aanmaken?
Dus gewoon van lcd1/2/3 een constante maken.
In het geval van
symbol lcd1 = text1word het toch in het flash geheugen geschreven? (even controleren of ik het goed in mijn hoofd heb, flash = program memory)
Het weg schrijven van text in een byte array, neemt veel RAM in beslag.
PS: Ik zal waarschijnlijk de text1 in quotes moeten zetten
symbol lcd1 = "text1"[Edit]
Dit zou ik natuurlijk ook kunnen doen met een eeprom
Ewrite 0, "text1"Maar wat ik dus eigenlijk wil is, dat in het flash geheugen.
Dit gaat dus als ik het goed heb begrepen met Symbol?!
[Bericht gewijzigd door flamingo op (24%)]
Stan1
Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}
Je kan geen teksten als symbol opslaan!
Je zou een Edata kunne gebruiken, tekst komt dan in de eeprom!
Dat dacht ik dus al.
Ik had nog even gekeken naar dat met de eeprom.
Ook met Edata.
Ik kwam er alleen niet achter hoe ik een text kan uitlezen.
Want als ik de eeprom uitlees, dan weet de PIC toch niet hoe groot de text is, en of het assci is of een byte.
(picbasic.nl)
EDATA 7, $FF, 256, %11000011, "ABC"
Om te laten zien hoe dit in het EEPROM geheugen komt pakken we de hokjes er weer even bij:
0-----------1------------2-----------3-----------4------------5-----------6-----------7
00000111-11111111-00000000-00000001-11000011-01000001-01000010-01000011
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Uit de manual:
4.9. String Constants
PBP doesn't provide string handling capabilities
Heel vreemd. Strings die nooit veranderen horen toch juist in flash thuis?
Zonde om daar RAM of EEProm voor op te offeren...
Stan1
Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}
In het manual staan goede voorbeelden, maar een voorbeeldje:
Tijdens de eerste initialisatie schrijf je de waarde in de eeprom!
LCD_1 Edata "Dit is een test."
LCD_2 Edata "Welkom bij ....."
LCD_3 Edata "Tot de volgende keer!"
Nu bevat dus LCD_1, LCD_2 en LCD_3 de start pointer van de betreffende tekst.
Door nu de start pointer (Charpos) te zetten op de juiste waarde en
dan naar het subje te springen word de juiste tekst op het scherm gezet.
Charpos = LCD_2 : Gosub DisplayText
' Subroutine to read and display the text held at the address in Charpos
DisplayText:
While 1 = 1 ' Create an infinite loop
Char = Eread Charpos ' Read the eeprom data
If Char = 0 Then Break ' Exit when null found
Print Char ' Display the character
Inc Charpos ' Move up to the next address
Wend ' Close the loop
Return ' Exit the subroutine
Bovenstaande komt trouwens gewoon uit de Proton Picbasic PDF!
Dat ziet er belovend uit.
Wel jammer dat we het niet in flash kunnen zetten, maarja dat is niet anders.
PS. Ik ben ook al de hele tijd de manual aan het doorneusen hoor.
Ik had dat stukje niet gevonden, Bedankt!
[Edit]
Moet er achter de LCD data niet ook nog een ,0? dus
LCD_1 Edata "dit is een text.",0OM Deze reden
If Char = 0 Then Break ' Exit when null foundDeze zoekt naar een 0, met de ,0 word een 0 achter de text gezet.
[Bericht gewijzigd door flamingo op (39%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Het kan wel via een omweg zag ik net:
http://www.picbasic.co.uk/forum/showthread.php?t=3891#LAB