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

📄 manipulate.cpp

📁 这是我给一个做射频卡的公司做的小程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	int blocknum;
	int blockth;
	int charnum;
	if(codlen%4==0)
	{
		blocknum=codlen/4+3;
			for(blockth=3;blockth<blocknum;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_pro[charnum+4*(blockth-3)];
			if(!WriteSingleBlock(hCom, 0x00, 0x08,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
	}
	else
	{
		blocknum=codlen/4+1+2;

		for(blockth=3;blockth<blocknum-1;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_pro[charnum+4*(blockth-3)];
			if(!WriteSingleBlock(hCom, 0x00, 0x08,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
		
		for(charnum=0;charnum<codlen%4;charnum++)
		{
			writedata[charnum]=m_pro[charnum+(blocknum-3)*4];
		}
		if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
		{
			flag=false;
			notice.Format("写入标签第%d块失败",blockth);
			AfxMessageBox(notice);
		}
	}


	return flag;

}

bool Manipulate::writename()
{

	
	CString notice;
	char writedata[4];
	int codlen;
	codlen=strlen(m_name);
	int blocknum;
	int blockth;
	int charnum;
	if(codlen%4==0)
	{
		blocknum=codlen/4+11;
			for(blockth=11;blockth<blocknum;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_name[charnum+4*(blockth-11)];
			if(!WriteSingleBlock(hCom, 0x00, 0x08,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
	}
	else
	{
		blocknum=codlen/4+1+11;

		for(blockth=11;blockth<blocknum-1;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_name[charnum+4*(blockth-11)];
			if(!WriteSingleBlock(hCom, 0x00, 0x08,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
		
		for(charnum=0;charnum<codlen%4;charnum++)
		{
			writedata[charnum]=m_name[charnum+(blocknum-12-1)*4];
		}
		if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blocknum-1, writedata))
		{
			flag=false;
			notice.Format("写入标签第%d块失败",blockth);
			AfxMessageBox(notice);
		}
	}


	return flag;
}

bool Manipulate::writecode()
{

	CString notice;
	char writedata[4];
	int codlen;
	codlen=strlen(code);
	int blocknum;
	int blockth;
	int charnum;
	if(codlen%4==0)
	{
		blocknum=strlen(code)/4+21;
		for(blockth=21;blockth<blocknum;blockth++)
		{
			for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=code[charnum+4*(blockth-21)];
			if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
	}
	else
	{
		blocknum=strlen(code)/4+1+21;
			blocknum=strlen(code)/4+21;
		for(blockth=21;blockth<blocknum-1;blockth++)
		{
			for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=code[charnum+4*(blockth-21)];
			if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
		
		for(charnum=0;charnum<codlen%4;charnum++)
		{
		writedata[charnum]=code[charnum+(blocknum-22)*4];
		}
		if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
		{
		flag=false;
		notice.Format("写入标签第%d块失败",blockth);
		AfxMessageBox(notice);
		}
	}
	return flag;
}
bool Manipulate::writeuser()
{
	CString notice;
	char writedata[4];
	int codlen;
	codlen=strlen(m_user);
	int blocknum;
	int blockth;
	int charnum;
	if(codlen%4==0)
	{
		blocknum=codlen/4+28;
			
		for(blockth=28;blockth<blocknum;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_user[charnum+4*(blockth-28)];
			if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
	}
	else
	{
		blocknum=codlen/4+1+28;

		for(blockth=28;blockth<blocknum-1;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_user[charnum+4*(blockth-28)];
			if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
		
		for(charnum=0;charnum<codlen%4;charnum++)
		{
			writedata[charnum]=m_user[charnum+(blocknum-29)*4];
		}
		if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
		{
			flag=false;
			notice.Format("写入标签第%d块失败",blockth);
			AfxMessageBox(notice);
		}
	}
	return flag;

}

bool Manipulate::writerecord()
{
	
	CString notice;
	char writedata[4];
	int codlen;
	codlen=strlen(m_record);
	int blocknum;
	int blockth;
	int charnum;
	if(codlen%4==0)
	{
		blocknum=codlen/4+41;
			for(blockth=41;blockth<blocknum;blockth++)
		{
		for(charnum=0;charnum<4;charnum++)
			writedata[charnum]=m_record[charnum+4*(blockth-41)];
			if(!WriteSingleBlock(hCom, 0x00, 0,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
	}
		
	else
		
	{
		blocknum=codlen/4+1+41;

		for(blockth=41;blockth<blocknum-1;blockth++)
		{
			for(charnum=0;charnum<4;charnum++)
				writedata[charnum]=m_record[charnum+4*(blockth-41)];
			if(!WriteSingleBlock(hCom, 0x00, 0,NULL,blockth, writedata))
			{
				flag=false;
				notice.Format("写入标签第%d块失败",blockth);
				AfxMessageBox(notice);
			}
		}
			
		for(charnum=0;charnum<codlen%4;charnum++)
		{
			writedata[charnum]=m_record[charnum+(blocknum-42)*4];
			}
			if(!WriteSingleBlock(hCom, 0x00, 0x00,NULL,blockth, writedata))
			{
			flag=false;
				notice.Format("写入标签第%d块失败",blockth);
			AfxMessageBox(notice);
		}
	}


	return flag;

}

void Manipulate::OnChange() 
{
	// TODO: Add your control notification handler code here
		UpdateData(TRUE);
	//AfxMessageBox("只能修改用户单位和维修记录");
	/////////////////////////////////////////////////////////////修改标签数据
	//写用户单位到标签
	writeuser();
	//写维修记录到标签
	writerecord();
	/////////////////////////////////////////////////////////////修改数据库数据
	if(flag==true)
	{
		CString str,strSQL;
		strSQL="update 产品表 set 用户单位=" + m_user+ " where  产品编码=m_code"; // 设置SQL语句
		db.ExecuteSQL(strSQL); // 执行
		strSQL="update 产品表 set 维修记录=" + m_record+ " where  产品编码=m_code"; // 设置SQL语句
		db.ExecuteSQL(strSQL); 
		AfxMessageBox("修改成功");
	}
}

void Manipulate::OnRead() 
{
	// TODO: Add your control notification handler code here
	//char * readpro;
	//读UID
	int k=0;
CString strUID = _T("");

int LableNum = 0;
char UIDBuf[600];

memset(UIDBuf, 0, 600);


if(DetectTagUID(hCom, 0x00,UIDBuf,LableNum))
{
	m_xinpian.Format(UIDBuf);

//	UpdateData(FALSE);

}
else
{
	AfxMessageBox("没有检测到标签%d",LableNum);
}


	rdata.Format("");
	Manipulate::readdata(3,8);
	m_pro.Format("%s",rdata);


	rdata.Format("");
	Manipulate::readdata(11,10);
	m_name.Format("%s",rdata);

	rdata.Format("");
	Manipulate::readdata(21,4);
	m_ctype=rdata.Mid(0,1);
	m_ctypecode=rdata.Mid(1,2);
	m_cpartscode=rdata.Mid(3,4);
	m_cyear=rdata.Mid(7,4);
	m_cmanth=rdata.Mid(11,2);
	m_sequence=rdata.Mid(13,3);


	rdata.Format("");
	CString cyear,cmonth,cday;
	Manipulate::readdata(25,2);
	cyear=rdata.Mid(0,4);
	cmonth=rdata.Mid(4,2);
	cday=rdata.Mid(6,2);
	char y1=cyear.GetAt(0);
	char y2=cyear.GetAt(1);
	char y3=cyear.GetAt(2);
	char y4=cyear.GetAt(3);
	char m1=cmonth.GetAt(0);
	char m2=cmonth.GetAt(1);
	char d1=cday.GetAt(0);
	char d2=cday.GetAt(1);
	int year1=((int)y1-48)*1000+((int)y2-48)*100+((int)y3-48)*10+((int)y4-48);
	int month1=((int)m1-48)*10+((int)m2-48);
	int day1=((int)d1-48)*10+((int)d2-48);
//	COleDateTime dtSel;
//	SetDate(year1,month1,day1);

    m_date.SetTime(COleDateTime(year1,month1,day1,0,0,0));

	rdata.Format("");
	Manipulate::readdata(27,1);
	m_crepaire=rdata.Left(3);

	rdata.Format("");
	Manipulate::readdata(28,10);
	m_user.Format("%s",rdata);
	


	rdata.Format("");
	Manipulate::readdata(41,10);
	m_record.Format("%s",rdata);

	UpdateData(FALSE);
//	m_pro.Format("%s",*readpro);
//	UpdateData(FALSE);
	
}
char* Manipulate::readdata(int beginblock,int blocks)
{
	
	CString ss, ss1[100];
	CString *pss1;
	pss1=ss1;
	 BYTE bRecDataBuf[10000];
	BYTE bRecDataBuf1[10000];
	char *UData,RecDataBuf1[600];
	CString sData;
	UData = RecDataBuf1;
	BYTE Single[5];
	 BYTE *pSingle = Single;

	if(ReadTagData(hCom,0x00,0x08,NULL,beginblock,blocks,UData))
		{

			sData.Format("%s",UData);
			//AfxMessageBox(sData);
			char cTmp[3];
			char *pCTmp = cTmp;
			//将得到的字符串转换为二进制数组
			int len = sData.GetLength();

			for(int k=0; k<len/2; k++)
			{
				sprintf(pCTmp,"%s",sData.Mid(k*2,2));
				sscanf(pCTmp,"%02X",&bRecDataBuf[k]);
			}
			//转换完毕!
			//ss.Format("%02X %02X %02X %02X",bRecData[0],bRecData[1],bRecData[2],bRecData[3]);
			//AfxMessageBox(ss);
			
			for(int j=0; j<blocks; j++)
			{
			
				ss.Format("块地址:[%02d]  数据: [ %c%c%c%c%c%c%c%c ]",21+j,
					UData[j*8+0],UData[j*8+1],UData[j*8+2],UData[j*8+3],UData[j*8+4],
					UData[j*8+5],UData[j*8+6],UData[j*8+7]);
			//	AfxMessageBox(ss);
				///目的:显示二进制数组中所表示的字符串(以字符方式显示)

				Single[0] = bRecDataBuf[j*4+0];
				Single[1] = bRecDataBuf[j*4+1];
				Single[2] = bRecDataBuf[j*4+2];
				Single[3] = bRecDataBuf[j*4+3];
				Single[4] = '\0';
				
				ss.Format("%s",(char*)pSingle);
			//	AfxMessageBox(ss);
				*ss1+=ss;
			
              }	
		//	AfxMessageBox(*ss1);
			//pss1.Format(*ss1);
			rdata.Format("%s",*ss1);

			return (char*)pss1;
  }
}

⌨️ 快捷键说明

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