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/LP-CC2652RB:无法使用消息队列写入文件中的数据

Guru**** 2560390 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/950093/ccs-lp-cc2652rb-unable-to-write-data-in-file-using-message-queue

器件型号:LP-CC2652RB

工具/软件:Code Composer Studio

大家好、我正在尝试实现消息队列、以便从另一个微控制器接收数据到 CC2652 Launchpad。 我想接收数据并将其写入 SD 卡。 为此、我将关注以下链接中提供的实验练习。

我已根据我的应用修改了本实验练习。 接收到“n”字符后,我将打开 LED 指示灯。  

接下来、我要将从 UART 接收到的字符数组写入 SD 卡。 但我遇到了错误。 一个错误是我无法访问 alarm.c 文件中的传入字符变量。 我在哪里声明它、以便在所有文件中使用它。 我正在附加所有三个编辑过的文件,即 Uartecho.c、main_tirtos 和 alarm.c。

请帮我、我真的很困在其中。

谢谢、
Shivam

e2e.ti.com/.../uartecho.ce2e.ti.com/.../main_5F00_tirtos.ce2e.ti.com/.../alarm.c

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

    您好!

    Shivam Trivedi 说:
    我在哪里声明它,以便在所有文件中使用它。

    这是一个 C 语言问题、您可以在互联网上找到几个相关的参考文献。 搜索会产生多个结果、例如:

    http://www.cplusplus.com/forum/general/28060/

    http://www.cplusplus.com/forum/beginner/93361/

    希望这对您有所帮助、

    拉斐尔

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

    您好、Desouza、感谢您的回应。

    我已将 char 输入变量声明为 extern 全局变量。 但是,现在出现了一个问题,即当程序收到“\n”  时。  代码卡滞、如下图所示。 也就是说、代码不执行 alarm.c 文件中的文件写入部分、而是在我只打开 LED 时轻松打开 LED。

    请参考图片和随附的代码。

    while (mq_receive (* mqdes、(char *)&msg、sizeof (msg)、NULL)!=-1){
    /*打开用户 LED */
    GPIO_WRITE (CONFIG_GPIO_LED_0、CONFIG_GPIO_LED_ON);
    Task_sleep (sleepTickCount);
    SDFatFS_Handle sdfatfsHandle;
    文件*src;
    SDFatFS_init();
    add_device (fatfsPrefix、_MSA、ffcio_open、ffcio_close、ffcio_read、
    ffcio_write、ffcio_lseek、ffcio_unlink、ffcio_rename);
    /*初始化实时时钟*/
    Clock_settime (clock_realtime、&ts);
    sdfatfsHandle = SDFatFS_open (CONFIG_SDFatFS_0、DRIVE_NUM);
    /*打开文件进行读取和写入*/
    src = fopen (inputfile、"w+");
    fseek (src、0、seek_end);
    fwrite(&INUT, 1, src);
    /*关闭 inputfile[]*/
    fclose (src);
    /*停止 SDCard */
    SDFatFS_Close (sdfatfsHandle);
    } 

    此外、我还收到这些警告、这些警告意味着什么?

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

    上述问题得到解决、我能够通过串行方式接收连续数据。 但唯一的问题是数据不会写入文件中。

    只会创建没有内容的文件。 如果由于输入变量而无法写入内容、那么 alarm.c 文件中不能访问与 UART 传入字符中相同的输入变量。

    我还能够在终端上持续接收 UART 数据的同时将虚拟文本写入 SD 文件。 我离最终目标只有一步之遥。 请帮我将 UART 数据写入 SD 卡文件。 请参阅随附的代码。

    while (mq_receive (* mqdes、(char *)&msg、sizeof (msg)、NULL)!=-1){
    /*打开用户 LED */
    GPIO_WRITE (CONFIG_GPIO_LED_0、CONFIG_GPIO_LED_ON);
    Task_sleep (sleepTickCount);
    SDFatFS_Handle sdfatfsHandle;
    文件*src;
    SDFatFS_init();
    add_device (fatfsPrefix、_MSA、ffcio_open、ffcio_close、ffcio_read、
    ffcio_write、ffcio_lseek、ffcio_unlink、ffcio_rename);
    /*初始化实时时钟*/
    Clock_settime (clock_realtime、&ts);
    sdfatfsHandle = SDFatFS_open (CONFIG_SDFatFS_0、DRIVE_NUM);
    /*打开文件进行读取和写入*/
    src = fopen (inputfile、"w+");
    //fseek (src、0、seek_end);
    fwrite(&INUT, 1, src);
    fwrite (textarray、1、strlen (textarray)、src);
    /*关闭 inputfile[]*/
    fclose (src);
    /*停止 SDCard */
    SDFatFS_Close (sdfatfsHandle);
    }
    
    返回(0); 

    谢谢、

    Shivam

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

    请回答以下问题、否则我是否应为其打开单独的主题?