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("端口未打開!"));
}