📄 manipulate.cpp
字号:
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 + -