📄 test-1.c~
字号:
break;
#if defined(_DIRECTORIES_SUPPORTED_)
#if !defined(_READ_ONLY_)
case '7':
_FF_printf(CRLF_MKDIR);
if(get_input_str(sd_temp2, 24) != 0)
print_result(mkdir(sd_temp2),0,EOF);
break;
case '8':
_FF_printf(CRLF_DELDIR);
if(get_input_str(sd_temp2, 24) != 0)
print_result(rmdir(sd_temp2),0,EOF);
break;
#endif
case '9':
_FF_printf(CRLF_CHDIR);
if(get_input_str(sd_temp2, 24) != 0)
print_result(chdir(sd_temp2),0,EOF);
break;
#endif
case '0':
_FF_printf(CRLF_GETFILEINFO);
if(get_input_str(sd_temp, 12) != 0)
{
if(fget_file_info(sd_temp, &addr_sd, create_info, modify_info, (uint8 *) pointer, &n) != EOF)
{
_FF_printf(CRLF_FileSize, addr_sd);
_FF_printf(_S_STR, create_info);
_FF_printf(CR_ModTime);
_FF_printf(_S_STR, modify_info);
_FF_printf(CR_ATTR, *pointer);
_FF_printf(CR_STARTCLUS, n, (clust_to_addr(n)<<9));
}
else
_FF_printf(CRLF_ERROR_X, _FF_error);
}
break;
#ifndef _READ_ONLY_
case 'F':
_FF_printf(CRLF_QUICKFORMAT);
c = _FF_getchar();
_FF_putchar(c);
if((c == 'Y') || (c == 'y'))
{
_FF_printf(es_dash);
print_result(fquickformat(), 0, EOF);
}
else if((c == 'N') || (c == 'n'))
_FF_printf(o_Cancel);
else
_FF_printf(INV_RESP);
_FF_printf(FormatDoneStr);
break;
#endif
#ifdef _DEBUG_ON_
case '-':
_FF_printf(CRLF_READMEDIA);
addr_sd = get_addr_entry(7);
if(addr_sd != 0xFFFFFFFF)
{
_FF_printf(CRLF_CALCADDR, addr_sd);
_FF_read_disp(addr_sd);
}
break;
#endif
case 'E':
_FF_error = 0;
break;
#if !defined(_READ_ONLY_) && defined(_DEBUG_ON_)
case 'L':
_FF_printf(CRLF_ECLUST);
status = get_addr_entry(4);
if(status == 0xFFFF)
break;
if(erase_clus_chain(status))
_FF_printf(DASH_ERROR);
else
_FF_printf(DASH_OK);
break;
case 'B':
status = prev_cluster(0);
_FF_printf(CRLF_FINDCLUS, status, _FF_error);
_FF_printf(CRLF_LOCATE, clust_to_addr(status));
break;
case 'N':
_FF_printf(CRLF_NCLUST);
status = get_addr_entry(4);
_FF_printf(NCLUST, next_cluster(status, SINGLE));
break;
case 'M':
_FF_printf(CRLF_PCLUST);
addr_sd = get_addr_entry(4);
if(addr_sd == 0xFFFFFFFF)
break;
_FF_printf(CRLF_TCLUST);
status = get_addr_entry(4);
if(status == 0xFFFF)
break;
if(write_clus_table(addr_sd, status, SINGLE))
_FF_printf(DASH_ERROR);
else
_FF_printf(DASH_OK);
break;
#endif /*!defined(_READ_ONLY_) && defined(_DEBUG_ON_)*/
#ifdef _SD_MMC_MEDIA_
case 'R':
reset_sd();
break;
case 'I':
init_sd();
break;
#endif
#ifdef _RTC_ON_
case 'c':
rtc_get_timeNdate(&RTCHour, &RTCMin, &RTCSec, &RTCDay, &RTCMonth, &RTCYear);
_FF_printf(CRLF_DateInsert, RTCMonth,RTCDay,RTCYear,RTCHour,RTCMin,RTCSec);
break;
case 'C':
set_date_time();
break;
#endif
case 'V':
_FF_printf(CRLF_VolSer);
GetVolID();
break;
#ifndef _READ_ONLY_
case 'd':
run_demo();
break;
case 'D':
run_multi();
break;
#ifdef _DIRECTORIES_SUPPORTED_
case 'Q':
run_multifold();
break;
#endif
#ifdef _SD_BLOCK_WRITE_
case 'S':
run_stream_demo();
break;
#endif
case 'W':
fwrite_demo();
break;
case 'r':
run_reopen();
break;
#endif
default:
print_demo_flag = 0;
break;
}
/* if this was a valid command, finish by printing the commands */
if(print_demo_flag == 1)
display_demo_commands();
}
/****************************************************************************
**
** Function that displays the File Commands for the Full Demo
**
** Parameters: None
**
** Returns: None
**
****************************************************************************/
void handle_level2(uint8 testchar)
{
uint16 status, c;
uint32 addr_sd;
switch(testchar)
{
case '1':
_FF_printf(CRLF_FTELL, ftell(file1));
break;
case '2':
_FF_printf(CRLF_FSEEK);
addr_sd = get_addr_entry(7);
if(addr_sd == 0xFFFFFFFF)
break;
_FF_printf(CRLF_SEEKMODE, addr_sd);
status = _FF_getchar();
switch(status)
{
case '1':
_FF_printf(DASH_CUR);
status = 0;
break;
case '2':
_FF_printf(DASH_END);
status = 1;
break;
case '3':
_FF_printf(DASH_SET);
status = 2;
break;
}
print_result(fseek(file1, addr_sd, status), 0, EOF);
break;
case '3':
_FF_putchar(fgetc(file1));
break;
#ifndef _READ_ONLY_
case '4':
_FF_printf(CRLF_ENTERCHAR);
_FF_putchar(ungetc(_FF_getchar(), file1));
_FF_printf(DASH_OK_CRLF);
break;
#endif
case '5':
while(feof(file1) == 0)
_FF_putchar(fgetc(file1));
break;
#ifndef _READ_ONLY_
case '6':
_FF_printf(CRLF_WRITEFILE);
status = _FF_getchar();
while(status != 0x1b)
{
if(fputc(status, file1) != EOF)
{
if(status == 0x08)
{
/* Backspace pressed */
ungetc('0', file1);
ungetc('0', file1);
}
_FF_putchar(status);
status = _FF_getchar();
}
else
{
_FF_printf(CRLF_WRITEERROR);
status = 0x1B; /* exit the while loop */
}
}
break;
#endif /*_READ_ONLY_*/
#ifdef _DEBUG_ON_
case '7':
dump_file_data_hex(file1);
break;
case '8':
dump_file_data_view(file1);
break;
#endif
#ifndef _READ_ONLY_
case '9':
_FF_printf(CRLF_FFLUSH);
print_result(fflush(file1), 0, EOF);
break;
#endif
case '0':
_FF_printf(CRLF_FCLOSE);
status = fclose(file1);
print_result(status, 0, EOF);
if(status == 0)
file1 = NULL;
break;
case 'E':
_FF_printf(CRLF_CLOSEPROMPT);
c = _FF_getchar();
_FF_putchar(c);
if((c == 'Y') || (c == 'y'))
{
_FF_printf(es_dash);
#ifndef _NO_MALLOC_
print_result(ffreemem(file1), 0, EOF);
#else
print_result(0, 0, EOF);
#endif
file1 = NULL;
}
else if((c == 'N') || (c == 'n'))
_FF_printf(o_Cancel);
else
_FF_printf(INV_RESP);
break;
}
if(file1 == NULL)
{
menu_level = 1;
display_demo_commands();
}
else if((testchar != '0') && (testchar != '3'))
display_file_commands();
}
/****************************************************************************
**
** Main Function
**
** Parameters: None
**
** Returns: None
**
****************************************************************************/
void main(void)
{
uint8 test_char;
init_devices();
putchar('A');
menu_level = 1;
test_char = 1;
while(test_char != '1')
{
test_char = getchar();
}
while(initialize_media() == 0)
{
printf(CRLF_ERROR_CRLF);
printf(CRLF_1toINIT);
while(getchar() != '1')
;
}
printf(CRLF_OK);
display_demo_commands();
while(1)
{
/* Place your code here */
if(rx_counter0)
{
test_char = _FF_getchar();
if(test_char == '$')
{
#ifdef _DEBUG_ON_
_FF_printf(CRLF_BOOTLOAD);
while((tx_counter1) != 0)
;
#endif
#if defined(_CVAVR_)
#asm("jmp 0xFC00")
#elif defined(_ICCAVR_)
asm("JMP (0xFC00<<1)");
#endif
}
if(menu_level == 1)
handle_level1(test_char);
else
handle_level2(test_char);
}
if(rx_counter1)
{
test_char = UDR1;
while (!(UCSR0A & 0x20))
;
UDR1 = test_char;
}
}
} /* wait xmit ready */
/*****************************************************************************
**
** EOF
**
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -