我是CAPL语言的新手。因此,我在将数据写入.txt文件时遇到问题。这是我写的代码:
includes
{
}
variables
{
message Generate_Num Gen;
message Logger Logs;
msTimer tim_100ms;
msTimer tim_500ms;
int time_over; // 500 ms flag.
dword handle=0;
float val=0;
long index=0;
int val_arr[512];
}
on start
{
time_over=0;
setWritePath("C:\\Users\\Türker\\Desktop\\soft_pro");
handle= openFileWrite("Log.txt",1);
Gen.Num_Data=1;
}
on envVar Logger_Sw
{
if(@this)
{
setTimer(tim_500ms,500);
setTimer(tim_100ms,100);
}
else
{
cancelTimer(tim_500ms);
cancelTimer(tim_100ms);
}
}
on envVar Save_txt
{
if(@Save_txt==1)
{
int i;
float val_n;
for(i=0;i<elcount(val_arr);i++)
{
val_n=val_arr[i];
writeProfileFloat("1","1",val_n,"Log.txt");
}
}
}
on timer tim_100ms
{
output(Gen);
Gen.Num_Data++;
setTimer(tim_100ms,100);
}
on message Generate_Num
{
if(time_over==1)
{
val=this.Num_Data;
val_arr[index]=val;
Logs.Logged_Val=val;
output(Logs);
index++;
time_over=0;
}
}
on timer tim_500ms
{
time_over=1;
setTimer(tim_500ms,500);
}
我将采样数据存储在“val_arr”数组中。我希望将其写入文本文件中。但是,它总是覆盖写入的数据。 “Save_txt”环境变量执行写入作业。
干杯。
以其他访问模式打开文件。
OpenFileWrite ("Log.txt",2);
如果mode = 0,则可以ASCII模式执行写入; 如果mode = 1,则可以在二进制模式下执行写入。将覆盖现有文件。 mode = 2在ASCII模式的文件末尾附加数据。 mode = 3将数据附加到文件末尾以用于二进制模式。
这是一个简单的例子,当变量增加时写入变量的值。
variables
{
dword logFile; // logfile handle
int i;
char results[1024]; // store our formatted string
}
on start
{
setFilePath("C:\\Demo\\Results", 2); // 2 = read & write
logFile = openFileWrite("Results.txt", 2); // 2 = append file
for (i = 0; i < 10; i++ )
{
snprintf(results, 1024, "The value of 'i' is %d\n", i);
filePutString(results, 1024, logFile);
}
fileClose(logFile);
}