Liviu M Postat Iulie 26, 2011 Partajează Postat Iulie 26, 2011 Nu cred ca merge asa Lcdtext Volt , 20 , 30 , 1 , 0 , 0.Ai putea incerca asta'Locate 1 , 1Lcdtext "8X8 font=" , 10 , 32 , 2 , 0 , 0Locate 5 , 17Lcd Fusing(volt , "#.##") Da' de ce nuLcdtext Fusing(volt , "#.##"), 10, 50, 2, 0, 0 ?Eventual varianta mai "detaliata":Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##") 'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0. Link spre comentariu
iulian2010 Postat Iulie 26, 2011 Partajează Postat Iulie 26, 2011 Ma refeream strict la acea linie. Nu am avut prea mult timp sa testez codul lui Cilibiu.Am obervat ca varianta aleasa de tine este buna. Variabila poti sa o declari Dim Texttolcd As String * 6. Link spre comentariu
Cilibiu Postat Iulie 26, 2011 Autor Partajează Postat Iulie 26, 2011 Asa am presupus si eu ca merge dar nu merge, si nici acum numi dau seama de ce! Da' de ce nu Lcdtext Fusing(volt , "#.##"), 10, 50, 2, 0, 0 ? Eroare bascom 130 Eventual varianta mai "detaliata": Cod:Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##") 'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0 Eroare bascom 223,46,124 Prin manualul de la bascom gasit pe intrenet scrie ca STRAction Returns a string representation of a number. Syntax var = STR( x) Poti sa-l incerci in locul lui Fusing, sa vezi daca reuseti sa convertesti rezultatul in string; am inteles ca pe astea le poti afisa. Habar nu am cum sa integrez comanda asta, daca ai da un exemplu sa ma orientez ar fi bine! Link spre comentariu
iulian2010 Postat Iulie 26, 2011 Partajează Postat Iulie 26, 2011 $regfile = "m128def.DAT"$crystal = 8000000$baud = 19200$hwstack = 100$swstack = 120$framesize = 100Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6Cursor OffClsDeclare Sub Lcdtext(byval S As String , Byval Xoffset As Byte , Byval Yoffset As Byte , Byval Fontset As Byte , Byval Inverse As Byte , Byval Rotation As Byte)Dim Adcv As Word , Volt As SingleConst Dif = 5 / 1024Const Volt_div = 0.01Config Adc = Single , Prescaler = Auto , Reference = AvccStart AdcClsDoAdcv = Getadc(0) ' 0 = ADC0 Waitms 50 'Calcul Volt = Adcv * Dif Volt = Volt / Volt_div'Lcdtext Volt , 20 , 30 , 1 , 0 , 0'locate 1,1'lcd voltDim Texttolcd As String * 6TextToLcd = Fusing(volt, "#.##") 'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0LoopEnd'=== Sub Routines ===Sub Lcdtext(byval S As String , Xoffset As Byte , Yoffset As Byte , Fontset As Byte , Inverse As Byte , Rotation As Byte)Local Tempstring As String * 1 , Temp As Byte 'Dim local the variablesLocal A As Byte , Pixels As Byte , Count As Byte , Carcount As Byte , Lus As ByteLocal Row As Byte , Byteseach As Byte , Blocksize As Byte , Dummy As ByteLocal Colums As Byte , Columcount As Byte , Rowcount As Byte , Stringsize As ByteLocal Xpos As Byte , Ypos As Byte , Pixel As Byte , Pixelcount As ByteStringsize = Len(s) - 1 'Size of the text string -1 because we must start with 0For Carcount = 0 To Stringsize 'Loop for the numbers of caracters that must be displayedIf Fontset = 1 Then Restore Font16x16 'Add or remove here fontset's that you need or not,If Fontset = 2 Then Restore Font16x16 'this is the name that you gave to the font, NOT the filename'If Fontset = 3 Then Restore Font16x16 'If you dont know the name, open the font file in wordpad, and there it is,'If Fontset = 4 Then Restore Font16x16 'right on top.Temp = Carcount + 1 'Cut the text string in seperate caractersTempstring = Mid(s , Temp , 1)Read Row : Read Byteseach : Read Blocksize : Read Dummy 'Read the first 4 bytes from the font fileTemp = Asc(tempstring) - 32 'Font files start with caracter 32For Lus = 1 To Temp 'Do dummie read to point to the correct line in the fontfile For Count = 1 To Blocksize Read Pixels Next CountNext LusColums = Blocksize / Row 'Calculate the numbers of columsRow = Row * 8 'Row is always 8 pixels high = 1 byte, so working with row in steps of 8.Row = Row - 1 'Want to start with row=0 instead of 1Colums = Colums - 1 'Same for the columsSelect Case Rotation Case 0 '0 degrees rotation For Rowcount = 0 To Row Step 8 'Loop for numbers of rows A = Rowcount + Yoffset For Columcount = 0 To Colums 'Loop for numbers of Colums Read Pixels : If Inverse = 1 Then Toggle Pixels 'Read the byte from the file and if inverse = true then invert de byte Xpos = Columcount 'Do some calculation to get the caracter on the correct Xposition Temp = Carcount * Byteseach Xpos = Xpos + Temp Xpos = Xpos + Xoffset For Pixelcount = 0 To 7 'Loop for 8 pixels to be set or not Ypos = A + Pixelcount 'Each pixel on his own spot Pixel = Pixels.0 'Set the pixel (or not) Pset Xpos , Ypos , Pixel 'Finaly we can set the pixel Shift Pixels , Right 'Shift the byte 1 bit to the right so the next pixel comes availible Next Pixel Next Columcount Next RowcountEnd SelectNext CarcountEnd Sub 'End of this amazing subroutine'=== Includes ===$include "Font16x16.font" 'Includes here your font files$include "font8x8.font" Link spre comentariu
Cilibiu Postat Iulie 26, 2011 Autor Partajează Postat Iulie 26, 2011 Mersi ....... Functioneaza Eu reusisem ceva, nu mai dea erori cu urmatorul cod: dar nu afisa ce trebuia! Volt As SingleDim S As String * 10Lcdtext S , 10 , 32 , 1 , 0 , 0S = Str(volt)Umplea randul cu patratele, in fine am reusit cu ajutorul tau, acum pot sa ma apuc sa creez codul final al proiectului, mersi mult inca o data, esti tare si le ai Link spre comentariu
iulian2010 Postat Iulie 26, 2011 Partajează Postat Iulie 26, 2011 Bravo!Eu am incercat doar sa te ajut cu ceva linii de cod pe care si eu le-am descarcat de pe diverse site-uri.Toti avem de invatat din aceste erori. Acesta este si rolul forumului, de a ajuta si de a ne perfectiona. Eu cred ca meritul este al tuturor celor care vin cu idei si inclusiv al tau! Link spre comentariu
Liviu M Postat Iulie 26, 2011 Partajează Postat Iulie 26, 2011 Felicitari pentru reusita! Eventual varianta mai "detaliata": Cod:Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##") 'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0 Eroare bascom 223,46,124Eu nu stiu nici basic, nici bascom, asa ca ma asteptam ca in cazul unei erori de sintaxa sa te prinzi si sa o corectezi singur.Cred ca problemele vin de la definirea lui TextToLcd; asa cum zicea iulian2010 mai sus, probabil trebuia data dimensiunea stringului (*6):Cod:Dim TextToLcd as String * 6 Link spre comentariu
Cilibiu Postat Iulie 27, 2011 Autor Partajează Postat Iulie 27, 2011 Multumesc inca o data de ajutor, eu stau cam prost la aceste definiri, inca nu am inteles treaba cu biti, de ex: byte inseamna 8 biti, bit = 1 bit, word parca 16 biti, dar nu stiu la ce se refera biti respectivi, de unde vin biti si cum sunt generati, de exemplu string parca este 1024 dar *6= 6144 biti, de ce merge pe 6144 de biti si nu pe 10240 biti, asta daca era *10? Astea trebuie sa le mai studiez si sa le invat , ca sa stiu ce trebuie folosit in comanda!In rest ma ajuta help-ul, dar cum am zis si mai sus , nu ma ajuta in proportie de 100%, restul trebuie sa caut,sa invat si sa cer ajutor cand nu reusesc, cea ce am facut.Inca o data multe multumiri! Link spre comentariu
godFather89 Postat Iulie 27, 2011 Partajează Postat Iulie 27, 2011 Bitii sunt unitati de memorie. Un bit poate avea doua valori: 0 sau 1, deci reprezinta o stare logica: fals sau adevarat.Pentru o grupare de 2 biti, ai deja 4 valori posibile (2^2) (00, 01, 10, 11).Un byte este alcatuit din 8 biti (de aici si denumirea romaneasca : octet) deci poate avea, la un moment dat, o valoare din 256 (2^8).Un word este alcatuit din 2 octeti sau 16 biti. Rezulta o plaja mai mare de valori - 65536 in total.Stringul, este o grupare de caractere. In functie de encondingul (ASCII, Unicode, UTF, etc.) folosit de compilator, difera si dimensiunea efectiva din memorie. Banuiesc ca bascomul tine un caracter in 8 biti de memorie (adica un byte) deci un string de 10 caractere ocupa 10 octeti de memorie (80 de biti). Link spre comentariu
Liviu M Postat Iulie 27, 2011 Partajează Postat Iulie 27, 2011 Completare la spusele godFather89 (bine formulate altminteri ), cand vrei sa folosesti o variabila string, e bine sa-i spui compilatorului cate caractere are cel mai lung text pe care vrei sa-l memorezi in acea variabila, ca sa stie cata memorie sa rezerve. De aici acel *6 (banuiesc, dupa cum ziceam, basicul nu e punctul meu forte). Link spre comentariu
Cilibiu Postat Iulie 27, 2011 Autor Partajează Postat Iulie 27, 2011 Multumesc de ajutor si de indrumare, am inceput sa prind ideea cum functioneaza, deci sa inteleg daca eu definesc "S" ca word, eu ma pot baza pe vloarea de 16 biti, daca incerc sa depasesc valoarea de 16 biti apare eroare bascom si trebuie redefinit "S", deci sa inteleg ca la mine TEXTTOLOAD trebuia definit asa mare deoarece find un display grafic , necesita multi biti pentru afisarea acelui cuvant, iar aici SPATIUL necesar lui "TEXTTOLOAD" logic ca trebuie mare care este definit prin numarul de biti, iar ca sa ajung la un numar mare folosesc variabila (daca am zis bine) STRING care este 255 biti (valoare luata din help-ul bascomului "Since a string is terminated by a 0 byte, you can't use 0 for n.Using 0 for m will result in a string of 255 bytes, because there is no check on a length assign of 0." asta daca am inteles eu bine) iar valoarea inmultita cu 6 rezulta 1530 de biti , adik spatiul necesar stocari lui TEXTTOLOAD.Am inteles bine? Eu sper ca da! Multumesc tuturor! Link spre comentariu
Liviu M Postat Iulie 27, 2011 Partajează Postat Iulie 27, 2011 Nu-mi dau seama daca chiar ai inteles, asa ca incerc inca o data.Ca sa pastrezi un text oarecare in memorie si sa-l folosesti in diverse locuri, iti trebuie o variabila care pentru fiecare litera din text sa aloce un byte in memorie (si la unele compilatoare un caracter special, de" sfarsit de text"). In cazul lui volt al tau, presupunand ca e de forma ##.##, (doua cifre inainte si doua dupa punct), iti trebuie minim 5 bytes - 4 bytes pentru cifre si unul pentru punct. 6 ala din exemplul meu e "acoperitor" (nu stiu daca trebuie si caracter "terminatie" sau nu).Numele variabilei n-are nici o legatura cu lungimea textului memorat in ea. Link spre comentariu
Cilibiu Postat Iulie 28, 2011 Autor Partajează Postat Iulie 28, 2011 Da, asta am inteles! Mersi inca o data de alta varianta de a explica! Link spre comentariu
Cilibiu Postat Iulie 28, 2011 Autor Partajează Postat Iulie 28, 2011 Inca o data revin cu o problema, vreau sa afisez o imagine, mam documentat si am invatat si inteles cum functioneaza, dar problema mea este ca nu afiseaza ce trebuie, despre btm nu zice nimik, dar ma gandesc ca nu trebuie sa fie mai mare decat rezolutia ecranului,cea ce am tinut cont, am incercat variantele, 24 bit, 256 color, 16 color, monocrome, si tot nimik. Mai jos codul precum si poze cu ce trebuie sa afiseze si ce afiseaza. Va multumesc inca o data de ajutorul acordat, despre afisarea imagini nu zice prea multe in help, iar pe net nu am gasit nimik despre bgf, de facut imaginea in fisier bgf stiu sa fac. Cea ce numi iese mie este afisarea! $regfile = "m128def.DAT"$crystal = 8000000$baud = 19200$hwstack = 100$swstack = 120$framesize = 100Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8Dim X As Byte , Y As ByteCursor OffClsShowpic 1 , 1 , YopEndYop:$bgf "yo.bgf"Am pus imaginea bgf in folderul care este .bas. In bascom numi da eroare. Link spre comentariu
Liviu M Postat Iulie 28, 2011 Partajează Postat Iulie 28, 2011 Vad ca la tine poza e .jpg. Tot asa era si cand ai convertit-o in bgf, sau ai convertit un bitmap (bmp)?Ca din cate am gasit eu pe internet, poza de convertit trebuie sa fie a/n in format .bmp. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum