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

📄 datalog.c

📁 老外开发的机器人的底层单片机代码。比较有参考价值哦!
💻 C
字号:
//  Data logging     DataLog.c					 Rev 9/1/05

//Copyright (C) 2005 Alex Brown	rbirac@cox.net
//This program is free software; See license at the end of this file for details.

/*
     To add (or subtract) signals from this list,  
	   add the extern variable declaration,
	   change the first printf in DataLogInit (number of data parameters)to
	     match whether you added or subtracted.
	   add the new parameter definitions to the list in DataLogInit(). The 
	     format is a name for the parameter followed by default minimum and 
		 maximum values for plotting.  These entries must be in the same order
		 as the subsequent printf in DataWrite().
	   add the new parameters to the sprintf in DataWrite(). Note that their
	     position in the sprintf must agree with their position in the 
		 parameter definition list.
		 
	 Additional datasets may be created using the same format. 	 
		 
	   If too many parameters are added to be printed in the background of
	     a single cycle,  you'll note that the time parameter will skip  a 
		 value occasionally.  The data printed will be good, you just won't 
		 get data for every cycle.	 	   
*/	   

#include <stdio.h>

extern int  time;
extern int 	MotorMode;
extern int 	AccMax;
extern int 	Vmax;
extern long DistTarget;
extern int 	Vtarget;
extern long SteeringCmd;
extern int 	SteerVcmd;
extern int 	SteerAccCmd;
extern int 	AccCmd;
extern int 	Vcmd;
extern long DistCmd,DistCmdL,DistCmdR;
extern int 	Speed,SpeedL,SpeedR;
extern long DistAct;
extern int 	pwmL;
extern int 	pwmR;
extern int 	StopFlag;
extern int 	DecelFlag;
extern int 	FwdModeDone;
extern int 	TurnModeDone;
extern int 	seqnumUSB;
extern int 	FwdModeUSB;
extern int 	TurnModeUSB;
extern int 	AccCmdL;
extern int 	VcmdL;
extern int 	DistErrL;
extern int 	DistErrR;
extern long DistActL;
extern long DistActR;
extern long D1;

extern long TurnTarget;
extern int 	TAccMax;
extern int 	TurnRateMax;
extern int 	TRtgt;
extern int 	TurnDecelFlag;
extern int 	TAccCmd;
extern int 	TurnRateCmd;
extern long TurnCmd;
extern int 	TurnToGo;
extern long TAccTemp;
extern long TAccTemp2;
extern long TV1;
extern long TD1;
extern int 	TurnStopFlag;
extern int 	NullAvg;
extern int 	hdgdeg;
extern long ratetemp;
extern long rateintg;
extern int 	Compass;
extern int 	hdgcorr;
extern int 	hdgdegtest;
extern long HdgTarget;
extern int 	HdgErr;
extern long TurnIC;

char Data [200];   	  // string to hold data values
int DataCase;	   	  // select data set 0 to 255
int DataLogOn = 0;		  // 1 = logging requested, 0 = off, 2 = in progress

void DataLogInit()
{  
   switch(DataCase)
   {
     case 0:
	 	printf("DataFile 1 61\n"); //1 time count per sample, 61/second
         	printf("21\n");	  //number of data parameters
		 //      "parameter min max"
		 printf("time   0  10000\n");
		 printf("MotorMode 0 5\n");
		 printf("AccMax -1000 1000\n");
		 printf("Vmax -500 500\n");
		 printf("Vtarget -500 500\n");
		 printf("DistTarget -10000 10000\n");
		 printf("SteeringCmd -100 100\n");
		 printf("AccCmd -1000 1000\n");
		 printf("Vcmd -500 500\n");
		 printf("DistCmdL -10000 10000\n");
		 printf("DistCmdR -10000 10000\n");
		 printf("SpeedL -500 500\n");
		 printf("SpeedR -500 500\n");
		 printf("DistActL -10000 10000\n");
		 printf("DistActR -10000 10000\n");
		 printf("pwmL -100 100\n");
		 printf("pwmR -100 100\n");
		 printf("DistErrL -20 20\n");
		 printf("DistErrR -20 20\n");
		 printf("StopFlag 0 3\n");
		 printf("seqnumUSB 0 50\n");
		 break;
		 
     case 1:		 
	 	 printf("DataFile 1 61\n"); //1 time count per sample, 61/second
         printf("16\n");	  //number of data parameters
		 //      "parameter min max"
		 printf("time   0  10000\n");
		 printf("HdgTarget 0 3600\n");
		 printf("HdgErr -1800 1800\n");
		 printf("hdgdeg 0 3600\n");
		 printf("TRtgt -600 600\n");
		 printf("TurnDecelFlag 0 3\n");
		 printf("TAccCmd -600 600\n");
		 printf("TurnRateCmd -600 600\n");
		 printf("TurnCmd -600 600\n");
		 printf("TurnToGo -600 600\n");
		 printf("TurnIC -1000 1000\n");
		 printf("TV1 -10000 10000\n");
		 printf("TD1 -10000 10000\n");
//		 printf("hdgerr -100 100\n");
		 printf("SteeringCmd -300 300\n");
		 printf("DistCmdL -2000 2000\n");
		 printf("DistCmdR -2000 2000\n");
//		 printf("NullAvg 17910 17940\n");
//		 printf("hdgcorr -50 50\n");
//		 printf("hdgdeg 0 3600\n");
//		 printf("Compass 0 3600\n");
//		 printf("hdgdegtest 0 3600\n");
//		 printf("ratetemp 17910 17940\n");
//		 printf("TurnModeDone 0 3\n");
		 break;
		 
	 default:
	     printf("\n\n !!! DataSet %d does not exist.\n\n",DataCase);	 
   }	 
}


void DataWrite()
{
  switch (DataCase)
   {
     case 0:
        sprintf(Data,"%d %d %d %d %d %ld %ld %d %d %ld %ld %d %d %ld %ld %d %d %d %d %d %d \n",
		time,MotorMode,AccMax,Vmax,Vtarget,DistTarget,SteeringCmd,AccCmd,Vcmd,
		DistCmdL,DistCmdR,SpeedL,SpeedR,DistActL,DistActR,pwmL,pwmR,DistErrL,DistErrR,
		StopFlag,seqnumUSB);
		break;
		
	 case 1:
	 	sprintf(Data,"%d %ld %d %d %d %d %d %d %ld %d %ld %ld %ld %ld %ld %ld\n",
		time,HdgTarget,HdgErr,hdgdeg,TRtgt,TurnDecelFlag,TAccCmd,TurnRateCmd,
		TurnCmd,TurnToGo,TurnIC,TV1,TD1,SteeringCmd,DistCmdL,DistCmdR);
		break;

	 case 2:
	 	sprintf(Data,"%d %d %d %d %ld %d %d %ld %ld %ld %ld %ld %ld %d %d %d %d\n",
		time,MotorMode,AccCmd,Vcmd,DistCmd,SteerAccCmd,SteerVcmd,SteeringCmd,
		TurnIC,DistCmdL,DistCmdR,DistActL,DistActR,DistErrL,DistErrR,pwmL,pwmR);
		break;
   }	
}

void DataPrint()
{
  switch(DataLogOn)
  {
   	case 0:		   	   //data logging off															
  	   break;
  
  	case 1:	 		   //data logging just turned on
  	   DataLogInit();  		  //print header 
	   DataLogOn = 2;		  //set to header complete
	   break;
	   
    case 2:	 	   	   //data logging initialized, 
  	   printf("%s",Data);     //print data string
	   break;
  }	   
}

//  OPEN SOURCE SOFTWARE LICENSE
/* Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to use, 
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 
Software, and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ 	

⌨️ 快捷键说明

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