将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]

Posted

技术标签:

【中文标题】将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]【英文标题】:Converting a C char array into a Matlab String [Matlab Coder] 【发布时间】:2019-04-03 16:13:27 【问题描述】:

我的意图是为 Matlab 系统的输出显示一个类型为 char_T data[] 的字符串,我通过 coder.ceval 接收 C 中的一个函数

我想更具体地显示缓冲区变量,因为它必须声明缓冲区变量

matlab
function data = stepImpl(obj)
        buffer = ¿¿ ??;

        if coder.target ('Rtw')
            coder.cinclude('File_Wrapper.h');
            coder.ceval('function',obj.port, coder.wref(buffer)); 
            data = ¿¿¿ string(buffer) ???;
        end
end

这将是char_T data[]发给我的函数,我使用coder.wref在下面的方法中填充变量

void function(uint8_T uartPort, char_T data[])

    char buffer[30];
    if (uartPort == 1)
    
        fgets(buffer, 10, uart1);
    
    else if (uartPort == 2)
    
        fgets(buffer, 10, uart2);
    

    snprintf (data, sizeof(buffer), "%s", buffer);

这篇文章不适合我: Converting a C char array into a Matlab String using Matlab Coder

【问题讨论】:

【参考方案1】:

您编写的代码到底出了什么问题?您是否看到任何错误消息,或者得到的答案与您的预期不同?

我认为您可能会遇到问题,因为 MATLAB 中的“缓冲区”变量不够大,无法在 C 代码中存储您打印到其中的所有内容。我建议使用 'buffer = blanks(10)' 对其进行初始化,以确保它至少可以容纳 10 个字符(这是我认为您正在阅读的数字)。另一个不错的选择可能是只使用“fread”而不是您的自定义 C 代码(如果可能的话),因为 MATLAB Coder 支持该函数。

【讨论】:

以上是关于将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]的主要内容,如果未能解决你的问题,请参考以下文章

用Matlab将字符串转换成数组

Matlab中如何将字符串数组转换为字符数组?

怎样把Matlab的cell 变为普通的数组

Matlab:将单元格数组转换为单个单元格数组

MATLAB如何将数字数组转换成字符串?

如何将 Matlab 单元字符串数组转换为 .NET 字符串数组