📄 main.c
字号:
//得到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 + -