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

📄 main.c

📁 这个是一个带有IC卡
💻 C
📖 第 1 页 / 共 4 页
字号:
				//得到ID号
				Read_SUM1356_Block(DataBfr,5);			
											
									
				ui32_SXdate=((uint32)DataBfr[1])*256*256+DataBfr[2]*256+DataBfr[3];
				
				//得到失效时间
				//把日期转成一个4字节的数存放
				//ReadTimeFromPCF8563(&PCF8563_RdOut_databuf[0]);
				//得到系统的当前的时间
				ui32_XTdate=(((uint32)PCF8563_RdOut_databuf[6])*256*256)+(PCF8563_RdOut_databuf[5]*256)+(PCF8563_RdOut_databuf[3]);
				
				if(ui32_SXdate>ui32_XTdate)//失效时间大于系统时间的时候,此卡有效
				{
				
					uint8 i,flg_errin,rtn_key,flg_find_recvid;
					uint16 recvIDindex;
					uint32 u32_RECVnum;
					recvIDindex=0;
					flg_errin=0;
					flg_find_recvid=0;
					u32_RECVnum=0;
					rtn_key=0xff;
					Lcdclear();
					wrzw16x16_string(0,0,"本卡类型:",5);
					wrzw16x16_string(0,1,"送货员",3);
					wryw16x8_string(0,2,"CARD-ID:",8);
					ShowData_UINT32_(0,3,ui32_ID);
					Delay_n100MS(30);
					
					/////////////////这里添加处理代码//////////////////////
					Lcdclear();
					
					wrzw16x16_string(0,0,"请输入接货员卡号",8);
					wryw16x8_string(0,1,"-",1);
					wryw16x8_string(1,1,"-",1);
					wryw16x8_string(2,1,"-",1);
					wryw16x8_string(3,1,"-",1);

					for(i=0;i<4;i++)
				    {
						rtn_key=0xff;
						while(rtn_key==0xff)
						{								
							rtn_key=ScanKey();
							if((rtn_key>=10)&&(rtn_key!=0xff))
							{
								
								flg_errin=1;
								break;
							}
							if(rtn_key<=9)
							{
								wryw16x8s(i,1,rtn_key);
							}
							Delay_n100MS(40);

						}
							
						if(flg_errin==1)
						{	
							Lcdclear();
							wrzw16x16_string(0,1,"输入有误从新输入",8);
							Delay_n100MS(40);
							break;
						}
						switch(i)
						{
							case 0:
							{
						       	recvIDindex=((uint32)rtn_key)*1000;	
								
								break;
							}
							case 1:
							{
								recvIDindex=recvIDindex+((uint32)rtn_key)*100;
								
								break;
							}
							case 2:
							{
								recvIDindex=recvIDindex+((uint32)rtn_key)*10;
								
								break;
							}
							case 3:
							{
								uint8 i;//有对应的ID找到的话
								recvIDindex=recvIDindex+((uint32)rtn_key)*1;
								
								for(i=0;i<RECVIDINDEXNUM;i++)
								{
									if(recvIDindex==(*(pRecvIndexListVAL+i)).Index)
									{
										flg_find_recvid=1;
										u32_RECVnum=(*(pRecvIndexListVAL+i)).ID;
									}
								}
								if(flg_find_recvid==1)
								{
									Lcdclear();
									wrzw16x16_string(0,1,"对应的接货员号为",8);
									ShowData_UINT32_(0,2,u32_RECVnum);
									Delay_n100MS(30);
								}
								if(flg_find_recvid==0)
								{
									Lcdclear();
									wrzw16x16_string(0,1,"没有对应的接货员",8);
									Delay_n100MS(30);	
								}	
								break;
							}
							
							default:break;
						}
				}//for(i=0;i<4;i++)
				
				//如果输入正确,同时接收也正确的话。进行接收员的输入
				if((flg_errin==0)&&(flg_find_recvid==1))
				{
						
					///	u32_RECVnum;//输入接受员的卡号
						uint8  flg_input_guige,guigenum;
						uint8   guige_depth,guige_width,guige_high;

						flg_input_guige=0;
						i=0;
						Lcdclear();
						wrzw16x16_string(0,1,"选择阁子规格:",7);//选择阁子的大小规格
						wryw16x8_string(0,2,"-",1);						
							


						rtn_key=0xff;	
						while((rtn_key!=KEY_ENTER)&&(rtn_key!=KEY_CANCELL))
						{
							rtn_key=ScanKey();
								
							if((rtn_key>=1)&&(rtn_key<=5))
							{	
								uint8 j;
								flg_input_guige=1;
								guigenum=rtn_key;
								for(j=0;j<GUIGENUM;j++)
								{
									if((*(pGuiGeListVAL+j)).GuigeNum==guigenum)
									{
										guige_depth=(*(pGuiGeListVAL+j)).Depth;
										guige_width=(*(pGuiGeListVAL+j)).Width;
										guige_high=	(*(pGuiGeListVAL+j)).Height;
									}
								}
									
									wryw16x8s(0,2,rtn_key);
									
								}
								if(rtn_key==KEY_ENTER)
								{
									
									if(flg_input_guige==1)
									{
										uint8 i,flg_guige_pipei;
										flg_guige_pipei=0;
										for(i=0;i<LNMAX;i++)
										{
											if(	((*pTermilogVAL).GeZiList[i].Use_Flg==0)&&
												((*pTermilogVAL).GeZiList[i].GeZiRongJi.Height==guige_high)&&
												((*pTermilogVAL).GeZiList[i].GeZiRongJi.Width==guige_width)&&
												((*pTermilogVAL).GeZiList[i].GeZiRongJi.Depth==guige_depth)												
											  )
											{
												if((*pTermilogVAL).StoreProductNum==(LNMAX-1))
												{//当这个正好是最后一个时记录下来
													if((*pui16_Count_MachHis)<MACHHISNUM)
													{							
														(*(pMachHisVAL+(*pui16_Count_MachHis))).waringtype=WARING_TYPE_FULL;
														//read_time_1302(ucTimeReadOutArray);
														//ChangeBCD_to_Hex_TIME(ucTimeReadOutArray);
														//把时间记录下来
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.year=
														2000+PCF8563_RdOut_databuf[6];
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.month=PCF8563_RdOut_databuf[5];
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.day=PCF8563_RdOut_databuf[3];
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.hour=PCF8563_RdOut_databuf[2];
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.minute=PCF8563_RdOut_databuf[1];
														(*(pMachHisVAL+(*pui16_Count_MachHis))).time.second=PCF8563_RdOut_databuf[0];
														
														(*pui16_Count_MachHis)++;
														
														if((*pui16_Count_MachHis)==MACHHISNUM)
														{
															(*pui16_Count_MachHis)=0;
															(*pFLG_MachHis_OVERFLOW)=1;
														}//
													}
												}//if(TermilogVAL.StoreProductNum==(LNMAX-1))

												if((*pTermilogVAL).StoreProductNum<LNMAX)
												{	
													(*pTermilogVAL).StoreProductNum++;
												}												
												(*pTermilogVAL).GeZiList[i].Use_Flg=1;
												(*pTermilogVAL).GeZiList[i].ProductRecord.ReceiverCardID=u32_RECVnum;									
												(*pTermilogVAL).GeZiList[i].ProductRecord.TypeofCard=DELI_CARD;
												//注意,这里如果是用发送卡送进来的话,则认为其他的信息是无效的
												
												flg_guige_pipei=1;
												
												Lcdclear();
												wrzw16x16_string(0,1,"存入到",3);//
												wryw16x8_2wei(0,2,i+1);//要存到的号码
											
												//Open_Door(i+1);
												//PlaySound_2wei(i+1);
												Delay_n100MS(30);
												//Close_ALL_Door();
											
												Delay_n100MS(30);
												break;
											}
										}										
										if(flg_guige_pipei==0)
										{
											Lcdclear();
											wrzw16x16_string(0,1,"无空阁子",4);//
											wrzw16x16_string(0,2,"存入失败",4);//
											Delay_n100MS(30);
										}
									}
									if(flg_input_guige==0)
									{
										rtn_key=0xff;
									}							
								}//if(rtn_key==KEY_RTN_ENTER)							
							}//while((rtn_key!=KEY_RTN_ENTER)&&(rtn_key!=KEY_RTN_CANCELL))										
						}//if(flg_errin==0)
						
				
				
						
						
					
				}//if(ui32_SXdate>ui32_XTdate)//失效时间大于系统时间的时候,此卡有效
				
			}
			if(DataBfr[0]==RECV_CARD)//接货员卡
			{//////////////////接货员的情况处理////////////////////	
				uint32 ui32_ID;
				uint32 ui32_SXdate; //失效的日期
				uint32 ui32_XTdate; //系统当前日期
				ui32_ID=
				(((uint32)DataBfr[1])*256*256*256)+(DataBfr[2]*256*256)+(DataBfr[3]*256)+DataBfr[4];
				//得到ID号
				Read_SUM1356_Block(DataBfr,5);												//读块4	
									
				ui32_SXdate=((uint32)DataBfr[1])*256*256+DataBfr[2]*256+DataBfr[3];
				
				//得到失效时间
				//把日期转成一个4字节的数存放
				//ReadTimeFromPCF8563(&PCF8563_RdOut_databuf[0]);
				//得到系统的当前的时间
				ui32_XTdate=(((uint32)PCF8563_RdOut_databuf[6])*256*256)+(PCF8563_RdOut_databuf[5]*256)+(PCF8563_RdOut_databuf[3]);
				
				if(ui32_SXdate>ui32_XTdate)//失效时间大于系统时间的时候,此卡有效
				{
					uint8  i;
					uint8  flg_findpro;
					uint8  firstopen_num,tmp_num;
					flg_findpro=0;
					
					firstopen_num=0;//第一个找到的号,或者说是第1个要打开的号码
					tmp_num=0;//总共有几件货物
					Lcdclear();
					wrzw16x16_string(0,0,"本卡类型:",5);
					wrzw16x16_string(0,1,"接货员",3);
					wryw16x8_string(0,2,"CARD-ID:",8);
					ShowData_UINT32_(0,3,ui32_ID);
					Delay_n100MS(30);
					/////////////////这里添加处理代码//////////////////////
					
					for(i=0;i<LNMAX;i++)
					{
						if(		((*pTermilogVAL).GeZiList[i].ProductRecord.ReceiverCardID==ui32_ID)&&
								((*pTermilogVAL).GeZiList[i].Use_Flg==1)//如果找到这个阁子
					      )
						{
							flg_findpro=1;//标记,找到货物
							firstopen_num=i;
							tmp_num++;
						}
					}	
					
					
					if(flg_findpro==1)
					{							
						Lcdclear();
						wrzw16x16_string(0,1,"请取货",3);
						wrzw16x16_string(1,2,"号阁子",3);
						wryw16x8_2wei(0,2,firstopen_num+1);
						wrzw16x16_string(0,3,"共有",2);
						wryw16x8_2wei(4,3,tmp_num);
						wrzw16x16_string(4,3,"件货物",3);
						
						//Open_Door(firstopen_num+1);
						Delay_n100MS(8);
						//Close_ALL_Door();	
						//PlaySound_2wei(firstopen_num+1);
						//发出门的编号的声音
						
						Delay_n100MS(30);
							
						if((*pTermilogVAL).StoreProductNum>0)
						{
							(*pTermilogVAL).StoreProductNum--;
						}
						(*pTermilogVAL).GeZiList[firstopen_num].Use_Flg=0;//
						//清除过期的标记
						BaoZhiTimeOutListVAL[firstopen_num].FLG_TimeOut=0;
						BaoZhiTimeOutListVAL[firstopen_num].FLG_record=0;

						//////////////// 对操作进行记录/////////////////////
						if((*pui16_Count_DeliHis)<DELIHISNUM)
						{
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).DeliveryID=//本次交易的编号
							(*pTermilogVAL).GeZiList[firstopen_num].ProductRecord.DeliveryID;
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).DeliveryPouintID=//发货的机具号
							(*pTermilogVAL).GeZiList[firstopen_num].ProductRecord.DeliveryPouintID;
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).TypeofCard=//记录是什么方式把货物送进来的
							(*pTermilogVAL).GeZiList[firstopen_num].ProductRecord.TypeofCard;
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).RecvCardID=//记录收货人的ID号
							(*pTermilogVAL).GeZiList[firstopen_num].ProductRecord.ReceiverCardID;
								//记录货物的取走时间
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.year=PCF8563_RdOut_databuf[6]+2000;
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.month=PCF8563_RdOut_databuf[5];
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.day=PCF8563_RdOut_databuf[3];
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.hour=PCF8563_RdOut_databuf[2];
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.minute=PCF8563_RdOut_databuf[1];
							(*(pDeliHisVAL+(*pui16_Count_DeliHis))).ReceiveTime.second=PCF8563_RdOut_databuf[0];
							
							(*pui16_Count_DeliHis)++;
							if((*pui16_Count_DeliHis)==DELIHISNUM)
							{
								(*pui16_Count_DeliHis)=0;//指针变回零
								(*pFLG_DeliHis_OVERFLOW)=1;
							}
						}
					}//	if(flg_findpro==1)
					
					if(flg_findpro==0)
					{//如果没有找到货物则提示:没有找到

⌨️ 快捷键说明

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