技术论坛

 回复:WinCC中用C脚本 怎么向文本文件中写字符串??~!!

返回主题列表
作者 主题
JalonMan
游侠

经验值:332
发帖数:55
精华帖:0
楼主    2008-05-05 15:31:08
主题:WinCC中用C脚本 怎么向文本文件中写字符串??~!!
如题:
我的要求是,每天定时向文本文件中写入一行字符串!
非常感谢!~
(环境:xp,wincc 6.2)
伟大很短 平凡很长
Olli
游民

经验值:58
发帖数:12
精华帖:2
    2008-05-10 20:47:49
精华帖  主题:回复:WinCC中用C脚本 怎么向文本文件中写字符串??~!!
用c s cript有两种方法,一种简单的就是使用ansi c函数,代码如下:
FILE* lpFile;
char* lpszStr = "hello\r\n";
lpFile = fopen("c:\\test.txt", "a");
if(lpFile == NULL)
{ printf("can not open file\r\n"); return;}
fprintf(lpFile, lpszStr);
fclose(lpFile);

但是WinCC中使用printf,fprintf等函数最多只能处理360个字符,如果你写的字符串过长,可以使用windows api,代码如下:
#pragma code("kernel32.dll")
#include "windows.h" // 这里的window.h必须要装上windows sdk
// 或者装个vc6.0
// 然后把vc98\include里的头文件拷贝到
// siemens\wincc\aplib中
#pragma code()
HANDLE hFile;
DWORD dwPos, dwBytes;
char* lpszText = "hello\r\n";
int nLen = strlen(lpszText);
hFile = CreateFile("c:\\test.txt", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{printf("can not open file\r\n"); return;}
dwPos = SetFilePointer(hFile, 0, NULL, FILE_END);
LockFile(hFile, dwPos, 0, dwPos + nLen, 0);
WriteFile(hFile, lpszText, nLen, &dwBytes, NULL);
UnLockFile(hFile, dwPos, 0, dwPos + nLen, 0);
CloseHandle(hFile);

ps:如果编译时出现常量没有定义的错误,自行去winbase.h中找到定义并在脚本中自己预定义一下。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。