?? managecomm.c
字號:
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
if (RCVActual<8) //效驗(yàn)數(shù)據(jù)包長度是否足夠
{
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
//效驗(yàn)數(shù)據(jù)包是否完整
if (*RecievBuffer!=170 || *(RecievBuffer+RCVActual-2)!=0x1A || *(RecievBuffer+RCVActual-1)!=0x26)
{
RecvErrNum++;
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
//判斷是否是本酒店及主機(jī)
if ( (U8)(*(RecievBuffer+2)) != HotelID || (U8)(*(RecievBuffer+3)) != HostID )
{
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
//效驗(yàn)位檢查
DoubleCheckNum=0;
for (j=1;j<RCVActual-3;j++)
{
DoubleCheckNum=(U8)(*(RecievBuffer+j))+DoubleCheckNum;
}
DoubleCheckNum=~(DoubleCheckNum)+1;
if ( (U8)DoubleCheckNum != (U8)(*(RecievBuffer+RCVActual-3)) ) //倒數(shù)第三位是校驗(yàn)位
{
RecvErrNum++;
if ((U8)(*(RecievBuffer+1))==PCR_WDownLoad && (U8)(*(RecievBuffer+4))==PDAID)
{
TotalErr++;
SetTextAsc(TotalErr,130,169,88,16,FALSE);
}
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
RecvOkNum++;
if ( (U8)(*(RecievBuffer+4))!=PDAID )//不是發(fā)給本機(jī)的數(shù)據(jù)
{
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
RecievBuffer++; //置到有效數(shù)據(jù)的首地址(命令+酒店+主機(jī)+PDA+數(shù)據(jù))
RCVActual=RCVActual-4;//有效數(shù)據(jù)的長度(命令+酒店+主機(jī)+PDA+數(shù)據(jù))
if (StartFlag==TRUE)
{
if ((U8)*RecievBuffer == PCR_WDownLoadCR ) //主機(jī)的下載循檢包
{
UARTSend(UART_SEND_REQUEST, (P_U8)DownPack, 12); //發(fā)送下載請求數(shù)據(jù)包
}
else //主機(jī)發(fā)來的下載回復(fù)數(shù)據(jù)包
{
if ( (U8)(*(RecievBuffer+4))==0xE0 ) // 主機(jī)沒有找到文件
{
MessageBox((P_TEXT)MsgTitleTxt, (P_TEXT)MsgFileNotFind, 1, &MsgButtonOkID, TempBitMap);
StartFlag=FALSE;
}
else if ( (U8)(*(RecievBuffer+4))==0xE1 ) // PDA請求下載的文件太大(超過84K)
{
MessageBox((P_TEXT)MsgTitleTxt, (P_TEXT)MsgBigFile, 1, &MsgButtonOkID, TempBitMap);
StartFlag=FALSE;
}
else if ( (U8)(*(RecievBuffer+4))==0xE2 ) // PDA的請求次數(shù)無效
{
MessageBox((P_TEXT)MsgTitleTxt, (P_TEXT)MsgErrQuest, 1, &MsgButtonOkID, TempBitMap);
StartFlag=FALSE;
}
else //有效數(shù)據(jù)
{
j=(U8)(*(RecievBuffer+5));
j=j*256;
j=*(RecievBuffer+6)+j;
if ( j==1 ) //第一個包
{
DowningNum=(U8)(*(RecievBuffer+7));
DowningNum=DowningNum*256;
DowningNum=*(RecievBuffer+8)+DowningNum;
SetTextAsc(DowningNum,135,89,88,16,FALSE);
}
TotalOk++;
SetTextAsc(TotalOk,135,129,88,16,FALSE);
WriteRevcData(RCVActual);
PutProcessBar(j,DowningNum,95, 208, 130, 18 );
if ( j<DowningNum )
{
if (DownPack[8]<0xFF)
{
DownPack[8]=DownPack[8]+1;
}
else
{
DownPack[8]=0;
DownPack[7]=DownPack[7]+1;
}
DownPack[9]=(U8)(~(PCS_WDownLoad+HotelID+HostID+PDAID+DownPack[6]+DownPack[7]+DownPack[8])+1);
}
else //下載完成
{
MessageBox((P_TEXT)MsgTitleTxt, (P_TEXT)MsgOKTxt, 2, &MsgButtonYesNoID[0], TempBitMap);
StartFlag=FALSE;
}
}
}
}
AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
UARTReceive(UART_RECEIVE_REQUEST);
RecvingFlag=FALSE;
break;
}
else break;
case IRPT_ICON:
if (ActiveAreaRead(id,&xSrc,&ySrc,&xDest,&yDest)!= PPSM_OK) rv = PPSM_ERROR;
if (InvRec(xSrc+1,ySrc+1,(xDest-(xSrc+1)),(yDest-(ySrc+1)))!= PPSM_OK) rv = PPSM_ERROR;
if (AutoPowerOff!=0) PDAOpenTime=0;
if (*inData == PPSM_ICON_PEN_UP)
{
if (id==cmdButtonID[0])//下載
{
if (StartFlag==FALSE)//開始
{
StartFlag=TRUE;
PutProcessBar( 0,1,95, 208, 130, 18 );
DowningNum=0;
TotalOk=0;
TotalErr=0;
SetTextAsc(0,135,89,88,16,FALSE);
SetTextAsc(TotalOk,135,129,88,16,FALSE);
SetTextAsc(TotalErr,135,169,88,16,FALSE);
DownPack[7]=0;
DownPack[8]=1;
DownPack[9]=(U8)(~(PCS_WDownLoad+HotelID+HostID+PDAID+DownPack[6]+DownPack[7]+DownPack[8])+1);
ChgButtonTxt(cmdButtonID[0],(P_TEXT)SendCancelTxt);
}
else if(StartFlag==TRUE) //終止
{
StartFlag=FALSE;
ChgButtonTxt(cmdButtonID[0],(P_TEXT)cmdButtonTxt[0]);
}
break;
}
else if (id==cmdButtonID[1])//退出
{
CloseCommPort(ManageCommTaskID);
break;
}
else if (id==MsgButtonYesNoID[0])//對話框[是]
{
CloseMsgBox(TempBitMap,2,&MsgButtonYesNoID[0]);
CloseCommPort(ManageCommTaskID);
break;
}
else if (id==MsgButtonYesNoID[1])//對話框[否]
{
CloseMsgBox(TempBitMap,2,&MsgButtonYesNoID[0]);
if (StartFlag==FALSE) ChgButtonTxt(cmdButtonID[0],(P_TEXT)cmdButtonTxt[0]);//下載完成了
break;
}
else if (id==MsgButtonOkID)//對話框[確定]
{
CloseMsgBox(TempBitMap,1,&MsgButtonOkID);
if (StartFlag==FALSE) ChgButtonTxt(cmdButtonID[0],(P_TEXT)cmdButtonTxt[0]);
break;
}
}
default:
break;
}
}
}
void WriteRevcData(U16 PackNum)
{
U8 i;
U16 temp;
U32 address;
U16 TmpPackNum;
temp=(U8)(*(RecievBuffer+5));
temp=temp*256;
temp=*(RecievBuffer+6)+temp;
switch((U8)(*(RecievBuffer+4)))
{
case 0:
if ( temp==1 ) ram_perase_sector(24); //第一個包
address=( temp - 1 )*28+TABLEADDR; //桌臺地址
break;
case 1:
if ( temp==1 ) ram_perase_sector(25); //第一個包
address=( temp - 1 )*28+EMPLOYEEADDR; //員工地址
break;
case 2:
/*if ( temp==1 ) ram_perase_sector(18); //第一個包 //原來22
address=( temp - 1 )*28+FOODSPECADDR; */ //菜品地址
break;
case 3:
if ( temp==1 ) ram_perase_sector(15); //第一個包 原來 19
else if (temp%2340==0) ram_perase_sector(temp/2340+19);
address=( temp - 1 )*28+FOODADDR;
break;
case 4:
break;
case 5:
/*if ( temp==1 ) ram_perase_sector(23); //第一個包
address=( temp - 1 )*28+JZXGADDR;*/ //結(jié)帳相關(guān)參數(shù)地址
break;
default:
return;
}
if ( temp==1 ) //第一個包
{
RecievBuffer+=9;
TmpPackNum=PackNum-9;
}
else
{
RecievBuffer+=7;
TmpPackNum=PackNum-7;
address-=2;
}
for (i=0;i<TmpPackNum;i++)
{
temp=(*(RecievBuffer+i)) * 256;
i++;
if (i<TmpPackNum) temp+=*(RecievBuffer+i);
else temp+=0xFF;
ram_pwrite_word(address,temp);
address+=2;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -