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

📄 managecomm.c

📁 比较不错的ppsm系统源码 比较不错的ppsm系统源码
💻 C
📖 第 1 页 / 共 2 页
字号:
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break; 
				}
				if (RCVActual<8) 			//效验数据包长度是否足够
				{
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break;
				}			
				//效验数据包是否完整
				if (*RecievBuffer!=170 || *(RecievBuffer+RCVActual-2)!=0x1A || *(RecievBuffer+RCVActual-1)!=0x26) 
				{
					RecvErrNum++;
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break; 
				}				
				//判断是否是本酒店及主机
				if ( (U8)(*(RecievBuffer+2)) != HotelID || (U8)(*(RecievBuffer+3)) != HostID )
				{
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break; 
				}							
				//效验位检查
				DoubleCheckNum=0;
				for (j=1;j<RCVActual-3;j++) 
				{
					DoubleCheckNum=(U8)(*(RecievBuffer+j))+DoubleCheckNum;
				}
				DoubleCheckNum=~(DoubleCheckNum)+1;

				if ( (U8)DoubleCheckNum != (U8)(*(RecievBuffer+RCVActual-3)) ) //倒数第三位是校验位
				{
					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 )//不是发给本机的数据
				{
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break; 
				}								
				RecievBuffer++; //置到有效数据的首地址(命令+酒店+主机+PDA+数据)
				RCVActual=RCVActual-4;//有效数据的长度(命令+酒店+主机+PDA+数据)				
				if (StartFlag==TRUE) 
				{
					if ((U8)*RecievBuffer == PCR_WDownLoadCR )            //主机的下载循检包
					{						
						UARTSend(UART_SEND_REQUEST, (P_U8)DownPack, 12);         //发送下载请求数据包												
					}
					else //主机发来的下载回复数据包
					{
						if ( (U8)(*(RecievBuffer+4))==0xE0 ) // 主机没有找到文件
						{
							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的请求次数无效
						{
							MessageBox((P_TEXT)MsgTitleTxt, (P_TEXT)MsgErrQuest, 1, &MsgButtonOkID, TempBitMap);
							StartFlag=FALSE;
						}
						else //有效数据
						{
							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;*/    //结帐相关参数地址
		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;	
	}		
}

⌨️ 快捷键说明

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