将C字符数组转换为Matlab字符串[Matlab Coder]

时间:2019-04-03 16:13:28

标签: c matlab matlab-coder

我的意图是为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 个答案:

答案 0 :(得分:1)

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

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