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

将C字符数组转换为Matlab字符串[Matlab编码器],c,matlab,matlab-coder,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.c

我的目的是为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);
}
这个帖子不适合我:
您编写的代码到底出了什么问题?您是否看到任何错误消息,或得到与预期不同的答案

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