📄 datalog.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 + -