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

📄 test-1.c~

📁 This fat 16 can be used for logging function. The user can use it for logger device.
💻 C~
📖 第 1 页 / 共 5 页
字号:
            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 + -