Ошибка при компиляции кода LINUX Matlab с помощью MatlabR2012a

Я пытаюсь скомпилировать функцию Matlab в C. Здесь у вас есть объявление функции:

function [SpdLmt0, SpdLmt1, SpdLmt2, SpdLmt3, SpdLmt4, SpdLmt5, SpdLmt6,
    SpdLmt7, SpdLmt8, SpdLmt9, SLDst0, SLDst1, SLDst2, SLDst3, SLDst4,
    SLDst5, SLDst6, SLDst7, SLDst8, SLDst9, IntTyp1, IntTyp2,
    IntTyp3, IntTyp4, IntTyp5, IntTyp6, IntTyp7, IntTyp8, IntTyp9,
    IntTyp10, IntDst1, IntDst2, IntDst3, IntDst4, IntDst5, IntDst6,
    IntDst7, IntDst8, IntDst9, IntDst10, StpDst1, StpDst2, StpDst3,
    StpDst4, StpDst5, StpDst6, StpDst7, StpDst8, StpDst9, StpDst10,
    BumpDst1,BumpDst2,BumpDst3,BumpDst4,BumpDst5,BumpDst6,BumpDst7,
    BumpDst8,BumpDst9,BumpDst10,SlopeVal1,SlopeVal2,SlopeVal3,SlopeVal4,
    SlopeVal5,SlopeVal6,SlopeVal7,SlopeVal8,SlopeVal9,SlopeVal10,
    SlopeDst1,SlopeDst2,SlopeDst3,SlopeDst4,SlopeDst5,SlopeDst6,
    SlopeDst7,SlopeDst8,SlopeDst9,SlopeDst10,Radius1,Radius2,Radius3,
    Radius4,Radius5,Radius6,Radius7,Radius8,Radius9,Radius10,CurvDst1,
    CurvDst2,CurvDst3,CurvDst4,CurvDst5,CurvDst6,CurvDst7,CurvDst8,
    CurvDst9,CurvDst10,UDP_error] = parser(UDP, longitud)

Итак, я получаю данные UDP из блока Simulink «UDP Receive» для LINUX. Полученное сообщение состоит из 100 данных (выходных данных функции), закодированных в коде ASCII. Моя функция «анализатор» принимает сообщение UDP и декодирует его, чтобы получить желаемые результаты. Проблема в том, что когда я пытаюсь скомпилировать его с помощью Simulink Coder, у меня появляется это сообщение:

Ошибка: Произошли ошибки - прерывание

Кто-нибудь может помочь?


person user2956741    schedule 26.11.2014    source источник


Ответы (1)


Без дополнительной информации о функции трудно точно знать, что может происходить, но одна рекомендация состоит в том, что вы немного подкорректируете сам вызов функции. С таким количеством возвращаемых значений вполне возможно, что MATLAB Coder обнаружил ошибку при преобразовании функции. Довольно необычно иметь так много возвращаемых значений, и это может вызвать проблемы.

Я бы предложил поместить ваши возвращаемые значения в единую структуру данных (структуру или массив в зависимости от того, что подходит). Это упростит вызов вашей функции и, возможно, поможет Coder.

person Tony    schedule 16.04.2015