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/MSP432P401R:将Int值作为字符串传递给KENTEC K350

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430G2553

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/572342/ccs-msp432p401r-passing-an-int-value-as-a-string-to-kentec-k350

部件号:MSP432P401R
主题中讨论的其他部件:MSP430G2553

工具/软件:Code Composer Studio

您好,

我是MSP432微控制器的新用户,我使用Kentec K350 BoosterPack和TI图形库。 我希望在显示设备上显示整数,由于图形库需要显示字符串参数,所以我无法将int转换为字符串。  

我也在其他线程中搜索过,发现很少有像itoa()和sprint()一样的函数用于相同的puspose,但也有人提到它们占用内存空间等,我真的不知道它们的应用方法。 因此,任何人都可以帮助我进行转换,并将其发送至k350以上的显示屏。

谢谢。

Amit_K

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

    您好,Amit!

    使用itoa和sprintf完全没问题,特别是对于MSP432,因为它速度快,具有大量闪存和SRAM。 此外,Sprintf具有不同的支持级别。 仅使用no float选项时,所需的内存不是那么大。 启用float支持将使用更多内存,但对于MSP432,仍然没有问题。在MSP430G2553上支持float的sprintf将会是一个问题。

    整数到ASCII的转换非常简单

    UINT16_t int_number = 123;
    CHAR ASCII_NUMBER[4];
    
    ASCII_NUMBER[0]=((int_number / 100)+ 48);
    int_number %= 100;
    ASCII_NUMBER[1]=((int_number / 10)+ 48);
    ASCII_NUMBER[2]=(((int_number %10)+ 48);
    ASCII_NUMBER[3] 

    现在,您的数组中将有三个字符'1','2'和'3'加上字符串终止符。 此简单示例不包含带符号值,它用于三个固定数字,因此只将其视为基本工作原理。

    无论如何...我会使用itoa或sprintf函数。

    #include <stdlib.h>
    
    uint16_t int_number =123;
    char ascii_numbers[10];
    
    itoa( int_number, ascii_numbers, 10); 

    或者对于sprintf:

    #include <stdio.h>
    
    uint16_t int_number =123;
    char ascii_numbers[10];
    
    sprintf (ascii_numbers,"%d",int_number); 

    Dennis

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

    您好,Dennis,

    感谢您的回复。 现在我对Sprintf和iota的怀疑已经消除了,我也理解了转换程序。

    我已经在程序中实现了sprintf()函数,一切都运行良好,我也得到了所需的输出,但在编译程序后,我得到了一个警告AS

    "char *"类型的#169-D参数与"INT8_t *"类型的参数不兼容

     用于图形库中的以下语句

    graphics_drawstring (&g_sContext,结果,AUTO_STRING_LENGTH,10.017万, 透明文本);

    其中,result声明为char result[16] ,并保存 uint16_t编号中int的字符串副本


    有关此警告的任何帮助。

    谢谢你

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

    您好,Amit!

    这只是一个警告,说明函数需要uint8_t指针而不是char指针。 可以将结果声明为uint8_t 两种数据类型都可用于保存ASCII字符。 然后,sprintf可能会抱怨它需要一个字符指针;)警告由用户(您)处理。 编译器只会告诉您存在不匹配-如果您知道不匹配是正常的,则可以忽略该警告。 但请尝试uint8_t声明。

    Dennis

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Dennis的帮助和对我所有疑问的澄清
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Dennis!