wincc按钮C语言(fp=fopen)(w+b)(w+t)(r+w)请教? 点击:1055 | 回复:0



PLC酷客

    
  • [版主]
  • 精华:9帖
  • 求助:31帖
  • 帖子:1460帖 | 7990回
  • 年度积分:457
  • 历史总积分:59176
  • 注册:2004年7月13日
发表于:2013-07-22 19:45:48
楼主

wincc按钮C语言(fp=fopen)(w+b)(w+t)(r+w)请教?


请教:下面两个按钮属性含义?先谢谢!
下面的C语句其中:
“T_RECORD_1","day_1","time_hour_1","time_min_1","time_sec_1","T_CODE_1","T_VALVE_1",
共记100条(因为字数限制没有写全)

《数据保存》按钮鼠标动作

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static  int recode=101;
float a[700];
static  float  v_record=0;
char *aa[700]={
"T_RECORD_1","day_1","time_hour_1","time_min_1","time_sec_1","T_CODE_1","T_VALVE_1",
};
int i;
int  record;
time_t t;
struct tm tblock;
FILE  *fp;
SetTagBit("ad1a1_1",1);
while(i<700)
  {    a[i]=GetTagFloat(aa[i]);     i++;      }  
fp = fopen("D:\\thj.txt","w+b");
if (fp==NULL)
{fclose(fp);
return ;}
for(i=0;i<700;i++)
  { if(fwrite(&a[i],sizeof(float),1,fp)!=1)
      {fclose(fp);
         return ;
       }          
   }
fclose(fp);
fp = fopen("D:\\thj.bak","w+t");
for(i=0;i<700;i++)
fprintf(fp,"%f,",a[i]);
fclose(fp);
SetTagBit("ad1a1_1",0);
return ;
}

《数据输入》按钮鼠标动作
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static  int recode=101;
float a[700];
static  float  v_record=0;
char *aa[700]={
"T_RECORD_1","day_1","time_hour_1","time_min_1","time_sec_1","T_CODE_1","T_VALVE_1",
};
int i;
int  record;
time_t t;
struct tm tblock;
FILE  *fp;
SetTagBit("ad1a2_1",1);
fp = fopen("d:\\thj.txt","r+w");
if (fp==NULL)
{
fclose(fp);
return;
}
  for(i=0;i<700;i++)
      { fread(&a[i],sizeof(float),1,fp);
      SetTagFloat(aa[i],a[i]);         }
fclose(fp);
SetTagBit("ad1a2_1",0);
return ;
}


答:w+:以读写方式打开文件,文件如果不存在就新建这个文件,如果已经存在就会覆盖其中的内容
r:打开文件,文件必须存在,否则返回NULL
b:二进制数值
t:字符文本。
你的按钮的这些属性是以不同的方式打开不同的数据格式的文件。

数据保存按钮
把700个浮点数变量aa[i]的数据保存到文本文件D:\\thj.txt中,同时保存个D:\\thj.bak备份
数据输入按钮
把文本文件D:\\thj.txt的记录取出并写的变量浮点数变量aa[i]中(700个数据)

说白了数据配方的保存和取出功能




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师