मैं अपने प्रोग्राम के साथ printk के बजाय uart_poll_out का उपयोग करने की कोशिश कर रहा हूं और printk से पहले मैं अपने यूआर्ट कंसोल के लिए सही आउटपुट प्राप्त करने में सक्षम था। यहाँ कोड और सही आउटपुट था:

    for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
    {
        printk("%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
    }
help    Show commands and descriptions
sample  sample function

अब मुझे uart_poll_out का उपयोग करना है और मेरा आउटपुट गड़बड़ा गया है। मुझे नहीं पता कि इसे कैसे ठीक किया जाए/इसमें क्या गलत है। यहाँ मेरा कोड और (गलत) आउटपुट है। मैं चाहता हूं कि आउटपुट ऊपर जैसा ही दिखे।

    for (int i = 0; i < sizeof cmd_handles / sizeof cmd_handles[0]; i++)
    {
        u8_t tempbuff[1];
        u8_t buf[sizeof(cmd_handles[i].cmd) + sizeof(cmd_handles[i].help) + 5]; // the 5 is arbitrary
        sprintf(buf, "%s\t%s\n", cmd_handles[i].cmd, cmd_handles[i].help);
        for (int i = 0; i < sizeof(buf); i++)
        {
            uart_poll_out(comm_uart, buf[i]);
        }
    }
help    Show comsample  sample

यह cmd_handles है:

const cli_cmd_handle_t cmd_handles[] =
{
    {.cmd = "help", .help = "Show commands and descriptions", .handler = cli_help_handler},
    {.cmd = "sample", .help = "sample function", .handler = sample_function},
};

क्या कोई जानता है कि इसे कैसे ठीक करें? धन्यवाद :)

संपादित करें: cli_cmd_handle_t की परिभाषा:

{
    const char *cmd;
    const char *help;
    CliCmdHandler handler;
} cli_cmd_handle_t;```
0
PurpleSpark 16 जुलाई 2020, 19:05

1 उत्तर

सबसे बढ़िया उत्तर

धन्यवाद @WeatherVane मदद करने के लिए। मुझे सही आउटपुट प्राप्त करने के लिए sizeof() के बजाय strlen() का उपयोग करना पड़ा।

0
PurpleSpark 17 जुलाई 2020, 04:11