?? managecomm.c
字號:
/******************************************************************************
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[]={'對','不','起',', ','您','無','權(quán)','使','用','! ',0};
TEXT cmdButtonTxt[4][7]={{'桌','臺','設(shè)','置','下','載',0},{'員','工','檔','案','下','載',0},
{'菜','品','數(shù)','據(jù)','下','載',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]) //桌臺設(shè)置下載
{
DownLoadType=0;
CloseCommPort(WDownLoadDataTaskID);
break;
}
else if (id==cmdButtonID[1])//員工檔案下載
{
DownLoadType=1;
CloseCommPort(WDownLoadDataTaskID);
break;
}
else if (id==cmdButtonID[2])//菜品數(shù)據(jù)下載
{
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)//無線下載數(shù)據(jù)
{
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; //總的下載次數(shù)
TEXT TitleTxt[]={'下','載',0};
TEXT WDownLoadTxt[]={'無','線','下','載',0};
TEXT WDownTitelTxt[3][5]={{'桌','臺','設(shè)','置',0},{'員','工','檔','案',0},{'菜','品','數(shù)','據(jù)',0}};
TEXT TotalPackNumTxt[]={'需','要','下','載','數(shù)','目',0};
TEXT RecvedOKNumTxt[]={'接','收','成','功','數(shù)','目',0};
TEXT RecvedErrorNumTxt[]={'接','收','錯','誤','數(shù)','目',0};
TEXT DownLoadTempoTxt[]={'下','載','進(jìn)','度',0};
TEXT MsgOKTxt[]={'下','載','完','成',', ','是','否','退','出','? ',0};
TEXT MsgFileNotFind[]={'主','機(jī)','沒','有','找','到','文','件','! ',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); //打開無線下載任務(wù)
//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);
//標(biāo)志置位
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;
}
//判斷是否是下載的通信協(xié)議命令(防止不會自動改頻)
if ( (U8)(*(RecievBuffer+1))!=PCR_WDownLoad && (U8)(*(RecievBuffer+1))!=PCR_WDownLoadCR )
{
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -