merck Postat Iunie 30, 2021 Partajează Postat Iunie 30, 2021 Poate librariile tale nu-s ok, ca vad ca merge asa: buffer[8] = '°'; // put degree symbol FAT32_Write(fileHandle, buffer, 10); FAT32_Write(fileHandle, "\r\n", 2); // start a new line Dar merge si asa: fileHandle = FAT32_Open("DS18B20Log.txt", FILE_APPEND); if(fileHandle == 0){ UART1_Write_Text("OK"); // write some texts to 'DS18B20Log.txt' file FAT32_Write(fileHandle, " DATE | TIME | TEMPERATURE\r\n", 38); FAT32_Write(fileHandle, "(dd-mm-yyyy)|(hh:mm:ss)|\r\n", 26); FAT32_Write(fileHandle, " | |\r\n", 26); } Baga un ochi aici : https://simple-circuit.com/pic18f46k22-data-logger-ds18b20-sd-card/ si vezi ce nu-i in ordine la tine Singura diferenta care o vad este ca la tine ai FILE_APPEND_F32 si mai sus vad FILE_APPEND Link spre comentariu
Mircea Postat Iunie 30, 2021 Autor Partajează Postat Iunie 30, 2021 Adriane, stiu pagina aia, am trecut-o prin sita de nspe ori. La capitolul portare din C in Basic nu merge, si am mai facut portari. Link spre comentariu
merck Postat Iunie 30, 2021 Partajează Postat Iunie 30, 2021 Quote I am using the Mmc_Fat_write to write to a file on my SD card, but I cant find a way to write NewLine at the end of the string that works.. raspuns: Quote What happens if you stick 13 and 10 at the end of each string? ASCII not decimal. (For 'string' I assume you effectively mean a 'line' of charcaters which is terminated by CR + LF) Link spre comentariu
Liviu M Postat Iunie 30, 2021 Partajează Postat Iunie 30, 2021 Prin helpul lui mikrobasic pro e o pagina cu exemple si tot asa fac si ei, pun 10 in ultimul caracter. Adica '-------------- Opens an existing file and appends data to it ' (and alters the date/time stamp) sub procedure Open_File_Append filename[7] = "B" Cf_Fat_Assign(filename, 0) Cf_Fat_Set_File_Date(2009, 1, 23, 17, 22, 0) Cf_Fat_Append file_contents = " for mikroElektronika 2010" ' Prepare file for append file_contents[26] = 10 ' LF Cf_Fat_Write(file_contents, 27) ' Write data to assigned file end sub Importanta e a treia linie de jos in sus. Conform comentariului e line feed. Link spre comentariu
Mircea Postat Iunie 30, 2021 Autor Partajează Postat Iunie 30, 2021 (editat) Doar sa anunt ca Notepad++ face treaba buna cu fisierul text original (de la inceputul topicului). Acuma nu ma las pana nu le organizez direct pe card cum trebuie, multumesc tuturor pentru sugestii, toate au fost bine primite si sigur ma vor ajuta. Revin cu imbunatatirile cand sunt gata. LE: Asa parca mai merge '************************************************************************ ' Open to write/append some text in the Data1.txt file, then save/close SDCard_open_append() buffer = "Xaxis" SDCard_add_data() Delay_ms(10) buffer = "Yaxis" SDCard_add_data() Delay_ms(10) buffer = "Zaxis" SDCard_add_data() Delay_ms(10) buffer = "EOL" buffer[3] = 13 buffer[4] = 10 SDCard_add_data2() Delay_ms(10) SDCard_save_close() Delay_ms(10) '************************************************************************ NULL-urile le inlatura Excelul la import de date. Editat Iulie 1, 2021 de Mircea Link spre comentariu
Mircea Postat Iulie 1, 2021 Autor Partajează Postat Iulie 1, 2021 NULL-urile nu exista, cum convertesc rezultatul ADC-ului de 14b (deci folosesc un Word) in string, totul e aliniat in dreapta. Link spre comentariu
Liviu M Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 Ce-s alea NULL-uri? LE Stii ca mikrobasic are o biblioteca cu functii de convertit, da? Link spre comentariu
merck Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 1 hour ago, Liviu M said: Ce-s alea NULL-uri? In C, the end of a character string is designated by the \0 character. This is commonly known as the null terminator. Almost all string functions declared in the C library under <string.h> use this criteria to check or find the end of a string. C strings are terminated by the NUL byte ('\0') - this is implicitly appended to any string literals in double quotes, and used as the terminator by all standard library functions operating on strings. From this it follows that C strings can not contain the '\0' terminator in between other characters, since there would be no way to tell whether it is the actual end of string or not. Link spre comentariu
Mircea Postat Iulie 1, 2021 Autor Partajează Postat Iulie 1, 2021 6 hours ago, Liviu M said: Ce-s alea NULL-uri? LE Stii ca mikrobasic are o biblioteca cu functii de convertit, da? Pe care am folosit-o. WordToStr in cazul de fata. Incerc sa folosesc rar insa, caci consuma resurse. Cand tiparesc pe LCD prefer sa extrag caracter cu caracter si sa adun 48. Lucrand si cu float-uri, e de preferat sa lucrez asa caci altfel umplu aiurea ecranul. NULL e cand ai 2234 ; in loc de 2234; Adica un spatiu intre numar si delimitator. Link spre comentariu
modoran Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 NUL nu este tot aia cu spatiu. Link spre comentariu
Liviu M Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 Acum 3 ore, Mircea a spus: Cand tiparesc pe LCD prefer sa extrag caracter cu caracter si sa adun 48. Lucrand si cu float-uri, e de preferat sa lucrez asa caci altfel umplu aiurea ecranul. Fac trimitere la un post mai vechi, care contine un "algoritm" de conversie care ocupa resurse puntine. Formatarea s-a cam dus pe balarii, din pacate, asa ca-l repet aici. /* * Unsigned Binary to Decimal conversion. */ void uBin16_Dec(unsigned char* sptr, unsigned int Arg){ *sptr = 0; while (Arg > 10000){ Arg -= 10000; *sptr += 1; } sptr++; *sptr = 0; while (Arg > 1000){ Arg -= 1000; *sptr += 1; } sptr++; *sptr = 0; while (Arg > 100){ Arg -= 100; *sptr += 1; } sptr++; *sptr = 0; while (Arg > 10){ Arg -= 10; *sptr += 1; } sptr++; *sptr = (unsigned char)Arg; } Link spre comentariu
Mircea Postat Iulie 1, 2021 Autor Partajează Postat Iulie 1, 2021 Folosesc asta, evident in Basic. Un exemplu in C, caci sunt de pe telefon. void Display_Cap(unsigned int n){ Capacitance[0] = n/10000 + 48; Capacitance[1] = (n/1000)%10 + 48; Capacitance[3] = (n/100)%10 + 48; Capacitance[4] = (n/10)%10 + 48; Capacitance[5] = (T_Value*10)/153 + 48; Lcd_Cmd(_Lcd_Clear); Lcd_Out(1, 1, "C = "); Lcd_Out(1, 5, Capacitance); } Link spre comentariu
Liviu M Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 Stiu, pe aia o foloseam si eu pana la postul din link. Dupa n-am mai folosit nimic ca m-am lenevit. Mint, pe "cea noo" am folosit-o la voltampermetrul de-l postasem printr-un topic mai vechi. Link spre comentariu
Vizitator Postat Iulie 1, 2021 Partajează Postat Iulie 1, 2021 (editat) Putin mai sus este prezentată o idee pentru a folosi resurse minime ale uC. Dacă vrea să puntem uC la treabă, putem scrie condensat toată rutina intr-o singura linie: for(i=0;i<5;i++) Capacitance[i]=(int)(n/pow(10,4-i)) % 10 + '0'; Editat Iulie 1, 2021 de Vizitator 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