Sari la conținut
ELFORUM - Forumul electronistilor

Prelucrare date achizitionate


Mircea

Postări Recomandate

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 :
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
  • Răspunsuri 45
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Liviu M

    19

  • Mircea

    15

  • merck

    6

  • modoran

    3

Top autori în acest subiect

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
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

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

Doar sa anunt ca Notepad++ face treaba buna cu fisierul text original (de la inceputul topicului).

 

6MRrCLe.png

LD11uZS.png

 

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 :n1

FJBWddu.png

'************************************************************************
' 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 de Mircea
Link spre comentariu

 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
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
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
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

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

Stiu, pe aia o foloseam si eu pana la postul din link. Dupa n-am mai folosit nimic ca m-am lenevit. :rade:

Mint, pe "cea noo" am folosit-o la voltampermetrul de-l postasem printr-un topic mai vechi.

Link spre comentariu

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 de Vizitator
Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări