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

📄 hpi.c

📁 ARM的串口源码
💻 C
📖 第 1 页 / 共 4 页
字号:
   //*********************************************************************
   //			   	  VANDER  PROPRIETARY
   //		
   //		COPYRIGHT (c)   2006 BY VANDER ENGINEERING LTD.
   //              --  ALL RIGHTS RESERVED  --
   //
   //
   // File Name:	HPI.c
   // Author:		Willie Hu
   // Created:		23 Mar 06
   // Modified:
   // Revision:		1.0
   // Description:  High level application interface
   //*********************************************************************/



#include "common.h"
#include "TPBULK.H"
#include "HPI.H"
#include "HAL.H"
#include "Fat.h"

extern FLAGS bFlags;
extern unsigned char  DBUF[BUFFER_LENGTH];
//////////////////////////////////////////
unsigned char UARTBUF[UARTBUF_LENGTH];
SYS_INFO_BLOCK  DeviceInfo;
FILE_INFO  ThisFile;

Command_Def  Command;
Response_Def Response;
C026_Def code026;
WAVdata_Def WAVdata;
BG_Def  BG;
Filelist_Def  Filelist;

unsigned short BCDcodeTemp;					   //缓存并口信号,用来判断是否是同一信号反复接入
unsigned short  DirStartCluster,NowCluster;
unsigned long  NowSector;
ShowFileName_Def  ShowFileName[MaxLFNum];	//long file struct
unsigned char *WAVSEND;
unsigned long WAVreadcount;
unsigned long setpointer;					//播放音档的位置指针
/////////////////////////////////////////////



void Background(void)
{
 unsigned char i;
 BG.BGM = 1;	//表示正在播放背景音乐的状态
 if(BG.done)		//若一首播放完,则载入下一首背景音乐
 {
	Command.CLass = 0x01;//设置命令为打开文件
	for(i=0;i<8;i++)
	{
	 Command.Parameter[i] = 0x20;//把文件名设为空格
	}
	Command.Parameter[8] = 0x57;//w
	Command.Parameter[9] = 0x41;//a
	Command.Parameter[10] = 0x56;//v

	switch(BG.count)		//寻找背景音乐名
	{
	 case 1:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x31;	//1
	 	break;
	 case 2:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x32;	//2
	 	break;
	 case 3:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x33;	//3
	 	break;
	 case 4:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x34;	//4
	 	break;
	 case 5:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x35;	//5
	 	break;
	 case 6:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x36;	//6
	 	break;
	 case 7:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x37;	//7
	 	break;
	 case 8:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x38;	//8
	 	break;
	 case 9:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x30;	//0
		Command.Parameter[3] = 0x39;	//9
	 	break;
	 case 10:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x30;	//0
	 	break;
	 case 11:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x31;	//1
	 	break;
	 case 12:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x32;	//2
	 	break;
	 case 13:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x33;	//3
	 	break;
	 case 14:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x34;	//4
	 	break;
	 case 15:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x35;	//5
	 	break;
	 case 16:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x36;	//6
	 	break;
	 case 17:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x37;	//7
	 	break;
	 case 18:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x38;	//8
	 	break;
	 case 19:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x31;	//1
		Command.Parameter[3] = 0x39;	//9
	 	break;
	 case 20:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x30;	//0
	 	break;
	 case 21:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x31;	//1
	 	break;
	 case 22:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x32;	//2
	 	break;
	 case 23:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x33;	//3
	 	break;
	 case 24:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x34;	//4
	 	break;
	 case 25:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x35;	//5
	 	break;
	 case 26:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x36;	//6
	 	break;
	 case 27:
		Command.Parameter[0] = 0x42;	//B
		Command.Parameter[1] = 0x47;	//G
		Command.Parameter[2] = 0x32;	//2
		Command.Parameter[3] = 0x37;	//7
	 	break;
	 default: 
	 	BG.count = 1;	//从头播起
	 	return ;
	}
  BG.setpointer = 0;	//一首背景音乐播放完后,第二首歌从头播起
  for(i=0;i<8;i++)BG.name[i] = Command.Parameter[i];	//存储背景音乐名,用来断点续播
 }
 else
 {
  for(i=0;i<8;i++)Command.Parameter[i] = BG.name[i];	//断点续播
 }
 setpointer = BG.setpointer;		//断点续播
 if(!Findfile())		//若U盘中无所播放文件,则播放下一首
	{
	  BG.done = 1;		//播放背景音乐完成
	  BG.count++;		//播放计数加1
	  if(BG.count>27)BG.count = 1;		//设置最多有27首背景音乐(需配合上面的case语句段)
	  return;
	}
 UartHandler();
 if(BG.BGM)		//在背景音乐播放状态下退出播放子程序时设置
	 {
	  BG.done = 1;		//播放背景音乐完成
	  BG.count++;		//播放计数加1
	  if(BG.count>27)BG.count = 1;		//设置最多有50首背景音乐(需配合上面的case语句段)
	 }
}

/*
unsigned char Decode026(void) //翻译026编码
{
	unsigned char i;
	unsigned char nosignal;
	nosignal = 0;
	bFlags.bits.bUartInDone=0;
	Command.CLass = 0x01;//设置命令为打开文件
	for(i=8;i>0;i--)
	{
	 Command.Parameter[i] = 0x20;//把文件名设为空格
	}
	Command.Parameter[8] = 0x57;//w
	Command.Parameter[9] = 0x41;//a
	Command.Parameter[10] = 0x56;//v
	setpointer = 0;		//播放信号音乐时,从头播起
	
	switch(code026.floor)//设置文件名
	{
	 case 0x0001: //i.e.  一楼 01F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x31;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0002: //i.e.  二楼 02F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x32;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0003: //i.e.  二楼 03F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x33;
		Command.Parameter[2] = 0x46;
		break;
	 case 0x0004: //i.e.  二楼 04F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x34;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0005: //i.e.  二楼 05F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x35;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0006: //i.e.  二楼 06F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0007: //i.e.  二楼 07F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x37;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0008: //i.e.  二楼 08F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x38;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0009: //i.e.  二楼 09F
	 	Command.Parameter[0] = 0x30;
		Command.Parameter[1] = 0x39;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000a: //i.e.  二楼 10F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x30;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000b: //i.e.  二楼 11F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x31;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000c: //i.e.  二楼 12F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x32;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000d: //i.e.  二楼 13F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x33;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000e: //i.e.  二楼 14F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x34;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x000f: //i.e.  二楼 15F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x35;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0010: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
	 case 0x0011: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0012: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0013: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0014: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0015: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0016: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0017: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0018: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0019: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001a: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001b: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001c: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001d: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001e: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x001f: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0020: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0021: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0022: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0023: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;
     case 0x0024: //i.e.  二楼 16F
	 	Command.Parameter[0] = 0x31;
		Command.Parameter[1] = 0x36;
		Command.Parameter[2] = 0x46;
	 	break;

⌨️ 快捷键说明

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