資源簡介
網上太多資料,可是很多都沒有整理好!這個實例,我已經做成一個類,只需要實例化該類并調用相關函數,就可以了!很好用

代碼片段和文件信息
//?linkPLC.cpp:?implementation?of?the?ClinkPLC?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“linkPLC.h“
#pragma?comment(lib“WS2_32.lib“)
#pragma?comment(lib“WINMM.lib“)
?
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
ClinkPLC::ClinkPLC()
{
WORD?wVersionRequested;
WSADATA?wsaData;
????wVersionRequested=MAKEWORD(11);
::WSAStartup(wVersionRequested&wsaData);
hostent?*p;
char?sip[128];
char?*p2;
gethostname(sip128);
p=gethostbyname(sip);
p2=inet_ntoa(*((in_addr*)p->h_addr));
????m_LocalIP=CString(p2);
}
ClinkPLC::~ClinkPLC()
{
::closesocket(m_linkSocket);
WSACleanup();
}
bool?ClinkPLC::linkDevice()
{
int?err;
if(INVALID_SOCKET==(m_linkSocket=socket(PF_INETSOCK_STREAM0)))
{???
err=::WSAGetLastError();
return?false;
}
????SOCKADDR_IN?sare;
????sa.sin_family=AF_INET;
sa.sin_addr.S_un.S_addr=INADDR_ANY;//inet_addr(“10.9.38.59“);
sa.sin_port=htons(0);//must?use?port?0
//sa.sin_port=htons(9600);//not?be?use?9600?port
if(SOCKET_ERROR==::bind(m_linkSocket(sockaddr*)&sasizeof(sa)))
{???
err=::WSAGetLastError();
?
? return?false;
}
????char?Fins_tcp[1320];
????re.sin_family=AF_INET;?
re.sin_addr.S_un.S_addr=inet_addr(m_PlcIP);
re.sin_port=htons(9600);
????if(SOCKET_ERROR==::connect(m_linkSocket(sockaddr*)&resizeof(re)))
{
err=::WSAGetLastError();
?
? return?false;
????}
//**************************************************************************
//------------------發送?握手協議------------------------------
Fins_tcp[0]=‘F‘;????Fins_tcp[1]=‘I‘; Fins_tcp[2]=‘N‘;Fins_tcp[3]=‘S‘;
Fins_tcp[4]=0x00;//長度
????Fins_tcp[5]=0x00; Fins_tcp[6]=0x00; Fins_tcp[7]=0x0C;
Fins_tcp[8]=0x00;//命令
????Fins_tcp[9]=0x00; Fins_tcp[10]=0x00; Fins_tcp[11]=0x00;
Fins_tcp[12]=0x00;//故障碼
Fins_tcp[13]=0x00; Fins_tcp[14]=0x00; Fins_tcp[15]=0x00;
Fins_tcp[16]=0x00;//客戶端地址
Fins_tcp[17]=0x00; Fins_tcp[18]=0x00; Fins_tcp[19]=m_LocalEndIP;
int?sendlengthrecvlength;
????sendlength=::send(m_linkSocketFins_tcp200);
//------------------顯示發送的?握手協議------------------------------
char?FinsText[]=““;
//------------------接收PLC返回值?------------------------------
CString?m_Command;
char?CNodeSNode;
recvlength=::recv(m_linkSocketFins_tcp240);
m_Command=m_Command+“Reci:“;
for(int?i=0;i {?
int?temp=0;
temp=Fins_tcp[i]?&?0xff; ?
_itoa(tempFinsText16);
if(strlen(FinsText)==1)
{
strcat(FinsText“0“);
strrev(FinsText);
}
if((?i?%?4)?==?0)
{m_Command=m_Command+“\r\n“;}
m_Command=m_Command+FinsText;
}
if(Fins_tcp[12]|Fins_tcp[13]|Fins_tcp[14]|Fins_tcp[15]==0)
return?true;
else
return?false;
return?true;
}
bool?ClinkPLC::ReadDM(long?DMArealong?&?Value)
{
//------------------讀取DM區?DM9000--
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6454??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\li
?????文件????????613??2017-04-28?14:45??歐姆龍TCPIP通訊讀寫\li
?????文件???????3543??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\ReadMe.txt
?????文件????????774??2017-04-28?13:41??歐姆龍TCPIP通訊讀寫\resource.h
?????文件????????206??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\StdAfx.cpp
?????文件???????1054??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\StdAfx.h
?????文件??????35520??2017-04-28?13:41??歐姆龍TCPIP通訊讀寫\test.aps
?????文件???????1175??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\test.clw
?????文件???????2035??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\test.cpp
?????文件???????4274??2017-04-28?14:44??歐姆龍TCPIP通訊讀寫\test.dsp
?????文件????????514??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\test.dsw
?????文件???????1302??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\test.h
?????文件??????58368??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\test.ncb
?????文件??????50688??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\test.opt
?????文件???????2220??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\test.plg
?????文件???????5387??2017-04-28?13:41??歐姆龍TCPIP通訊讀寫\test.rc
?????文件???????5048??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\testDlg.cpp
?????文件???????1462??2017-04-28?14:26??歐姆龍TCPIP通訊讀寫\testDlg.h
?????文件??????19627??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\li
?????文件?????105396??2017-04-28?11:39??歐姆龍TCPIP通訊讀寫\Debug\StdAfx.obj
?????文件?????110636??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\test.exe
?????文件?????240164??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\test.ilk
?????文件??????13709??2017-04-28?14:46??歐姆龍TCPIP通訊讀寫\Debug\test.obj
?????文件????5503668??2017-04-28?11:39??歐姆龍TCPIP通訊讀寫\Debug\test.pch
?????文件?????402432??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\test.pdb
?????文件???????2628??2017-04-28?13:41??歐姆龍TCPIP通訊讀寫\Debug\test.res
?????文件??????28404??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\testDlg.obj
?????文件?????222208??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\vc60.idb
?????文件?????364544??2017-04-28?14:49??歐姆龍TCPIP通訊讀寫\Debug\vc60.pdb
?????文件???????1078??2017-04-28?11:38??歐姆龍TCPIP通訊讀寫\res\test.ico
............此處省略7個文件信息
- 上一篇:layui ztree 下拉樹代碼
- 下一篇:TransMAC破解版
評論
共有 條評論