20180908
plc c脚本(c script) 装载连接 https://blog.csdn.net/xueyeguiren8/article/details/72621000
client
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
// Include header files
#include "WSOCK32.h"
#define PORT 8888
#define SERVER_IP "192.168.30.119"
// Declare local variables
WSADATA wsaData;
long lResult = 0;
BOOL bResult = FALSE;
SOCKET sMetNet = INVALID_SOCKET;
struct hostent *pheMetNet = NULL;
struct servent *pseMetNet = NULL;
struct sockaddr_in saAddress;
unsigned long ulCommand = 1;
char szTelegramData[1024] = "";
// Get actual communication socket with MetNet-Server
//sMetNet = (SOCKET)GetTagSDWord("socketState"); // Tag Signed 16-Bit Value
sMetNet=0;
//printf("变量名称%d\n",sMetNet);
// Examine for active connection with MetNet-Server
if( (sMetNet == INVALID_SOCKET) || (sMetNet == 0) )
{
// 加载socket动态链接库(dll)
WORD wVersionRequested;
WSADATA wsaData; // 这结构是用于接收Wjndows Socket的结构信息的
int err;
wVersionRequested = MAKEWORD( 1, 1 ); // 请求1.1版本的WinSock库
err = WSAStartup( wVersionRequested, &wsaData );
// Create communication socket
sMetNet = socket(AF_INET, SOCK_STREAM,0);
// printf("port------------------->>%d\n",err );
if( sMetNet == SOCKET_ERROR )
{
GetSocketError(0, "Cannot create socket");
}
// Prepare communication parameter with MetNet-Server
saAddress.sin_addr.s_addr = inet_addr(SERVER_IP);
saAddress.sin_family = AF_INET;
saAddress.sin_port = htons(PORT);
// Open communication with MetNet-Server
lResult = connect(sMetNet, (const struct sockaddr *)&saAddress, sizeof(saAddress));
if( lResult == SOCKET_ERROR )
{
GetSocketError(sMetNet, "Cannot connect to server %s", SERVER_IP);
}
else
{
lResult=send(sMetNet, "nihao\r\n", strlen("nihao\r\n")+1, 0); // 发送显示欢迎信息
printf("发送完毕!\n");
lResult = recv(sMetNet, &szTelegramData[0], (sizeof(szTelegramData) - 1), 0);
printf("接收完毕!\n");
if( (lResult > 0) && (WSAGetLastError() == 0) )
{
// Terminate receive telegram data
szTelegramData[lResult] = '\0';
// Your code ...
printf("服务器返回数据----------------------------------->%s\n", szTelegramData);
}
else
{
printf("----------------------------------->%d\n", lResult );
// Examine for socket failure (e.g. network error)
if( (lResult == 0) && (WSAGetLastError() != WSAEWOULDBLOCK) )
{
// Close communication with MetNet-Server
sMetNet = GetSocketError(sMetNet, "Cannot read data from server %s",SERVER_IP);
}
}
closesocket(sMetNet);
WSACleanup();
}
}
// Finish action
}
server——————————————————————————————————————————————————————————————————————
#include "apdefap.h"
void OnClick(char* lpszPictureNam