Преобразование массива C char в строку Matlab [Matlab Coder] - PullRequest
0 голосов
/ 03 апреля 2019

Мое намерение состоит в том, чтобы показать для вывода Matlab System строку типа char_T data [], чтобы я получал функцию в C через coder.ceval

Я хочу показать более конкретно переменную буфера,так как он должен был бы объявить переменную буфера

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);
}

Этот пост не работает для меня: Преобразование массива C char в строку Matlab с использованием Matlab Coder

1 Ответ

1 голос
/ 03 апреля 2019

Что именно не так с кодом, который вы написали?Вы видите какие-либо сообщения об ошибках или получаете ответы, отличные от ожидаемых?

Я думаю, что у вас могут возникнуть проблемы с вашей переменной 'buffer' в MATLAB, которая недостаточно велика для хранения всего, что вы печатаете в нейв вашем коде CЯ бы рекомендовал инициализировать его с помощью «buffer = blanks (10)», чтобы убедиться, что он может содержать не менее 10 символов (это число, которое, я думаю, вы читаете).Другим хорошим вариантом может быть использование «fread» вместо пользовательского кода C (если это возможно), так как эта функция поддерживается для MATLAB Coder.

...