📄 play.i
字号:
unsigned char mCSW_Status;
unsigned char mReserved;
} mCSW;
} BOC;
} CMD_PARAM;
typedef CMD_PARAM CMD_PARAM_I;
typedef CMD_PARAM *P_CMD_PARAM;
extern UINT8V CH375IntStatus;
extern UINT8V CH375DiskStatus;
extern unsigned char CH375LibConfig;
#line 549 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
extern unsigned char CH375vDiskFat;
extern unsigned char CH375vSecPerClus;
extern UINT32 CH375vStartCluster;
extern UINT32 CH375vFileSize;
extern UINT32 CH375vCurrentOffset;
#line 595 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
extern unsigned char CH375GetVer( void );
extern void CH375Reset( void );
extern unsigned char CH375Init( void );
extern void CH375DirtyBuffer( void );
extern unsigned char CH375FileOpen( void );
extern unsigned char CH375FileEnumer( void );
extern unsigned char CH375FileClose( void );
extern unsigned char CH375FileQuery( void );
extern unsigned char CH375FileModify( void );
extern unsigned char CH375FileLocate( void );
extern unsigned char CH375FileReadX( void );
extern unsigned char CH375FileErase( void );
extern unsigned char CH375FileCreate( void );
extern unsigned char CH375FileWriteX( void );
extern unsigned char CH375DiskSize( void );
extern unsigned char CH375DiskQuery( void );
extern unsigned char CH375ByteLocate( void );
extern unsigned char CH375ByteRead( void );
extern unsigned char CH375ByteWrite( void );
extern unsigned char CH375BulkOnlyCmd( void );
extern unsigned char CH375DiskReady( void );
extern unsigned char CH375DiskConnect( void );
#line 630 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
void xWriteCH375Cmd(unsigned char mCmd );
void xWriteCH375Data(unsigned char mData );
unsigned char xReadCH375Data( void );
CMD_PARAM_I mCmdParam;
unsigned char DISK_BASE_BUF[512];
void xQueryInterrupt( void )
{
while (((*(volatile unsigned char *)0x30) & 0x02 ) );
xWriteCH375Cmd(0x22 );
CH375IntStatus = xReadCH375Data( );
if ( CH375IntStatus == 0x16 ) CH375DiskStatus = 0x01;
else if ( CH375IntStatus == 0x15 ) CH375DiskStatus = 0x02;
}
void xWriteToExtBuf(unsigned char mLength )
{
mLength --;
}
void xReadFromExtBuf(unsigned char mLength )
{
mLength --;
}
unsigned char CH375LibInit( void )
{
CH375LibConfig =( (0 << 7 ) | (0 << 5 ) | (0 << 4 ) | (1 << 2 ) | 1 );
DISK_BASE_BUF[0] = 0;
if ( CH375GetVer( ) < 0x29 ) return( 0xFF );
return( CH375Init( ) );
}
#line 42 "Play.c"
void mp3_pause(void)
{
while(1);
}
void mDelaymS( UINT32 ms )
{
UINT16 i;
while ( ms -- ) for ( i = 2600; i != 0; i -- );
}
void test_vs1003()
{
UINT16 data_pointer;unsigned char i;
Print_str("Test vs1003b... \r\n");
while (1)
{
data_pointer=0;
while(data_pointer<4800)
{
if(((*(volatile unsigned char *)0x30) & 0x01) != 0)
{
{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
for(i=0;i<32;i++)
{
spiSend(vsBeepMP3[data_pointer++]);
}
{(*(volatile unsigned char *)0x32) |= 0x04;};
}
}
}
}
void Init_usb(void)
{
unsigned int i;unsigned char t0,data,t1,t2;
unsigned int usbsize;
Print_str("Now debug usb host....\r\n");
CH375_PORT_INIT( );
if(CH375LibInit()==0){Print_str("Ch375 init Ok!\r\n");}
else Print_str("Ch375 init Error!\r\n");
while ( CH375DiskStatus != 0x02 ) xQueryInterrupt( );
mDelaymS( 200 );
Print_str("Find usb\r\n");
for ( i = 0; i < 5; i ++ )
{
if ( CH375DiskReady( ) == 0x00 ) break;
}
Print_str("Run here\r\n");
Print_str("Usb = ");
Print_size(CH375DiskSize());
Print_str("M\r\n");
}
void mStopIfError(unsigned char iError )
{
if ( iError == 0x00 ) return;
Print_str( "Error:=");
Print_val(iError);
while ( 1 );
}
void write_block(unsigned char *ps)
{
unsigned int i;
mCmdParam.WriteX.mSectorCount =1;
mCmdParam.WriteX.mDataBuffer = ps;
i = CH375FileWriteX();
}
void close_make_file(void)
{
unsigned int i;
mCmdParam.Close.mUpdateLen = 1;
i = CH375FileClose( );
mStopIfError( i );
}
void make_newfile(unsigned char *Filename)
{
unsigned int i;
Print_str( "Make New File\r\n" );
strcpy((char *)mCmdParam.Create.mPathName, Filename);
i = CH375FileCreate();
mStopIfError( i );
Print_str( "Make File Ok\r\n" );
}
void mp3_play(char *s)
{
unsigned int i;
unsigned char t0,data,t1,t2;
UINT16 data_pointer;
unsigned char *ps;
show_clear();
show_lcd(0, 0, 192, 2, &play_menu[0],0);
show_play(s,3,0);
strcpy( (char *)mCmdParam.Open.mPathName, s);
CH375FileOpen( );
while(data_pointer<2048)
{
while(((*(volatile unsigned char *)0x30) & 0x01) == 0);
{{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
for(i=0;i<32;i++)
{
spiSend(0x00);
data_pointer++;
}
{(*(volatile unsigned char *)0x32) |= 0x04;};
if(data_pointer == 2047)break;
}
}
SoftReset();
keybuf = 0;;
while(1)
{
if(keybuf == 5) break;
mCmdParam.ReadX.mDataBuffer = &mp3buf[0];
mCmdParam.Read.mSectorCount =1;
CH375FileReadX();
ps = &mp3buf[0];
data_pointer=0;
while(data_pointer<512)
{
while(((*(volatile unsigned char *)0x30) & 0x01) == 0);
{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
for(i=0;i<32;i++)
{
spiSend(*ps++);
data_pointer++;
}
{(*(volatile unsigned char *)0x32) |= 0x04;};
if (data_pointer==512) break;
}
if(mCmdParam.Read.mSectorCount<1 ) break;
}
CH375FileClose( );
}
void RecordAdpcm1003(unsigned char *Filename)
{
unsigned int ii=0;
unsigned int w = 0, idx = 0;
unsigned long int n;
unsigned long int temp;
make_newfile(Filename);
record_init();
for (idx=0; idx < sizeof(header); idx++)
{
mp3buf[idx] = header[idx];
}
keybuf = 0;;
n=0;
while (1)
{
do {
w = mp3ReadReg(0x09);
} while (w < 256 || w > 896);
while (idx < 512) {
w = mp3ReadReg(0x08);
while ((idx & 255) == sizeof(header)+2 && (w & 0xFF))
{
do {
w = mp3ReadReg(0x09);
} while (w < 256);
w = mp3ReadReg(0x08);
}
mp3buf[idx++] = w>>8;
mp3buf[idx++] = w&0xFF;
}
idx = 0;
write_block(&mp3buf[0]);
n += 1;
if(keybuf != 5){keybuf = 0;;continue;}
break;
}
close_make_file();
strcpy( (char *)mCmdParam.Open.mPathName, Filename);
CH375FileOpen( );
mCmdParam.ReadX.mDataBuffer = &mp3buf[0];
mCmdParam.Read.mSectorCount =1;
Print_str("读取文件第一个扇区\r\n");
mStopIfError(CH375FileReadX());
CH375FileClose( );
n *= 2;
temp = n*256+52;
mp3buf[4] = (unsigned char)temp;
temp >>= 8;
mp3buf[5] = (unsigned char)temp;
temp >>= 8;
mp3buf[6] = (unsigned char)temp;
temp >>= 8;
mp3buf[7] = (unsigned char)temp;
temp = 8000;
mp3buf[24] = (unsigned char)temp;
temp >>= 8;
mp3buf[25] = (unsigned char)temp;
temp >>= 8;
mp3buf[26] = (unsigned char)temp;
temp >>= 8;
mp3buf[27] = (unsigned char)temp;
temp = 8000*256;
temp /= 505;
mp3buf[28] = (unsigned char)temp;
temp >>= 8;
mp3buf[29] = (unsigned char)temp;
temp >>= 8;
mp3buf[30] = (unsigned char)temp;
temp >>= 8;
mp3buf[31] = (unsigned char)temp;
temp = n*505;
mp3buf[48] = (unsigned char)temp;
temp >>= 8;
mp3buf[49] = (unsigned char)temp;
temp >>= 8;
mp3buf[50] = (unsigned char)temp;
temp >>= 8;
mp3buf[51] = (unsigned char)temp;
temp = n * 256;
mp3buf[56] = (unsigned char)temp;
temp >>= 8;
mp3buf[57] = (unsigned char)temp;
temp >>= 8;
mp3buf[58] = (unsigned char)temp;
temp >>= 8;
mp3buf[59] = (unsigned char)temp;
mCmdParam.WriteX.mSectorCount =1;
mCmdParam.WriteX.mDataBuffer = &mp3buf[0];
Print_str("新信息写入文件\r\n");
mStopIfError(CH375FileWriteX());
CH375FileClose( );
Print_str("Record ok\r\n");
}
unsigned char test_file(unsigned char *s)
{
unsigned char ii;
while(ii != 100){
if(*s++ != '.'){ii++; continue;}
if((*s == 'W')|(*s == 'w')) return 1;
if((*s == 'M')|(*s == 'm')) return 1;
return 0;
}
return 0;
}
#line 318 "Play.c"
void Play_audio(void)
{
unsigned char c;
unsigned int i;
for ( c = 0; c < 255; c ++ )
{
strcpy( mCmdParam.Open.mPathName,"\\*" );
i = strlen( (char *)mCmdParam.Open.mPathName );
mCmdParam.Open.mPathName[ i ] =0xFF;
CH375vFileSize=c;
i = CH375FileEnumer( );
if ( i == 0x42 ) break;
if ( i != 0x00 ) break;
if(test_file((char *)mCmdParam.Open.mPathName) != 0){
if(CH375vFileSize!=0xFFFFFFFF)
{
mp3_play((char *)mCmdParam.Open.mPathName);
}
}
}
}
#line 344 "Play.c"
void show_file_name(unsigned char point,unsigned char type)
{
unsigned char ii;
ii = 0;
while(1){
show_clear();
show_lcd(0, 0, 192, 2, &tab[0],0);
if(point > 0)
show_play(&filename[0][0],2,0);
if(point > 1)
show_play(&filename[1][0],4,0);
if(point > 2)
show_play(&filename[2][0],6,0);
switch(ii){
case 0: show_play(&filename[0][0],2,1);break;
case 1: show_play(&filename[1][0],4,1);break;
case 2: show_play(&filename[2][0],6,1);break;
}
keybuf = 0;;
while(keybuf == 0);
if(keybuf == 3) {
if(--ii == 255) break;
}
if(keybuf == 1){if(++ii == point){
if(point == 3) break;
ii = 0;
}
}
if(keybuf == 5) break;
if(keybuf == 4) {
if(type == 0) mp3_play(&filename[ii][0]);
else {strcpy(&Filename[0],&filename[ii][0]);
break;
}
}
}
}
void Play_xuanzhe(unsigned char type)
{
unsigned char point;
unsigned char temp;
unsigned char c;
unsigned int i;
point = 0;
for ( c = 0; c < 255; c ++ )
{
strcpy( mCmdParam.Open.mPathName,"\\*" );
i = strlen( (char *)mCmdParam.Open.mPathName );
mCmdParam.Open.mPathName[ i ] =0xFF;
CH375vFileSize=c;
i = CH375FileEnumer( );
if ( i == 0x42 ) break;
if ( i != 0x00 ) break;
if(test_file((char *)mCmdParam.Open.mPathName) != 0){
if(CH375vFileSize!=0xFFFFFFFF)
{
strcpy(&filename[point][0],(char *)mCmdParam.Open.mPathName);
point++;
}
}
if(point != 3) continue;
show_file_name(point,type);
if(keybuf == 3) {c=0; point=0;keybuf = 0;;}
if(type != 0){
if(keybuf == 4) return;
if(keybuf == 5) {Filename[0]= 0x00; return;}
}
point = 0;
}
if((point != 0)&(point != 3)) {show_file_name(point, type);
if(type != 0){
if(keybuf == 4) return;
if(keybuf == 5) {Filename[0]= 0x00; return;}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -