版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、组态软件二、C语言基础1.WINCC中的语言Wincc语言由C脚本(C-script)和B脚本(VB-script)组成。WINCC中C脚本:(1)C动作(在画布中编辑的程序代码)。 (2)全局脚本编辑器:项目函数、标准函数和内部函数。 项目函数:自定义本项目(保护性) 标准函数:编辑好供C动作调用 内部函数:(微软)自定义编辑函数在项目函数中 例如:#pragma() int NEW_Add (int a; in b) int c; c=a+b; return c; 2.WINCC中的(Tag)变量-程序使用的变量(书上P31-35)变量:C变量、WINCC变量C变量:int(数值型)、
2、char(字符型)、BOOL(布尔型)-也就是二进制(为常用)WINCC变量:word(数值型) 、char(字符型) 、Bit(布尔型) (为常用)常用变量如下:布尔型:SetTagBit(参数1,参数2)、GetTagBit(参数)数值型:SetTagWord(参数1,参数2)、GetTagWord(参数)字符型:SetTagChar(参数1,参数2)、GetTagChar(参数)参数1:变量名。参数2:具体要求。例如参数1为液位,参数2为a举例1二进制变量“启动”控制电机启停BOOL a;a= GetTagBit(“启动”);if(a=0)SetTagBit(“启动”,1);举例2二进制
3、变量“启动”控制电机启停BOOL a;static int i=0;(类似int i; i=0;)a= GetTagBit(“启动”);if(a=0)i+;两者区别:不加static 加static启动一次i=1 启动一次i=1启动二次i=1 启动二次i=2启动三次i=1 启动三次i=3启动四次i=1 启动四次i=43.WINCC中的运算符3.WINCC中的常用语句三、变量组态WINCC中的变量分为:内部变量、外部变量和C动作(函数中的变量)1. 利用变量进行增减计数步骤1:进行画面构建,需要两个按钮和一个输入输出域(属性调整-)(变量、有变化时、输出)。新建内部变量,命名为“计数”,属性为无
4、符16位。如下图所示;步骤2:在名字为“启动增加”的按钮中-属性-事件-鼠标左键C动作:unsigned short a;a=GetTagWord("计数");a+;SetTagWord("计数",a);步骤3:在名字为“启动减少”的按钮中-属性-事件-鼠标左键C动作:unsigned short a;a=GetTagWord("计数");a-;SetTagWord("计数",a);2. 利用变量进行增减计数(带有步长控制),可定义步长步骤1:进行画面构建,需要两个按钮和两个输入输出域(属性调整-)(变量为计数、有
5、变化时、输出)步长对应的输入输出域(属性调整-)(变量为步长、有变化时、输入)。新建2个内部变量,命名为“计数”和“步长”,属性为无符16位。如下图所示;步骤2:在名字为“启动增加”的按钮中-属性-事件-鼠标左键C动作: unsigned short a;unsigned short b;a=GetTagWord("计数1");b=GetTagWord("步长");a=a+b;SetTagWord("计数1",a);步骤3:在名字为“启动减少”的按钮中-属性-事件-鼠标左键C动作:unsigned short a;unsigned s
6、hort b;a=GetTagWord("计数1");b=GetTagWord("步长");a=a-b;SetTagWord("计数1",a);步骤4:如果调整步长,可直接输入3. 利用变量进行电机启动 新建内部变量,命名为“起停”,属性为无符16位。在名字为“启停”的按钮中-属性-事件-鼠标左键C动作:BOOL a;a=GetTagWord("起停");if(a=0)SetTagWord("起停",1);if(a=1)SetTagWord("起停",0);4. 利用变量进行
7、windows窗口对象的修改 四、画面组态5. 画面的切换方法1:利用直接连接切换单个画面,即为在下图中“单击鼠标改变画面”的部分点击链接到所要去的画面。组态完毕后,点击按钮即可达到。方法2:通过对象名称和画面名称的变量连接打开画面。在书上P101方法3:通过内部函数打开画面。 在按钮属性中事件中鼠标左键中C动作利用软件内部函数输入程序如下:OpenPrevPicture ("画面名称"); 6. 利用画面窗口显示画面方法:SetVisible("画面名称","对象名称",1或0);SetVisible表示可见度;画面名称表示画面的名
8、字,例如1.pdl等;对象名称表示“画面窗口n”, “画面窗口n”在智能对象中; 1或0表示可见或不可见。步骤:第一步:新建三个画面,1.pdl、2.pdl、3.pdl。目的将2.pdl、3.pdl在1.pdl中通过按钮的控制显示出来;第二步:分别在2.pdl、3.pdl中组态一个目标物;第三步:在1.pdl中组态两个按钮和两个画面窗口控件(名称为画面窗口1、画面窗口2),在智能对象中找到“画面窗口”,更改画面窗口属性(属性-几何-宽度为246,高度为129;属性-其它-边框改为是,显示改为否,画面名称添加2.pdl或3.pdl);第四步:将2.pdl、3.pdl画面的大小调整为和两个画面窗口
9、一样大;第五步:进行按钮组态,在按钮属性中事件中鼠标左键中C动作中编写程序如下:按钮1:SetVisible("1.pdl","画面窗口1",1);SetVisible("1.pdl","画面窗口2",0);按钮2:SetVisible("1.pdl","画面窗口1",0);SetVisible("1.pdl","画面窗口2",1);7. 画面窗口属性-时控显示这个技巧功能是对上一个的继承,最终结果就是将三个画面循环显示。步骤:第一步:
10、新建四个画面,1.pdl、2.pdl、3.pdl、4.pdl。目的将2.pdl、3.pdl、4.pdl在1.pdl中通过按钮的时间控制显示出来;(这里并非按钮按下显示,系统运行自动显示)第二步:分别在2.pdl、3.pdl、4.pdl中组态一个目标物;第三步:在1.pdl中组态一个按钮和三个画面窗口控件(名称为画面窗口1、画面窗口2、画面窗口3),在智能对象中找到“画面窗口”,更改画面窗口属性(属性-几何-宽度为246,高度为129;属性-其它-边框改为是,显示改为否,画面名称添加2.pdl或3.pdl或4.pdl);第四步:将2.pdl、3.pdl、4.pdl画面的大小调整为和三个画面窗口一
11、样大;第五步:进行按钮组态,在按钮属性中几何中宽度中(假如宽度为70)C动作中编写程序如下:static int a=0;a+;if(a=1)SetVisible("1.pdl","画面窗口3",1);SetVisible("1.pdl","画面窗口4",0);SetVisible("1.pdl","画面窗口5",0);if(a=2)SetVisible("1.pdl","画面窗口3",0);SetVisible("1.pdl
12、","画面窗口4",1);SetVisible("1.pdl","画面窗口5",0);if(a=3)SetVisible("1.pdl","画面窗口3",0);SetVisible("1.pdl","画面窗口4",0);SetVisible("1.pdl","画面窗口5",1);a=0;return 70;触发器调整为1S中,即为间隔1S闪烁显示。8. 动画旋转组态(例如风扇转动)这个技巧是为了组态一个旋转
13、的动画,例如工业上的搅拌机等。举例如下:步骤1:组态基本画面,可以在显示库中寻找,也可以自己绘制。 显示库:从显示库中调用,若使用,首先将元件导出(注意保存),然后将元件删掉,然后再导入(插入)这个元件,便可以进行调整(折开、组装、编组)注意,编组时必须至少两个一组。 自己绘制:例如矩形、圆等(注意属性的调整)全选编组。 例如编为4个组:组1、组2、组3、组4步骤2:程序的编写-在画布属性-几何-宽度(如果此时宽度为800)-C动作:static int a=0;a+;if(a=1)SetVisible("1.pdl","组1",1);SetVisibl
14、e("1.pdl","组2",0);SetVisible("1.pdl","组3",1);SetVisible("1.pdl","组4",0);if(a=2)SetVisible("1.pdl","组1",0);SetVisible("1.pdl","组2",1);SetVisible("1.pdl","组3",0);SetVisible("1.p
15、dl","组4",1);a=0;return 800;步骤3:触发器的调整,标准周期,250MS9. 动态化-颜色改变颜色改变是最基本的动态化的技巧,就是动态对话框的基本功能,利用颜色的变化来完成一个部件的动作或结束。例如,画布属性-颜色-动态对话框(事件名称也就是触发器的调整、表达式的填充或者变量、选择表达式结果的展现形式(布尔型或者其它调整颜色)。10. 动态化-闪烁组态(元件闪烁)此技巧主要是针对于元件库中的元件来讲。例如,随便调出一个元件(属性-控件属性-闪烁样式(4种选择,包括不闪烁-0、不可见-1、阴影-2、实心-3))。点击后面的灯泡标志,选择动态对
16、话框-闪烁颜色-布尔型等。此技巧元件可单独作用,亦可由按钮控制。11. 动态化-动态填充组态动态填充组态就是控制元件的动态填充。例如,新建一个内部变量(命名为level、无符号16位、上限100、下限0、起始值0)、调出一个元件或绘制一个矩形(属性-动态填充改为“是”、填充量改为“0”、 点击填充量后面的灯泡标志,直接连接变量level)。在矩形-几何-宽度(假设宽度为100)-C动作:(注意触发器调整250毫秒)(1)填充增加static int a=0;if(a>=100)a=0;SetTagWord("level",a);a+;return 100;(2)填充减
17、少static int a=100;if(a=100)a=100;SetTagWord("level",a);a;return 100;(3)填充增减结合(先增加、再减少)static int a=0;static int b=0;(方向控制)if(b=0)if(a>=100)b=1;a+;if(b=1)if(a<=0)b=0;a;SetTagWord("level",a);return 100;12. 动态化-对象的移动对象的移动就是控制元件在画布上水平左右或者垂直上下的移动,亦或沿对角线移动,也可以综合性的各方向的移动。以小车移动为例进行
18、步骤分析如下:步骤一:选中元件-属性-几何(选择位置X、位置Y)-灯泡标志(C动作): 特别注意:计算移动的距离范围,选出一个起点和一个终点(如果双向起点和终点和互换的)。计算两点之间的距离。如果水平移动,计算X之间的距离;如果垂直移动,计算Y之间的距离。例如,起点X的坐标为500,终点X的坐标为20,那么距离为480。(水平移动就是不断增加或者不断减少x)步骤二:下面以水平移动为例,进行C动作分析: (1)水平左移(不断减少x) static int a=500;if(a<=0)a=480;else a=a-4;(每次移动的距离,可以自动调整)return 20+a;(2)水平右移(不
19、断增加x)static int a=0;if(a>=500)a=0;else a=a+4; (每次移动的距离,可以自动调整)return 20+a;(3)水平左右移动(双向移动)static int a=500;static int b=0; (方向控制)if(b=0)if(a<=0)b=1;(调整方向)a=a-4; (每次移动的距离,可以自动调整)if(b=1)if(a>=500)b=0; (调整方向)a=a+4; (每次移动的距离,可以自动调整)SetTagWord("level",a);return 20+a;步骤三:触发器调整250毫秒注意:位置X
20、-水平(左右)移动位置Y-垂直(上下)移动高度-放大或者缩小(上下)宽度-拉伸或缩短(左右)13. 动态化-复杂动画设计复杂动画设计是动态化画面的主要特色,也是工业画面组态主要部分。本技巧的展现以混合液的控制系统为例进行论述。(1) 管道中液体流动步骤一:在元件库中调用管道。管道在plantElemer-pipes-2270(弯管道)、2206(横放管道)、2180(纵放管道)中寻找。画出液体流动的三种状态,第一种状态为原始状态,就是没有任何液体流动;第二种和第三中为液体流动的两种不同状态。三种状态画好并导出到桌面,画好一个就导出一个。分别命名(0、1、2)(3次)步骤二:新建一个变量,命名为
21、“进水”,为无符号16位。步骤三:在智能对象中-状态显示-组态对话框(变量为“进水”、有变化时、增加三页(0、1、2)将三个画面状态拖入0、1、2下面,相对应)。步骤四:在状态显示控件-几何-宽度(假设宽度为100)-C动作: static int a=0;/或者static unsigned short a=0; /三种画面的第0张画面 if(a>2) 当循环超过第二张画面,强制回到第一张画面。 a=1; 三种画面的第1张画面 SetTagWord("进水",a);变量状态转移,将a变化给“进水”C变量转WINCC变量 a+; return 100;步骤五:触发器为
22、标准周期,250或500MS,保存-运行(2) 进水阀控制的管道中液体流动此技巧和(1)的区别主要是增加阀门的控制。即由阀门控制水流的通和断。对于进水阀门:步骤一:在元件库中- plantElemer-valves(阀门)。(注意导入和导出)步骤二:新建一个变量,命名为“进水阀”,为二进制变量。 新建一个变量,命名为“进水”,为无符号16位。步骤三:阀门-属性-背景颜色-动态对话框(事件名称为变量和触发器的调整为有变化时、表达式为“进水阀”、选择布尔型变量(真-1-绿、假-0-红)。步骤四:阀门-属性-事件中-鼠标左键-C动作: BOOL a; a=GetTagBit(“进水阀”); if(a
23、=1) SetTagBit(“进水阀”,0); else SetTagBit(“进水阀”,1);对于进水状态显示控件:在状态显示控件-几何-宽度(假设宽度为100)-C动作: static int a=0;/或者static unsigned short a=0;/a表示水量BOOL b;b=GetTagBit(“进水阀”);if(b=0)/如果没有按键按下,无液体流动。SetTagWord("进水",0);return 100; if(a>2)/ 如果有按键按下,有液体流动。 a=1; SetTagWord("进水",a); a+; return
24、 100;触发器为标准周期,250或500MS,保存-运行(3) 进水阀和出水阀共同控制的管道中液体流动以及液位的状态显示进水阀控制如上(2)对于出水阀门:步骤一:在元件库中- plantElemer-valves(阀门)。(注意导入和导出)步骤二:新建一个变量,命名为“出水阀”,为二进制变量。 新建一个变量,命名为“出水”,为无符号16位。步骤三:阀门-属性-背景颜色-动态对话框(事件名称为变量和触发器的调整为有变化时、表达式为“出水阀”、选择布尔型变量(真-1-绿、假-0-红)。步骤四:阀门-属性-事件中-鼠标左键-C动作: BOOL a; a=GetTagBit(“出水阀”); if(a
25、=1) SetTagBit(“出水阀”,0); else SetTagBit(“出水阀”,1);对于出水状态显示控件:在状态显示控件-几何-宽度(假设宽度为100)-C动作: static int a=0;/或者static unsigned short a=0;BOOL b;b=GetTagBit(“出水阀”);if(b=0)SetTagWord("出水",0);return 100; if(a>2) a=1; SetTagWord("出水",a); a+; return 100;触发器为标准周期,250或500MS,保存-运行对于液位的设定:步
26、骤一:在标准对象中-矩形(或者其它)进行属性调整(大小、颜色和管道液体同色)。步骤二:新建一个变量,命名为“液位”,为无符号16位。上限100,下限0,起始值0。步骤三:矩形-属性-填充(动态填充改为“是”、填充量改为0其后面的灯泡标志-直接连接变量“液位”(有变化时)。步骤四:矩形-属性-几何-宽度(假设为100)-C动作如下: static int a=0;/或者static unsigned short a=0;BOOL b;BOOL c;a= GetTagWord(“液位”);b=GetTagBit(“进水阀”);c=GetTagBit(“出水阀”);if(b=1)a+;if(c=1)
27、a-; SetTagWord("液位",a);return 100;步骤五:触发器为250MS。(标准周期)(4) 增加设定值的控制 本技巧是对(3)中液位部分的调整。增加设定值。使水位恒定在设定值所定在的位置。对于液位的调整:步骤一:新建变量,命名“设定值”,无符号16位。连接输入输出域输入设定值(变量为设定值、类型为输入、有变化时)。步骤二:程序修改-矩形-属性-几何-宽度(假设为100)-C动作如下: static unsigned short a;static unsigned short d;BOOL b;BOOL c;a= GetTagWord(“液位”);d=
28、 GetTagWord(“设定值”);b=GetTagBit(“进水阀”);c=GetTagBit(“出水阀”);if(a>d)SetTagBit("出水阀",1);a-;if(a<d)SetTagBit("进水阀",1);a+;if(a=d)SetTagBit("进水阀",0);SetTagBit("出水阀",0);SetTagWord("液位",a);return 100;步骤三:触发器为250MS。(标准周期)(5) 增加急停方式的控制(了解)步骤一:新建变量“急停”,二进制变
29、量。 按钮-事件-鼠标-C动作(按下,两个地方同时停下)14. 操作控制权限(保护权限)15. 字符串的应用16. 日期与时间的设置-正确的提取日期和时间方法1:利用控件显示(直接显示) ,如图所示; 方法2:利用程序显示 步骤一:提取系统日期和时间; 变量管理-添加新的驱动连接,如下图所示; 建立日期和时间变量,命名“date 和time”,date(在“选择”中格式为日期、8位字符集、MM-DD-YYYY), time(在“选择”中格式为时间、8位字符集、HH-MM-SS),如下图所示: 分别建立对应的输入/输出域(在“组态对话框”中:对应变量、有变化时,输出)如下图所示。注意:输入/输出
30、域属性调整(输出格式:字符串)步骤二:建立内部变量,命名“shijian”,建立相应的输入/输出域(在“组态对话框”中:对应变量(shijian)、有变化时,输出)如下图所示。注意:输入/输出域属性调整(输出格式:字符串)步骤三:将日期和时间相连; 在第二个时间对应的输入/输出域-属性-几何-高度(假设高度为40)- -C动作:(触发器为500MS) char a20,b20;char aa10,bb10;int i;char temp;char *p;p=GetTagChar("date");strcpy(a,p);for(i=0;i<5;i+) aai=ai; b
31、bi=ai+5;aa5='0'bb5='0'for(i=0;i<4;i+) temp=bbi; bbi=bbi+1; bbi+1=temp; strcat(bb,aa);strcpy(a,bb);p=GetTagChar("time");strcpy(b,p);strcat(a," ");strcat(a,b);SetTagChar("shijian",a);return 40;程序分析:黑色程序部分:能达到目的,但是显示西方格式(11-16-2013),不符合中国人审美习惯,故加蓝色部分程序,用
32、于调整日期显示(2013-11-16)。13.日期与时间的设置-两个时间求差值此技巧是对上一个技巧的承接,用于实现在线时长显示的功能。注意:字符不能相加减;显示格式(字符显示):时间1:09:45:30 时间2 09:45:45 时长:00:00:15。画面布局如图所示;步骤一:新建内部变量:shijian1 和shijian2和shijian3(格式为文本8位字符集),新建对应的输入输出域(变量(shijian1 和shijian2和shijian3)、有变化时、输出)。注意:输入/输出域属性调整(输出格式:字符串)步骤二:程序时间1程序:在时间1对应的输入输出域中-属性-事件-鼠标左键-C
33、动作:char a20;char*p;p=GetTagChar("time");strcpy(a,p);SetTagChar("shijian1",a);时间2程序:在时间2对应的输入输出域中-属性-事件-鼠标左键-C动作:char a20;char*p;p=GetTagChar("time");strcpy(a,p);SetTagChar("shijian2",a);时间差程序:在时间差对应的输入输出域中-属性-事件-鼠标左键-C动作:第一部分:定义变量char a20,b20;char*p;char aa10,
34、bb10,cc10;int i;int val1,val2,val3;int val4,val5,val6;int val7,val8,val9;long sum1,sum2,temp;第二部分:将shijian1由字符转换为数值p=GetTagChar("shijian1");、采集时间1strcpy(a,p);for(i=0;i<2;i+) aai= ai;、小时 bbi= ai+3;、分钟 cc i= ai+6;、秒 aa2='0' bb2='0' cc 2='0'val1=atoi(aa);、字符转数值val2=
35、atoi(bb);val3=atoi(cc);第三部分:将shijian2由字符转换为数值(同上)p=GetTagChar("shijian2");strcpy(a,p);for(i=0;i<2;i+) aai= ai; bbi= ai+3; cc i= ai+6; aa2='0' bb2='0' cc 2='0'val4=atoi(aa);val5=atoi(bb);val6=atoi(cc);第四部分:求差值sum1=val1*3600+val2*60+val3;、计算时间1共多少秒sum2=val4*3600+va
36、l5*60+val6; 、计算时间2共多少秒temp=sum2-sum1;、秒值相减temp=abs(temp); 、取绝对值第五部分:将得出数值temp转换为(时、分、秒)-一分为三(仍为数值)val7=temp/3600;、数值除3600取整为小时val8=(temp%3600)/60;、余下数值除60取整为分钟val9=temp%60;、余下数值除60取余为秒值第六部分:将各数值转换为字符(0的ASCII码为48)b0=val7/10+48;、十位-时b1=val7%10+48;、个位b2=':'、冒号b3=val8/10+48;b4=val8%10+48;b5='
37、;:'b6=val9/10+48;b7=val9%10+48;b8='0'、字符串结束标志SetTagChar("shijian3",b);、输出结果项目总图14.全局脚本(了解)将事先编好的程序在全局脚本中编辑成函数形式(项目函数)-在C动作中直接调用。以可以保护函数。举例说明:以上一技巧中的时间差函数为例;步骤:全局脚本-C-Editor-项目函数-新建-在特定的形式中输入要编的程序,如下所示:#pragma option(mbcs)void New_Function()此为函数名字(可以自己起名)输入要编写的程序 最后的程序如下:#pragma
38、 option(mbcs)void New_Function()char a20,b20;char*p;char aa10,bb10,cc10;int i;int val1,val2,val3;int val4,val5,val6;int val7,val8,val9;long sum1,sum2,temp;p=GetTagChar("shijian1");strcpy(a,p);for(i=0;i<2;i+) aai= ai; bbi= ai+3; cc i= ai+6; aa2='0' bb2='0' cc 2='0'
39、;val1=atoi(aa);val2=atoi(bb);val3=atoi(cc);p=GetTagChar("shijian2");strcpy(a,p);for(i=0;i<2;i+) aai= ai; bbi= ai+3; cc i= ai+6; aa2='0' bb2='0' cc 2='0'val4=atoi(aa);val5=atoi(bb);val6=atoi(cc);sum1=val1*3600+val2*60+val3;sum2=val4*3600+val5*60+val6;temp=sum2-sum
40、1;temp=abs(temp); val7=temp/3600;val8=(temp%3600)/60;val9=temp%60;b0=val7/10+48;b1=val7%10+48;b2=':'b3=val8/10+48;b4=val8%10+48;b5=':'b6=val9/10+48;b7=val9%10+48;b8='0'SetTagChar("shijian3",b); 加密:菜单栏中-编辑-信息-(创建者:冯晨曦;口令:123456),以后每次输入都得登录正确的口令才可以登录;加密后,在C动作中只显示函数名,不
41、显示函数内容;15.关于文件的操作(对WINCC的扩展)(1)文件指针格式*txt*dat(打不开,存放登录过的密码)(2)文件操作打开文件操作文件(复杂)关闭文件(3)打开文件(首先定义文件指针)FILE*fp;fp=fopen(“C:Test.txt”, “r”); 打开文件方式:r-表示只读:如文件不存在或者路径错误,返回NULL(空指针) w-表示写入:如文件不存在或者路径错误,则新建用于清空某个文件。 a-表示写:为追加,写时不会删除原有文件。以r 、a使用最多 。(4)关闭文件 Fclose(fp);f表示file ,中文为“文件”;(5)操作文件 写数据fputs(字符,文件指针
42、);字符为常量或者数组 举例:fputs(china,fp); char a20; strcpy(a20, fp); 读数据fgets(,数组名,n,文件指针); 作用是从文件中读取n-1个字符放入数组中;16.项目-班级数据录入借助本项目巩固文件操作技巧,本项目就是对一个班级信息的记录(姓名、班级、学号)。步骤一:新建三个内部变量:分别命名为“name”、“class”、“number”,并建立相应的输入输出域,注意:输入/输出域属性调整(输出格式:字符串),如下图所示:步骤二:新建两个按钮,分别命名为“写入一次信息”、“写入信息”。任务一:在按钮“写入一次信息”中-属性-事件-鼠标左键-C
43、动作: FILE*fp;fp=fopen("E:123.txt","a");fputs("冯晨曦",fp);fputs("1001自动化",fp);fputs("1005020115",fp);fputs("rn",fp);fclose(fp);任务二:在按钮“写入信息”中-属性-事件-鼠标左键-C动作:FILE*fp;、文件指针char a20;char b20;char c20;char*p;、字符指针/int i;p=GetTagChar("name"
44、;);strcpy(a,p);p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number");strcpy(c,p);目的:将三个变量一一对应,使各列对齐;对齐方法1:if(strlen(a)=4)、等于4,说明有4个字符,即两个字(两个字的姓名)strcat(a," ");if(strlen(a)=6) 、等于6,说明有6个字符,即三个字(三个字的姓名)strcat(a," ");对齐方法2:/for(i=strlen(a);i<8;i+)/strcat(a
45、," ");目的:输出数据fp=fopen("E:123.txt","a");、打开文件fputs(a,fp);、写入数据afputs(b,fp); 、写入数据afputs(c,fp); 、写入数据afputs("rn",fp);、回车换行fclose(fp);、关闭文件特别注意:为了免除干扰,防止重复输入相同数据-方法:加入延时函数步骤:#pragma option(mbcs)void delay(WORD a)#pragma code("keme32.dll")VOID WINAPI Sle
46、ep(WORD dwMilliSeconds);#pragma code()Sleep(a);任务二:在按钮“写入信息”中-属性-事件-鼠标左键-C动作:FILE*fp;、文件指针char a20;char b20;char c20;char*p;、字符指针/int i;p=GetTagChar("name");strcpy(a,p);p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number");strcpy(c,p);目的:将三个变量一一对应,使各列对齐;对齐方法1:if(strl
47、en(a)=4)、等于4,说明有4个字符,即两个字(两个字的姓名)strcat(a," ");if(strlen(a)=6) 、等于6,说明有6个字符,即三个字(三个字的姓名)strcat(a," ");对齐方法2:/for(i=strlen(a);i<8;i+)/strcat(a," ");目的:输出数据fp=fopen("E:123.txt","a");、打开文件delay(2000);、延时2秒fputs(a,fp);、写入数据afputs(b,fp); 、写入数据afputs(c,
48、fp); 、写入数据afputs("rn",fp);、回车换行fclose(fp);、关闭文件17.项目-对文件的综合处理(未完)本项目是对文件处理的综合运用,是对组态系统人员登录的统计和记录。总体布局如下图所示;项目步骤如下:步骤一:完成下图图形的构建和脚本程序的编写,方法如上;(1) 新建三个内部变量,分别命名“name”“class”“number”,分别连接相应的输入输出域(组态对话框:该变量、有变化时、类型为I/O域)。注意:输入/输出域属性调整(输出格式:字符串)。(2) 在名字为“写入文件”的按钮中-属性-事件-C动作: FILE*fp;char a20;ch
49、ar b20;char c20;char*p;int i;p=GetTagChar("name");strcpy(a,p);p=GetTagChar("class");strcpy(b,p);p=GetTagChar("number");strcpy(c,p);/if(strlen(a)=4)、蓝色和红色部分功能一致,选用一个即可/strcat(a," ");/if(strlen(a)=6)/strcat(a," ");/if(strlen(a)=8)/strcpy(a);for(i=strle
50、n(a);i<8;i+);、蓝色和红色部分功能一致,选用一个即可strcat(a," ");fp=fopen("E:123.txt","a");fputs(a,fp);fputs(b,fp);fputs(c,fp);fputs("rn",fp);fclose(fp);步骤二:完成下图图形的构建和属性的调整;(1) 智能对象-控件(选择ListView control 6.0 sp6)-拉大控件-双击(显示属性)-在General(常规)中修改View(选择3-lvwreport)(报表输出);-在Colum Header(列标题)-(点击insert Colum(增加一列)index为列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 26711-2024微孔笔头墨水笔
- 保证合同的变更与解除
- 合同转让标准协议书范本2024年
- 2024年股权代持协议书编写要点
- 个人部分股权转让协议书2024年
- 2024年经营权转让合同范文
- 房屋买卖合同违约金纠纷的法律解决途径
- 售楼部售房合同协议书
- 新股申购流程与协议书
- 施工合同价款组成解析
- 雾化吸入疗法的用药指南2024课件
- 人音版六年级上册全册音乐教案(新教材)
- 2024-2030年中国青霉素行业深度调研及投资前景预测研究报告
- GB/T 42455.2-2024智慧城市建筑及居住区第2部分:智慧社区评价
- 地 理期中测试卷(一) 2024-2025学年地理湘教版七年级上册
- 《公共管理学》第五章-政府作用课件
- 2024年山东济南轨道交通集团限公司招聘95人历年高频难、易错点500题模拟试题附带答案详解
- 2024年认证行业法律法规及认证基础知识
- 2024年临时用工管理制度(五篇)
- 《跆拳道》教学大纲
- 大学美育 课件 王树青 第三篇 文艺之美
评论
0/150
提交评论