⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.cpp

📁 vc下串口通讯开发程序
💻 CPP
字号:
// Function.cpp: implementation of the CFunction class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TLhzpro.h"
#include "Function.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CFunction::CFunction()
{

}

CFunction::~CFunction()
{

}

CString CFunction::Gethzdz(char *errcode, char *inBuf)
{	
	CString qmStr;
	char *s=inBuf;
	CString sT;
	sT=inBuf;
	char *e=errcode;
	unsigned char qh,wh,qw; 
	unsigned char tm;
	long fh;
	long ii;
	char mb[4];
	CString mm,mm0;
	int num=0;
while(*e && num<4) 
{ qh=*(e);
  qmStr=qh;
  mm0=mm0+qmStr;
  e++;
  num++;
}
 num=0;
   char *lpReturnedString = new char[100];
LPCTSTR lpKeyName,lpDefault;
   DWORD nSize=100;     
   LPCTSTR lpAppName="区位码";     
	DWORD nBufferLength=100;
	char lpBuffer[100];
	memset(lpBuffer,0,sizeof(lpBuffer));
	GetCurrentDirectory(
	nBufferLength,  // size, in characters, of directory buffer
	lpBuffer);       // pointer to buffer for current directory
        lpFileName=lpBuffer;
	lpFileName=lpFileName+"\\setup.ini";
	int j=0;
while(*s) 
{
fh=*(s);

 if (fh<0)
 {

   CString HZ=sT.Mid(j,2);
   j+=2;
   lpKeyName=HZ;
   GetPrivateProfileString(
   lpAppName,        // points to section name
   lpKeyName,        // points to key name
   lpDefault,        // points to default string
   lpReturnedString,  // points to destination buffer
   nSize,              // size of destination buffer
   lpFileName        // points to initialization filename
);
mm=mm+lpReturnedString;

  s+=2; //因为一个汉字内码占用两个字节,所以s必须加2 
 }
else
{
qmStr=*(s);
j++;
   lpKeyName=qmStr;
   GetPrivateProfileString(
   lpAppName,        // points to section name
   lpKeyName,        // points to key name
   lpDefault,        // points to default string
   lpReturnedString,  // points to destination buffer
   nSize,              // size of destination buffer
   lpFileName        // points to initialization filename
);
mm=mm+lpReturnedString;
s+=1;
}
  num=num+1;
} 
qmStr.Format("%02d",num);
mm=mm0+qmStr+mm;
return mm;
}

int  CFunction::Encode(char *inStr)
{

	char inBuf[120];
	char outBuf[120];
	char *s=inStr;
	int num=1;
	inBuf[0]='R';
	inBuf[1]='P';
	int i=0;
	while(*s)
	{
	i++;
	char c1=*(s);
	char c2=*(s+1);
    inBuf[i+1]=CalculateHex(c1)*16+CalculateHex(c2);
	s+=2;
	}

	inBuf[i+2]= 0;
	EncodeTextToHostLinkCommand(inBuf, outBuf);

	unsigned long writeBytes;
	WriteFile(gPLC1ComHandleProc, outBuf, strlen(outBuf), &writeBytes, NULL);
	Sleep(100);
	ReadFile(gPLC1ComHandleProc, inBuf, writeBytes+num*4, &writeBytes, NULL);

   if (inBuf[0]=='O' &&   inBuf[1]=='K') 
   {
	   return 1;
   }
   else
   {
	   return 0;
   }
   return 0;
}

int CFunction::Encode(char *error, char *inStr)
{
	char inBuf[120];
	char outBuf[120];
	char errBuf[10];
    char *e=error;

	char *s=inStr;
	int num=1;
	errBuf[0]='R';
	errBuf[1]='P';
	int i=0;
	while(*e && i<2)
	{
	i++;
	char c1=*(e);
	char c2=*(e+1);
    errBuf[i+1]=CalculateHex(c1)*16+CalculateHex(c2);
	e+=2;
	}


    i=0;

	while(*s)
	{
	char c1=*(s);
	char c2=*(s+1);
    inBuf[i]=CalculateHex(c1)*16+CalculateHex(c2);
	s+=2;
	i++;
	}

	inBuf[i]= 0;
//	EncodeTextToHostLinkCommand(inBuf, outBuf);
    EncodeTextToHostLinkCommandFortl(inBuf,errBuf,outBuf);
	unsigned long writeBytes;
	WriteFile(gPLC1ComHandleProc, outBuf, strlen(outBuf), &writeBytes, NULL);
	Sleep(100);
	ReadFile(gPLC1ComHandleProc, inBuf, writeBytes+num*4, &writeBytes, NULL);

   if (inBuf[0]=='O' &&   inBuf[1]=='K') 
   {
	   return 1;
   }
   else
   {
	   return 0;
   }
   return 0;
}

CString CFunction::Gethzdz(char *inBuf)
{
	CString qmStr;
	char *s=inBuf;
	CString sT;
	sT=inBuf;

	unsigned char qh,wh,qw; 
	unsigned char tm;
	long fh;
	long ii;
	char mb[4];
	CString mm,mm0;
	int num=0;

 num=0;
   char *lpReturnedString = new char[100];
LPCTSTR lpKeyName,lpDefault;
   DWORD nSize=100;     
   LPCTSTR lpAppName="区位码";     
	DWORD nBufferLength=100;
	char lpBuffer[100];
	memset(lpBuffer,0,sizeof(lpBuffer));
	GetCurrentDirectory(
	nBufferLength,  // size, in characters, of directory buffer
	lpBuffer);       // pointer to buffer for current directory
        lpFileName=lpBuffer;
	lpFileName=lpFileName+"\\setup.ini";
	int j=0;
while(*s) 
{
fh=*(s);

 if (fh<0)
 {

   CString HZ=sT.Mid(j,2);
   j+=2;
   lpKeyName=HZ;
   GetPrivateProfileString(
   lpAppName,        // points to section name
   lpKeyName,        // points to key name
   lpDefault,        // points to default string
   lpReturnedString,  // points to destination buffer
   nSize,              // size of destination buffer
   lpFileName        // points to initialization filename
);
mm=mm+lpReturnedString;

  s+=2; //因为一个汉字内码占用两个字节,所以s必须加2 
 }
else
{
qmStr=*(s);
j++;
   lpKeyName=qmStr;
   GetPrivateProfileString(
   lpAppName,        // points to section name
   lpKeyName,        // points to key name
   lpDefault,        // points to default string
   lpReturnedString,  // points to destination buffer
   nSize,              // size of destination buffer
   lpFileName        // points to initialization filename
);
mm=mm+lpReturnedString;
s+=1;
}
  num=num+1;
} 
qmStr.Format("%02d",num);
//mm=mm0+qmStr+mm;//old
mm=qmStr+mm;//


return mm;
}

CString CFunction::GetZmdz(char *errcode)
{
	CString qmStr;


	char *e=errcode;
	unsigned char qh,wh,qw; 

	CString mm0;
	int num=0;
while(*e && num<4) 
{ qh=*(e);
  qmStr=qh;
  mm0=mm0+qmStr;
  e++;
  num++;
}
return mm0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -