2017-02-17 157 views
1

我想通過Matlab simulink將我現有的C代碼(或任何其他文本)導入到我生成的代碼中。我有一些使用C編寫的任務,但是在將來我想用matlab我在simulink工作,我可以編譯模型,但我想使用一些我以前在C中編寫的特殊函數(因爲指針等)。Matlab simulink c代碼生成

問題是,我不知道如何將這些文本放入模型中,並且在代碼生成後,這些文本保持原始格式並放置在預期的行中。

enter image description here 而且我想什麼:

enter image description here

+0

所以你想讓Simulink中的輸入和輸出生成「C函數」塊? –

+0

「C函數」塊是一個獨立的c代碼。例如,在這個塊中,我想要初始化串行通信,寫入日誌文件,調用其他已經寫好的函數等。當然,我可以手動將這些部分複製粘貼在builded代碼,但我想將它們集成到一個子系統或一個塊中,並且如果將這個塊放在simulink中,那麼在構建函數之後,將存在這些塊。 – iddqd

+0

但是,如果該塊在simulink系統中沒有影響,那麼爲什麼您需要它? –

回答

0

您可以在此使用S-Function Builder實現。它允許創建C代碼塊,並在模型運行時進行編譯。如果使用代碼生成器,它會插入到生成的代碼中。

我一般用它來調用我的外部代碼或庫中的函數,就像我創建的一些Raspberry Pi Driver blocks一樣。

它爲每個塊生成.c,.h和.mex文件,而且非常笨重,但確實有效!

順便說一句:如果只是使用外部指針,你可以愉快地使用ImportedPointer/ExportedPointer。我發現這適用於生成的代碼和容器之間的變量。