This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430BT5190:在 Tx 缓冲器中发送整数值

Guru**** 2379250 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/922003/ccs-msp430bt5190-sending-a-integer-value-in-tx-buffer

器件型号:MSP430BT5190

工具/软件:Code Composer Studio

您好!

我们将在 UART 的 Tx 缓冲区中发送整数值、如这样、并使用 sprintf 函数按字符串进行转换。

int A[10]={1、2、3、4、5、6、7、8、9、10};

char ch_md [10];

char cnt = 0;

sprintf (ch_md、"%d"、a[cnt]);

CNT++;

TX_buffer = ch_MD;

现在、我们可以读取所有值1到10、这样 ch_md 是正常的、或者像这个 ch_md[cnT]一样进行写入

请建议我

此致

亚什·沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此代码段中确实缺少一些内容。

    此代码将在 ch_MD 中创建字符串"1"和"\0"。

    然后、将 ch_MD 的地址放入 Tx_Buffer 中。

    是否要创建10个字符串或一个包含10个值的字符串?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我只需要在我们的串行控制台中打印1到10、这样我就可以做到这一点

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    我将整数数组值转换为字符串以用于控制台 UART、现在我需要在控制台中打印1到10个字符、因此上面的代码段很好、或者就像这样

    sprintf (ch_md[cnt]、"%d"、a[cnt]);

    TX_buffer = ch_md[cnt];

    CNT++;

    此致

    亚什·沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    我需要创建10个不同的字符串、并在串行控制台中打印、例如1、2、3、4、5、6、7、8、9、10

    此致

    亚什·沙阿

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要一组字符串数组和一个 for 循环:

    char ch_md [10]

    对于(i=0;i<10;i++)

       sprintf (ch_md[i]、"%d、"、a[i]);

        TX_buffer = ch_md[cnt];

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我看不到对字符串数组的需求。  考虑类似的东西...

    int i;
    char local_buffer[5];
    
    for (i = 1;i <= 10;i++)
    {
    sprintf (local_buffer、"%d、"、i);
    
    /*我假设这一行会导致缓冲区发送*/
    /*通过 UART *
    TX_buffer = local_buffer;
    }
    
    strcpy (local_buffer、"\n");
    Tx_buffer = local_buffer;
    

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我也没有看到这种需要、可能是他的家庭作业分配需要一个"数组"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请告诉我这些回复是否能解决您的问题。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这可以解决我的问题我将执行这种类型的解决方案、其工作完全不需要创建任何整数常量数组。 在下面的所有条件下、在我们的函数中调用它们、它们会重新调用。

    char ch_mx[1];

    char md_cnt = 0;

    INT TST = 0;

    if (md_cnt > 50){
       TXBUF ='\n';
       mD_cnt = 0;


    sprintf (char_mx、"%d"、md_cnt);  


    while (char_mX[TST]!='\0'){
    TXBUF = char_mx[TST];
    TST++;

    TXBUF ='、';   //逗号
    md_cnt++;

    输出如下:0、1、3、4、. 11、... 21、 高达50  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您想占用存储器、则可以为 ch_mx 分配1个字符、但最多只能写入3个字符。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否测试过此代码? 我得到 ch_mx 未定义。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Keith Barkley 说得很好。  sprintf 写入的缓冲区必须足够大、以容纳写入缓冲区的最大字符数、加上1表示结束字符串的 NULL 字节。

    谢谢、此致、

    乔治