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

📄 managecomm.c

📁 比较不错的ppsm系统源码 比较不错的ppsm系统源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
ManageComm.c BY xbpda 2003.12.11
*****************************************************************************/ 

#include <stdlib.h>         
#include <stdio.h>          
#include "ppsm.h"
#include "errors.h"
#include "proto.h"
#include "M68328.h"

#include "Gui.h"
#include "ManageComm.h"
#include "PubVal.h"
#include "PubFun.h"

extern U8           RecvOkNum;
extern U8			RecvErrNum;
extern U8           RecvingFlag;

extern U8           DownPD[2];
extern U8           TotalDownPD;

void WriteRevcData(U16 PackNum);

void ManageCommTask(void)
{
	U32             size;
	U32             id;
	S16             xSrc, ySrc, xDest, yDest;
	P_U16           inData;	
	
	U8              i;	
	
	TEXT            TitleTxt[]={'下','载',0};
	TEXT            MsgTitleTxt[]={'操','作','提','示',0};
	TEXT            MsgNoPowerTxt[]={'对','不','起',', ','您','无','权','使','用','! ',0};
	
	TEXT            cmdButtonTxt[4][7]={{'桌','台','设','置','下','载',0},{'员','工','档','案','下','载',0},
										{'菜','品','数','据','下','载',0},{'退','  ','  ','  ','  ','出',0}};
	U32             cmdButtonID[4];
	U32             MsgButtonOkID;
	
	Draw_Logo((P_TEXT)TitleTxt);	

	for (i=0;i<3;i++)
	{
		Text_Button3D(&cmdButtonID[i],(P_TEXT)cmdButtonTxt[i],45,i*45+30,160,35,2);
	}	
	Text_Button3D(&cmdButtonID[3],(P_TEXT)cmdButtonTxt[3],45,260,160,35,2);	
	OpenCommPort(ManageCommTaskID);
	while(1)
	{
		switch(IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size))
        {
		case IRPT_RTC:
			if (id==TimerRTCId) RTCTimerEvent();			
			break;
		case IRPT_UART:
			if (*inData == UART_DATA_RECEIVED) RecvData();			
			break;
		case IRPT_ICON:
			if (AutoPowerOff!=0) PDAOpenTime=0;
			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 (*inData == PPSM_ICON_PEN_UP)  
			{	
				if (id==cmdButtonID[0]) //桌台设置下载
				{
					DownLoadType=0; 
					CloseCommPort(WDownLoadDataTaskID);
					break;
				}	
				else if (id==cmdButtonID[1])//员工档案下载
				{
					DownLoadType=1;
					CloseCommPort(WDownLoadDataTaskID);
					break;
				}
				else if (id==cmdButtonID[2])//菜品数据下载
				{
					DownLoadType=3;
					CloseCommPort(WDownLoadDataTaskID);
					break;
				}			
				else if (id==cmdButtonID[3])//退出
				{
					CloseCommPort(SysMenuTaskID);
					break;
				}
				else if (id==MsgButtonOkID)//确定对话框
				{					
					CloseMsgBox(TempBitMap,1,&MsgButtonOkID);
					break;
				}				
				else break;
			}
		default:
			break;    
        }                                               
	}
}
extern U8 RFONFlag;
extern void RFOn(void);
void WDownLoadDataTask(void)//无线下载数据
{
	U32             size;
	U32             id;
	S16             xSrc, ySrc, xDest, yDest;
	P_U16           inData;	

	U8              i,k;
	U16             j;
	U8              DownPack[12];
	U8              ModifyChannelPack[2];
	U8              StartFlag;
	U16             TotalOk,TotalErr;
	
	U32             DoubleCheckNum;	
	
	U16             DowningNum;           //总的下载次数
	
	TEXT            TitleTxt[]={'下','载',0};
	TEXT            WDownLoadTxt[]={'无','线','下','载',0};
	TEXT            WDownTitelTxt[3][5]={{'桌','台','设','置',0},{'员','工','档','案',0},{'菜','品','数','据',0}};

	TEXT            TotalPackNumTxt[]={'需','要','下','载','数','目',0};
	TEXT            RecvedOKNumTxt[]={'接','收','成','功','数','目',0};
	TEXT            RecvedErrorNumTxt[]={'接','收','错','误','数','目',0};
	TEXT            DownLoadTempoTxt[]={'下','载','进','度',0};

	TEXT            MsgOKTxt[]={'下','载','完','成',', ','是','否','退','出','? ',0};
	TEXT            MsgFileNotFind[]={'主','机','没','有','找','到','文','件','! ',0};
	TEXT            MsgBigFile[]={'文','件','太','大',', ','无','法','下','载','! ',0};
	TEXT            MsgErrQuest[]={'PD','A ','的','下','载','请','求','错','误','! ',0};
	TEXT            MsgTitleTxt[]={'操','作','提','示',0};
	TEXT            SendCancelTxt[]={'终','  ','止',0};

	TEXT            cmdButtonTxt[2][4]={{'开','  ','始',0},{'退','  ','出',0}};
	U32             cmdButtonID[2];
	
	U32             MsgButtonYesNoID[2];
	U32             MsgButtonOkID;

	ModifyChannelPack[0]=0x24;
	//ModifyChannelPack[1]=15;
	ModifyChannelPack[1]=DownPD[0];

	DowningNum=0;	
    
	//初始化包。除了第9其它都是固定的放置
	DownPack[0]=0xAA;
	DownPack[1]=0xAA;
	DownPack[2]=PCS_WDownLoad;
	DownPack[3]=HotelID;
	DownPack[4]=HostID;
	DownPack[5]=PDAID;
	DownPack[6]=DownLoadType;  //下载类型
	DownPack[7]=0;  
	DownPack[8]=1;
	DownPack[9]=(U8)(~(PCS_WDownLoad+HotelID+HostID+PDAID+DownPack[6]+DownPack[7]+DownPack[8])+1); //校验位
	DownPack[10]=0x1A;
	DownPack[11]=0x26;
    
	//初始化开始和接收信号
	StartFlag=FALSE;
	RecvingFlag=FALSE;
	i=0;
	RecvOkNum=0;  
	RecvErrNum=0;
	TotalOk=0;
	TotalErr=0;

	Draw_Logo((P_TEXT)TitleTxt);
	Draw_Signal(0);
	PutString((P_TEXT)WDownLoadTxt,25,49);	
	PutString((P_TEXT)WDownTitelTxt[DownLoadType],89,49);

	PutString((P_TEXT)TotalPackNumTxt,25,89);Draw_Text(133,87,92,20,2);
	PutString((P_TEXT)RecvedOKNumTxt,25,129);Draw_Text(133,127,92,20,2);
	PutString((P_TEXT)RecvedErrorNumTxt,25,169);Draw_Text(133,167,92,20,2);
	PutString((P_TEXT)DownLoadTempoTxt,25,209);
	Draw_Rec(BLACK, 95, 208, 130, 18);

	Text_Button3D(&cmdButtonID[0],(P_TEXT)cmdButtonTxt[0],25,247,60,26,2);
	Text_Button3D(&cmdButtonID[1],(P_TEXT)cmdButtonTxt[1],165,247,60,26,2);

	OpenCommPort(WDownLoadDataTaskID); //打开无线下载任务	
	//UARTTimeout(50000);
	RecvBufSize=50;
	if (RFONFlag==FALSE)
	{
		RFONFlag=TRUE;
		RFOn();		
	}
	UARTSend(UART_SEND_REQUEST, (P_U8)ModifyChannelPack, 2); 
	while(1)
	{
		switch(IrptGetData((P_U32)&id, (P_U32*)&inData, (P_U32)&size))
        {
		case IRPT_RTC:   //时钟中断
			if (id==TimerRTCId)
			{

					i++;
					if (i>=3)
					{						
						if (RecvOkNum==0 && RecvErrNum==0 && RecvingFlag!=TRUE && TotalDownPD>1)                   //需要更换频点
						{
							if (ModifyChannelPack[1]==DownPD[0]) ModifyChannelPack[1]=DownPD[1];
							else ModifyChannelPack[1]=DownPD[0];

							UARTReceive(UART_RECEIVE_ABORT);							
							AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
							UARTSend(UART_SEND_REQUEST, (P_U8)ModifyChannelPack, 2);     //改频
							UARTReceive(UART_RECEIVE_REQUEST);
						}
						if (RecvOkNum>=25 && RecvErrNum<=3) SignalValue=5;
						else if (RecvOkNum>=20 && RecvErrNum<=6) SignalValue=4;
						else if (RecvOkNum>=15 && RecvErrNum>=9) SignalValue=3;
						else if (RecvOkNum>=10 && RecvErrNum>=12) SignalValue=2;
						else if (RecvOkNum>=5 &&  RecvErrNum>=15) SignalValue=1;
						else SignalValue=0;
						Draw_Signal(SignalValue);
						//标志置位
						RecvOkNum=0;
						RecvErrNum=0;
						i=0;
					}					
			}
			break;		
		case IRPT_UART: //异步传输			
			if (*inData == UART_DATA_RECEIVED)
			{ 
				RecvingFlag=TRUE;				
				(U32)RecievBuffer=0x300000;
				RCVActual=0;
				UARTReadData(RecievBuffer,RecvBufSize, &RCVActual);					
				UARTReceive(UART_RECEIVE_ABORT);
				
				if ( (U8)(*(RecievBuffer))==72 && (U8)(*(RecievBuffer+1))==ModifyChannelPack[1] ) //改频成功
				{					
					AdvMessageDelete(WDownLoadDataTaskID, IRPT_UART, -1);
					UARTReceive(UART_RECEIVE_REQUEST);
					RecvingFlag=FALSE;
					break;
				}
				//判断是否是下载的通信协议命令(防止不会自动改频)
				if ( (U8)(*(RecievBuffer+1))!=PCR_WDownLoad && (U8)(*(RecievBuffer+1))!=PCR_WDownLoadCR ) 
				{

⌨️ 快捷键说明

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