標籤:有一個 structure 期望 代碼 分享 image .cpp time 檔案夾
simulink內建工具用於產生C和C++代碼,其中C代碼可以無需修改用於C工程中,由於產生的C++代碼為標準值代碼,而Qt為C++的實現,調用simulink產生的C++程式也可正常工作。
軟體版本:
simulink:2016a
Qt:5.7
1,搭建一個簡單的數學運算模型,本模型沒有輸入,只有一個輸出。如下:
2,配置模型
2.1 設定模型為固定步長,運行結束時間inf。
2.2設定輸出格式為“Structure”,也可設定為其他,如Array
2.3選擇代碼產生語言C++,具體設定如下,其中目標檔案為grt.tlc,即Generic real-time Target。
2.4 設定代碼介面在 C++ Class中,在Qt調用中可以避免一些莫名其妙的錯誤。
2.5 檢查設定,在2.3步驟中單擊“check Model”按鈕,檢查配置是否正確,如果有錯誤或警告,則按照推薦的設定,最後結果如下:
3,編譯模型,Ctrl+B或者單擊如下按鈕
4,編譯後會在目前的目錄下產生尾碼grt_rtw的檔案夾,裡面即是編譯後的程式。
5,在Qt中建立一個簡單的widght程式,名字為testModel.
6,將步驟4中產生的.h,.cpp檔案添加到Qt工程中,並把所有依賴的.h檔案一併加入(在MATLAB安裝檔案中),最終增加的如下:
7,在mainwindow.cpp的建構函式中增加如下代碼(相關的變數聲明未單獨列出):
pModel = new testModelClass(); pModel->initialize(); pModel->step(); qDebug()<<"simulink output:"<<pModel->test_Y.Out2;
8,運行Qt程式輸出結果如下,和期望的一致:
simulink output: 12
以上表明Qt是可以調用simulink的C++代碼的,進一步的可以將模型的輸入在也Qt程式中設定。
Qt調用simulink自動產生的C++代碼