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.

[参考译文] TMS320F28335:使用28335在 code composer 中进行字符串连接

Guru**** 2553260 points
Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1417106/tms320f28335-string-concatenate-in-code-composer-using-28335

器件型号:TMS320F28335

工具与软件:

您好!

   我使用的是 TMS320F28335

我正在尝试使用字符串 conbat、strcpy 、strcmp 函数 、例如 Testdata[10]={'\x02'、'A'、'B'、'C'、'2'、'D'、'0'、'M'、'\x03'};

 使用 oncat 和 strcpy 将该 Testdata 混合到字符串中、如下所示的代码。

unsigned char extracted_data[5];
unsigned char Concatenat_Data[]={"\0"};
unsigned int receivedData[10] = {'\x02', 'F', 'R', 'M','2', 'D','0','M','\x03'};
unsigned int process_buffer()
{
    unsigned int i,j, initial_index=0,last_index,c=0;

    unsigned int is_cmd_ready = 0;
    char String_Rxd[10] = {"\0"};
    unsigned int buffer_size = sizeof(receivedData) / sizeof(receivedData[0]);

            for (j = 1; j < buffer_size && receivedData[j] != '\x03'; j++)
            {
               if(receivedData[initial_index] == '\x02' && receivedData[8] == '\x03')
               {

                received_command[j - 1] = receivedData[j];
                Concatenat_Data[c] = received_command[j - 1];
                printf("Concatenat_Data: %c\n", Concatenat_Data[c]);

                printf("Received data: %c\n", received_command[j - 1]);  
                c++;
               }
               else if(receivedData[0] != '\x02' || receivedData[8] != '\x03')
               {

               }
            }

      /*Concat function*/
            concatenateStrings(String_Rxd, Concatenat_Data);
            printf("String_Rxd: %s\n", String_Rxd);
              /*Copy string function*/
            strcpy(extracted_data, Concatenat_Data);
            printf("extracted_data: %s\n", extracted_data);

            c=0;
			is_cmd_ready = 1;

        return is_cmd_ready;
}
void concatenateStrings(char* str1, const char* str2)
{

    while (*str1) {
        ++str1;
    }
    while (*str2) {
        *str1++ = *str2++;
    }

    // Add the null-terminating character
    *str1 = '\0';
}

i)第一次运行 获取连接字符串的代码时、使用 printf 可以确保数据正确连接。

结果:
String_Rxd:基准

Extracted_data:FRM

ii)但当我们尝试 添加额外的函数/代码修改时、我们没有得到 以前的结果所对应的字符串字符串。  

结果:

String_Rxd:
提取_data:  

1)需要澄清这一点 ,因为我们正在尝试添加额外的函数/代码,我们没有得到字符串.

对于字符串或应添加的内存大小、我们应该对配置进行任何更改? Code Composer 中  

2)当我们在这个过程中添加更多的函数时,我们有时会得到这样的结果,一些额外的符号会被显示出来
Extracted_data:[空]或 Extracted_data: np€Ëc÷Ð`XÈî99 x˜w: wW²

3) 3) Code composer 是否支持 strlen 函数  

谢谢。 此致、

Taruna G

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

    尊敬的 Taruna:

    您是否可以尝试单步执行修改后的代码、看看是哪一行导致了问题? 此外、您要修改什么内容?

    可以、C2000编译器支持 C 标准库中包含 strlen ()函数的函数。  只需添加 string.h 头文件即可。

    此致、

    Delaney

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

    你好感谢你的答复。

     

    1)当我们执行单步执行时,它被卡在 printf 语句中。

    2) 2)我正在执行 strcpy/strcat 的一个函数、另一个函数用于 strcmp [修改]

     *实际上,我们正在复制代码从记事本和粘贴代码在 code composer 中,这会导致任何问题吗?

    *当我们在 code composer 和 execute 中键入每一行代码时,到目前为止,我们得到了正确的预期结果,但有时我们没有 得到连接的字符串是空的。

    您能不能就此提供指导并与我分享是否有任何关于 code composer[TMS320F28335]的"字符串"的引用。

    谢谢。此致、

    Taruna G

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

    尊敬的 Taruna:

    在更深入地查看您的代码后、我对您要尝试执行的操作感到有点困惑。 在 C 语言中、字符串文字只是一组字符、结尾处为空字符、以终止。 由于从 INT 数组开始、您可以将它们转换为无符号字符、并在结尾添加一个空字符以生成字符串。 如果输入为:

    unsigned int receivedData[10]={'\x02'、'F'、'R'、'M'、'2'、'D'、'0'、'M'、'\x03'};

    您希望生成的字符串/字符数组看起来是什么样子? 您是否只是试图删除起始字符和结束字符?

    此致、

    Delaney