void ReadMsr()
{
if(comFlag) //端口判断,(bool取值false和true,是0和1的区别;BOOL取值FALSE和TRUE,是0和非0的区别)
{
//循环次数
CString num;
GetDlgItem(IDC_EDIT_NUM1)->GetWindowTextW(num);
int a=_ttoi(num);
for(int i=0;i<a;i++)
{
bool flag=true;
int flagPaper;
char beel[]={0x07};//响铃
char duiqi[]={0x1b,0x7d,0x30,0x50};//对齐
int startTime1 = GetTickCount(); //获取当前系统时间
flagPaper = PaperStatus(); ////获取纸张状态
while (flagPaper != 4) //打印介质没有完全插入机内,进入循环
{
Sleep(500);
command(beel, sizeof(beel)); //发送响铃
flagPaper = PaperStatus();
if (flagPaper == 2 || flagPaper == 3) //打印介质没有完全插入机内
{
InsertPaper();
flag = true;
break;
}
if(flagPaper==4)
{
flag = true;
break;
}
if (GetTickCount() - startTime1 > 30*1000) //超时,返回超时信息,并报打印机接收命令失败
{
MessageBox(_T("等待超时!"));
flag = false;
break;
}
}
Sleep(500);
command(beel, sizeof(beel)); //响铃
command(duiqi, sizeof(duiqi)); //对齐
char rData[200]={0};
CString data;
if(flag)
{
if(!MSR(0,rData,sizeof(rData)))
{
GetDlgItem(IDC_RESULT)->SetWindowTextW(_T("读取数据失败!"));
}
else
{
CheckPrinterStatus(1);
data = rData;
GetDlgItem(IDC_MSR2_DATA)->SetWindowTextW(data);
GetDlgItem(IDC_RESULT)->SetWindowTextW(_T("读取数据成功!"));
RetreatPaper();
}
}
}
}else
GetDlgItem(IDC_RESULT)->SetWindowTextW(_T("端口未打开!"));
}