⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps.c

📁 gps.c:GPS主代码 constant.h:GPS的头文件 PC temperature control .c:电脑温度控制 code.c:数字血压计的代码 Computer side.c
💻 C
📖 第 1 页 / 共 3 页
字号:
   printf(" res: %i" , (int) res[1]);
   printf(" res: %i" , (int) res[2]);
   printf(" res: %i" , (int) res[3]);
   putchar('\r');
   putchar('\n');
   printf(" checksum: %i",  checksum[0]);
   printf(" checksum: %i",  checksum[1]);
   printf(" checksum: %i",  checksum[2]);
   printf(" checksum: %i",  checksum[3]); 
   putchar('\r');
   putchar('\n'); 
   printf(" creturn: %i",  creturn[0]);
   printf(" creturn: %i",  creturn[1]);
   printf(" creturn: %i",  creturn[2]);
   printf(" creturn: %i",  creturn[3]); 
   putchar('\r');
   putchar('\n'); 
   printf(" cnewline: %i", (int) cnewline[0]);
   printf(" cnewline: %i", (int) cnewline[1]);
   printf(" cnewline: %i", (int) cnewline[2]);
   printf(" cnewline: %i", (int) cnewline[3]);   
   putchar('\r');
   putchar('\n'); 
   end 
//***********************************************************************
void SendSatellitesCoordinates(void)
begin
int temp=0;  
putchar('L');
printf("Atmega32 Processor Calculated Coordinates:");
putchar('\r');
putchar('\n');  
printf("ECEF Coordinates:");
putchar('\r');
putchar('\n');  
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",(PRN[0]+1),satellitesECEFx[0], satellitesECEFy[0],satellitesECEFz[0] );
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",(PRN[1]+1), satellitesECEFx[1], satellitesECEFy[1],satellitesECEFz[1]);
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",(PRN[2]+1), satellitesECEFx[2], satellitesECEFy[2],satellitesECEFz[2] );
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",(PRN[3]+1), satellitesECEFx[3], satellitesECEFy[3],satellitesECEFz[3] );
putchar('\r');
putchar('\n'); 
printf("WGS84 Coordinates:");
putchar('\r');
putchar('\n');  
printf("PRN # %d -> long: %f lat %f alt: %f ",(PRN[0]+1),satelliteslon[0], satelliteslat[0],satellitesalt[0] );
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> long: %f lat %f alt: %f ",(PRN[1]+1),satelliteslon[1], satelliteslat[1],satellitesalt[1] );
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> long: %f lat %f alt: %f ",(PRN[2]+1),satelliteslon[2], satelliteslat[2],satellitesalt[2] );
putchar('\r');
putchar('\n'); 
printf("PRN # %d -> long: %f lat %f alt: %f ",(PRN[3]+1),satelliteslon[3], satelliteslat[3],satellitesalt[3] );
putchar('\r');
putchar('\n'); 
printf("Thales DG16 Coordinatesand Pseudo-ranges:");
putchar('\r');
putchar('\n');
printf("Current GPS Time in milliseconds:  %ld" ,   currentTime); 
putchar('\r');
putchar('\n');
printf("Total Number of Satellites Locked :  %d" ,   totalsatellites);
putchar('\r');
putchar('\n');
temp=sv[0];
printf("Pseudo-range(in meters) for PRN % d:  %f" ,  temp,  range[0]*3*100000000);
putchar('\r');
putchar('\n');  
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",temp,ReceiverECEFx[0], ReceiverECEFy[0],ReceiverECEFz[0] );
putchar('\r');
putchar('\n');  
temp=sv[1];
printf("Pseudo-range(in meters) for PRN % d:  %f" ,  temp,  range[1]*3*100000000);
putchar('\r');
putchar('\n');  
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",temp,ReceiverECEFx[1], ReceiverECEFy[1],ReceiverECEFz[1] );
putchar('\r');
putchar('\n'); 
temp=sv[2]; 
printf("Pseudo-range(in meters) for PRN % d:  %f" ,  temp,  range[2]*3*100000000);
putchar('\r');
putchar('\n');  
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",temp,ReceiverECEFx[2], ReceiverECEFy[2],ReceiverECEFz[2] );
putchar('\r');
putchar('\n');  
temp=sv[3];
printf("Pseudo-range(in meters) for PRN % d:  %f" ,  temp,  range[3]*3*100000000) ;
putchar('\r');
putchar('\n');  
printf("PRN # %d -> ECEFx: %f ECEFy %f ECEFz: %f ",temp,ReceiverECEFx[3], ReceiverECEFy[3],ReceiverECEFz[3] );
putchar('\r');
putchar('\n');  
 end
//***********************************************************************
void SendSatellitesPositions(void)
begin
printf("S%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e\r\n", satelliteslon[0], satelliteslat[0],satellitesalt[0],((float)PRN[0]+1.0), satelliteslon[1], satelliteslat[1],satellitesalt[1],((float)PRN[1]+1.0), satelliteslon[2], satelliteslat[2],satellitesalt[2],((float)PRN[2]+1.0), satelliteslon[3], satelliteslat[3],satellitesalt[3],((float)PRN[3]+1.0));
putchar('\r');
putchar('\n'); 
end                                                     
//***********************************************************************
void SendReceiverPositions(void)
begin
int i=0; 
  while(i<totalsatellites)
  begin
  latlong(ReceiverECEFx[i],ReceiverECEFy[i],ReceiverECEFz[i],i,0);
  i++;
  end  
printf("N%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e\r\n", Receiverlon[0], Receiverlat[0],Receiveralt[0],(float)sv[0], Receiverlon[1], Receiverlat[1],Receiveralt[1],(float)sv[1], Receiverlon[2], Receiverlat[2],Receiveralt[2],(float)sv[2], Receiverlon[3], Receiverlat[3],Receiveralt[3],(float)sv[3]);
putchar('\r');
putchar('\n'); 
end                                                                       
//***********************************************************************
void SendNavigationalSolution(void)
begin
int i=0; 
  while(i<totalsatellites)
  begin
  latlong(ReceiverECEFx[i],ReceiverECEFy[i],ReceiverECEFz[i],i,0);
  i++;
  end  
printf("P%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e,%e\r\n", Receiverlon[0], Receiverlat[0],Receiveralt[0],(float)sv[0], Receiverlon[1], Receiverlat[1],Receiveralt[1],(float)sv[1], Receiverlon[2], Receiverlat[2],Receiveralt[2],(float)sv[2], Receiverlon[3], Receiverlat[3],Receiveralt[3],(float)sv[3]);
putchar('\r');
putchar('\n'); 
end   
//***********************************************************************
void SendPackage(void)
begin 
GoIntoDaisyChainmode();        
SendEphem();
SendSatellitesCoordinates();
SendReceiverPositions();
SendSatellitesPositions();
solvePos();
//SendNavigationalSolution();
GoOutofDaisyChainmode();
end

/*
 *The following fucntions ar responsible for quering or setting  
 *parameters of the GPS receiver.
 *
 */
//*****************************************************
void GoIntoDaisyChainmode(void)
begin
printf("$PASHS,DSY,A,B\r\n");
end
//****************************************************
void GoOutofDaisyChainmode(void)
begin
printf("$PASHS,DSY,OFF\r\n");
end
//****************************************************
void GetEphem(void)  
begin
printf("$PASHQ,SNV,A\r\n"); 
end
//****************************************************  
void GetCurrentTime(void)
begin
printf("$PASHQ,XYZ,A\r\n"); 
end 
/*
 *The following fucntions ar responsible for reading 
 *different types of data from the GPS receiver.
 *
 */
//****************************************************
 float ReadFloat(void)
 begin 
 char float_buffer[4];
 float temp=0;
 float_buffer[3]=getchar(); 
 float_buffer[2]=getchar(); 
 float_buffer[1]=getchar(); 
 float_buffer[0]=getchar();  
 memcpy(&temp,float_buffer,4);
 return temp;
 end
 //****************************************************
 char  ReadChar(void)
 begin 
 char temp;
 temp= getchar(); 
 return temp;
 end
 //****************************************************
 unsigned long  ReadLong(void)
 begin 
 unsigned long   temp=0;
 unsigned long temp1=0;
 temp=temp|(((unsigned long)getchar()))<<24; 
 temp1=temp1|(((unsigned long)getchar()))<<16;
 temp= (temp|temp1);
 temp1= temp1|(((unsigned long) getchar()))<<8;
 temp=temp|temp1;
 temp=temp|((unsigned long)getchar()); 
 return  temp;
 end 
 //**************************************************** 
 float ReadDouble(void)
 begin 
 unsigned char double_buffer[8];
 unsigned char double_buffer2[8];		
 float temp=0;  
 unsigned char temp0=0; 
 unsigned int temp1=0;
 unsigned char temp2=0;
 unsigned int  temp3=0;
 unsigned long  temp4=0;  
 unsigned long temp5=0;
 unsigned long  temp6=0;  
 unsigned long  temp7=0;
 unsigned long E=0;
 unsigned long S=0;
 unsigned long F=0; 
 unsigned long V=0; 
 
 double_buffer[0]=getchar();//seeeeeee 
 double_buffer[1]=getchar();//eeeeffff 
 double_buffer[2]=getchar();//ffffffff 
 double_buffer[3]=getchar();//ffffffff 
 double_buffer[4]=getchar();//ffffffff 
 double_buffer[5]=getchar(); 
 double_buffer[6]=getchar(); 
 double_buffer[7]=getchar();  


 S=(((unsigned long)double_buffer[0])<<24)&0b10000000000000000000000000000000;//s0000000000000000000000000000000   
 temp0= double_buffer[0];     //seeeeeeee
 temp1= (int)temp0;           //00000000seeeeeee
 temp1=temp1<<9;              //eeeeeee000000000
 temp2=double_buffer[1];      //eeeeffff 
 temp2=temp2&0b11110000;      //eeee0000
 temp3=((unsigned int)temp2)<<1;       //0000000eeee00000
 temp3=temp3|temp1;           //eeeeeeeeeee00000 
 temp3=temp3>>5;               //00000eeeeeeeeeee  
 temp3=temp3-1023+127;        //offsets
 E=((unsigned long )((unsigned char)temp3))<<23;                  //0eeeeeeee00000000000000000000000 in float
 
 temp4 =(unsigned long )double_buffer[1];                //000000000000000000000000eeeeffff 
 temp4=temp4<<28 ;                                 //ffff0000000000000000000000000000 
 temp5= (unsigned long )double_buffer[2]<<(16+4);        //0000ffffffff00000000000000000000
 temp6= (unsigned long )double_buffer[3]<<(8+4) ;        //000000000000ffffffff000000000000
 temp7= (unsigned long )double_buffer[4] <<4;            //00000000000000000000ffffffff0000
 temp7=temp7|temp6|temp5|temp4;                    //ffffffffffffffffffffffffffff0000
 F=(temp7&0b11111111111111111111111000000000)>>9;    //000000000fffffffffffffffffffffff 
 V=S|E|F;
 
 double_buffer2[3]= (char)(V>>24);
 double_buffer2[2]= (char)((V>>16)&0b00000000000000000000000011111111);
 double_buffer2[1]= (char)((V>>8)&0b00000000000000000000000011111111);
 double_buffer2[0]= (char)(V&0b00000000000000000000000011111111);
 memcpy(&temp,double_buffer2,4);
 return temp;
end    
 //**************************************************** 
 int ReadShort(void)
 begin
 int temp=0;
 temp=(temp|getchar())<<8;
 temp=temp|getchar();  
 return temp;  
 end


 /*
  *The following fucntions ar responsible for parsing 
  *responses form  the GPS receiver.
  *
  */
  //**************************************************** 
void ParseEphem(char l)  
begin 

//response
char a[11];
int i=0;         
   while(i<11)
   begin
   a[i++]=getchar();
   end   
 //" wn: "  
    wn[l]=ReadShort();
//" tow: "
    tow[l]=ReadLong();  
//" tgd: "    
    tgd[l]=ReadFloat(); 
//" aodc: "
    aodc[l]=ReadLong(); 
//" toc: "
    toc[l]=ReadLong(); 
//" af2: " 
    af2[l]=ReadFloat();
//" af1: "
    af1[l]=ReadFloat();
//" af0: "  
    af0[l]=ReadFloat();
//" aode: "  
    aode[l]=ReadLong(); 
//" deltan: "  
    deltan[l]=ReadFloat();
//" m0: "  
    m0[l]=ReadDouble();  
//" e: " 
    e[l]= ReadDouble();  
//" roota: "
    roota[l]=ReadDouble();
//" toe: "  
    toe[l]=ReadLong();
//" cic: " 
    cic[l]=ReadFloat();
//" crc: " 
    crc[l]=ReadFloat();
//" cis: "
    cis[l]=ReadFloat();
//" crs: "
    crs[l]=ReadFloat(); 
//" cuc: "
    cuc[l]=ReadFloat();
//" cus: "
    cus[l]=ReadFloat();
//" omega0: "
    omega0[l]=ReadDouble();
//" omega: "   
    omega[l]=ReadDouble();
//" i0: "    
    i0[l]=ReadDouble();
//" omegadot: "
    omegadot[l]=ReadFloat();          
//" idot: " 
    idot[l]=ReadFloat();
//" accuracy: "
    accuracy[l]=ReadShort();
//" health: " 
    health[l]=ReadShort();     
//" fit: "    
    fit[l]=ReadShort();
//" PRN: "
    PRN[l]=ReadChar();
//" res: " 
    res[l]=ReadChar();
//" checksum: "  
    checksum[l]=ReadShort();
//" creturn: "    
    creturn[l]=ReadChar(); 
//" cnewline(): "    
    cnewline [l]=ReadChar();     
end    
//********************************************************** 
void ParseCurrentTime(void)
begin 
char a[11]; 
int i=0;
   //response         
   while(i<11)
   begin
   a[i++]=ReadChar(); 
   end
 //" currentTime: "
  currentTime= ReadLong();  
 //"totalsatellites: " 
  totalsatellites=ReadShort();
  i= 0 ;
  while(i<totalsatellites)
  begin
  sv[i]=ReadShort();  //sv
  ReceiverECEFx[i]=ReadDouble(); // x
  ReceiverECEFy[i]=ReadDouble(); // y
  ReceiverECEFz[i]=ReadDouble(); // z
  range[i]=ReadDouble(); // r
  i++;
  end   
  checksum1= ReadShort();//checksum   
  creturn1=ReadChar();
  cnewline1=ReadChar();
  
end  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -