main_imu, MPU6050 , racolta_dati sono per il funzionamento dell' accelerometro. my_img_sd è una libreria per gestire i dati su un sd sulla quale vengono forniti solamente le funzioni di lettura e scrittura a blocchi i file trasmetti sono la definizione e implementazione delle funzioni del protoccolo per la gestione dell' invio dei dati con il relativo formato
Dependencies: mbed
trasmetti.cpp
00001 #define tra_cpp 00002 #include "trasmetti.h" 00003 #include <cstring> 00004 //#include <iostream> 00005 00006 namespace mydati{ 00007 00008 00009 00010 bool trasmetti::ins_in_testa(pacco* d,char priorita){ 00011 coda* app; 00012 app =new coda; 00013 if(!app)return false; 00014 app->dato=d; 00015 app->priorita=priorita; 00016 n++; 00017 app->suc=testa; 00018 testa=app; 00019 delete [] d->txt; 00020 return true; 00021 00022 } 00023 bool trasmetti::ins_in_coda(pacco* d,char priorita){ 00024 00025 coda* app; 00026 app =new coda; 00027 if(!app)return false; 00028 // pc.printf("funzione ins coda 1 \r\n"); 00029 00030 app->dato=d; 00031 00032 /* 00033 app->dato=new pacco; 00034 app->dato->n=d->n; 00035 app->dato->txt=new char[d->n]; 00036 strcpy(app->dato->txt,d->txt); 00037 delete [] d->txt; 00038 */ 00039 00040 if(!n){testa=fine=app; n++;return true;} 00041 //pc.printf("funzione ins coda 3 \r\n"); 00042 fine->suc=app; 00043 fine=app; 00044 fine->suc=0; 00045 n++; 00046 return true; 00047 }; 00048 bool trasmetti::ins_priorita(pacco* d,char priorita){ 00049 00050 coda* app; 00051 app =new coda; 00052 if(!app)return false; 00053 app->dato=d; 00054 00055 app->priorita=priorita; 00056 00057 if(!n){app->suc=0;testa=fine=app; n++;return true;} 00058 if(testa->priorita<priorita){n++;app->suc=testa; testa=app;return true;} 00059 00060 coda* cerca = testa; 00061 if(n!=1){ bool tr =true; 00062 while(cerca->suc->suc!=0&&tr) 00063 if(cerca->suc->priorita>=priorita) 00064 { 00065 cerca=cerca->suc; 00066 } 00067 else tr=false; 00068 00069 app->suc=cerca->suc; 00070 cerca->suc=app; 00071 n++; 00072 return true; 00073 } 00074 fine->suc=app; 00075 fine=app; 00076 fine->suc=0; 00077 n++; 00078 return true; 00079 }; 00080 00081 bool trasmetti::invio(){ // iovio i dati! 00082 00083 if(!n)return false; 00084 pacco* app; 00085 extract(&app); 00086 00087 if(!pc_trasmisione(app->n,app->txt))return false; 00088 delete [] app->txt; 00089 delete app; 00090 00091 return true; 00092 } 00093 void trasmetti::extract(pacco** d){ 00094 if(n!=0){ 00095 00096 coda* app=testa; 00097 *d=testa->dato; 00098 testa=testa->suc; 00099 n--; 00100 00101 delete app; 00102 } 00103 00104 } 00105 bool dati_imu::invia(char p){ 00106 //da agiungere una stringa per il protocolla dei tipo dei dati... 00107 //es #nomeclasse@dati 00108 pacco* app; 00109 app= new pacco; 00110 app->n=nb_classe; 00111 app->txt=new char[nb_classe+1]; 00112 sprintf(app->txt,"A%03.0f%03.0f%03.0f%04.0f%04.0f%04.0f#%d",1000*ax+off_set_a,1000*ay+off_set_a,1000*az+off_set_a,10*gx+off_set_g,10*gy+off_set_g,10*gz+off_set_g,number()); 00113 00114 00115 //app->txt=buffer; 00116 /* 00117 app->txt=new char[strlen(buffer)+1]; 00118 //printf("ximu %d X \n",strlen(buffer)); 00119 strcpy(app->txt,buffer); 00120 */ 00121 //*funzione se si vuole usare la trasmisione binaria 00122 //memcpy((void*)app->txt,(void*)this,nb_classe); 00123 00124 00125 00126 return telemetria.ins_in_coda(app,p); 00127 } 00128 00129 00130 00131 00132 bool estensimetro::invia(char p){ 00133 pacco* app; 00134 app= new pacco; 00135 app->n=nb_classe; 00136 app->txt=new char[nb_classe+1]; 00137 sprintf(app->txt,"B%04.0f%04.0f%04.0f%04.0f#%d",ad,as,pd,ps,number()); 00138 00139 00140 00141 return telemetria.ins_in_coda(app,p); 00142 } 00143 00144 bool ruota_fonica::invia(char p){ 00145 pacco* app; 00146 app= new pacco; 00147 app->n=nb_classe; 00148 app->txt=new char[nb_classe+1]; 00149 00150 sprintf(app->txt,"C%04.0f%04.0f%04.0f%04.0f#%d",ad,as,pd,ps,number()); 00151 //sprintf(app->txt,"C%04.0f%04.0f#%d",ad,as,pd,ps,number()); 00152 00153 00154 return telemetria.ins_in_coda(app,p); 00155 } 00156 00157 bool motore::invia(char p){ 00158 pacco* app; 00159 app= new pacco; 00160 app->n=nb_classe; 00161 //char buffer[50]; 00162 app->txt=new char[nb_classe+1]; 00163 00164 00165 if(P_olio>10){pc.printf("errore olio troppo alto");P_olio=9.9;} 00166 00167 if(velocita>10000){pc.printf("errore velocita troppo alta!");velocita=9999;} 00168 //D 2000 7700 80800 9400 22 5#2 00169 sprintf(app->txt,"D%03d%03d%05.0f%04.0f%02.0f%d#%d",T_acqua,T_olio,RMP,velocita,10*P_olio,marcia,number()); 00170 // pc.printf("funzione motore.invia \r\n"); 00171 return telemetria.ins_in_coda(app,p); 00172 } 00173 bool allert::invia(const char* s){ 00174 00175 00176 pacco* app; 00177 app= new pacco; 00178 app->n=strlen(s+1); 00179 //app->txt=new char[app->n+1]; 00180 app->txt=(char*)s; 00181 00182 return telemetria.ins_in_testa(app); 00183 } 00184 } 00185
Generated on Sun Jul 17 2022 15:08:00 by 1.7.2