回复:关于c脚本里SetTagRaw(GetTagRaw)函数的参数

Armstrong.F

  • 帖子

    1586
  • 精华

    11
  • 被关注

    2

论坛等级:侠圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2006-04-07 19:51:19

0楼

非常幸运,找到了其中的一个例子,里面也有我当初调试的痕迹,两种方法都能看到。
这里先帖出一段代码,有心人就可以看明白了:
然后整个项目比较大,2.3M,谁真正有需要的话,发个MAIL给我,说明缘由,我通过邮件发给你!
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#define CHARBEGIN 6
#define CHARLENGTH 10 // STRING[10]
int i=0, k=0;
short int IntValue;
short float FloatValue;
char StringValue[255];
size_t StringLength;

BYTE *IntBuffer;
BYTE *FloatBuffer;
BYTE Buffer[18]; // Buffer to turn the Bytes

IntValue = GetTagWord("IntVar_write"); // Get the Integervalue
FloatValue =GetTagFloat("FloatVar_write"); // Get the Floatvalue
strcpy(StringValue,GetTagChar("CharVar_write")); // Get the String

IntBuffer = (BYTE*)&IntValue; // Pointer for transfer
FloatBuffer = (BYTE*)&FloatValue; // Pointer for transfer
// Integervalue, bytes turn from Motorola- to PC INTEL-Format and
// write the Integervalue into the rawdata buffer
Buffer[0] = IntBuffer[1];
Buffer[1] = IntBuffer[0];
// Floatvalue, bytes turn from Motorola- to PC INTEL-Format and
// write the Floatvalue into the rawdata buffer
Buffer[2] = FloatBuffer[3];
Buffer[3] = FloatBuffer[2];
Buffer[4] = FloatBuffer[1];
Buffer[5] = FloatBuffer[0];
// Headerinformation for S7-STRING
Buffer[6]=CHARLENGTH; // 1. additional Byte S7-STRING / needed by S7
StringLength = strlen (StringValue);
Buffer[7]=(BYTE)StringLength; // 2. additional Byte S7-STRING / needed by S7

// write Stringvalue in rawdata buffer / realized with for-loop
for(i=CHARBEGIN +2 ; i< CHARBEGIN + 2 + CHARLENGTH; Buffer[i++] = StringValue[k++] );
// write the RawDataVariable
SetTagRaw("RawVar",&Buffer[0],18);
}
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32563条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。