0

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)

そのため、LINUX の「UDP Receive」Simulink ブロックから UDP データを受信します。受信メッセージは、ASCII コードでコード化された 100 個のデータ (関数の出力) で構成されます。私の関数「パーサー」はUDPメッセージを受け取り、それをデコードして目的の出力を取得します。問題は、Simulink Coder でコンパイルしようとすると、次のメッセージが表示されることです。

エラー: エラーが発生しました - 中止します

誰かが助けることができますか?

4

1 に答える 1

1

関数に関する詳細情報がなければ、何が起こっているのかを正確に知ることは困難ですが、1 つの推奨事項は、関数呼び出し自体を少し調整することです。このように多くの戻り値があるため、MATLAB Coder が関数の変換中にエラーを検出した可能性は十分にあります。これほど多くの戻り値があることは非常にまれであり、問​​題が発生する可能性があります。

戻り値を単一のデータ構造 (適切なものに応じて構造体または配列) に入れることをお勧めします。これにより、関数呼び出しが簡素化され、Coder が役立つ可能性があります。

于 2015-04-16T02:04:55.420 に答える