| 作者 | 主题 |
|---|---|
|
newgoodman 新手 经验值:34 发帖数:22 精华帖:0 |
楼主
主题:关于c脚本里SetTagRaw(GetTagRaw)函数的参数
帮助不太理解,谁能给个例子啊,比如把一个原始变量中间取一段赋给一个double 型的数组,十分感谢!!
|
|
Armstrong.F 侠圣 经验值:2055 发帖数:1586 精华帖:11 |
楼
主题:回复:关于c脚本里SetTagRaw(GetTagRaw)函数的参数
非常幸运,找到了其中的一个例子,里面也有我当初调试的痕迹,两种方法都能看到。
这里先帖出一段代码,有心人就可以看明白了: 然后整个项目比较大,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); } |