我必須調用下面的C-庫函數出的matlab:如何在Matlab中將兩個參數及其大小傳遞給C函數?
bool PI_OAD (int ID, const int* channel, const double* pdValueArray, int iArraySize)
和參數iArraySize應陣列通道和pdValueArray的大小。
參數通道和pdValueArray給出如下:
pChannel = uint8(channel);
pStep = uint16(step);
而且我calllib命令是:
calllib(Controller, 'PI_OAD', ID, pChannel, pStep, int32(24));
它不工作。
我不知道如何正確傳遞參數通道的大小和步驟。有人有想法嗎?謝謝!
編輯: 感謝所有的答案,我會在下週二我嘗試你的建議,當我回到工作。
一些附加信息:
我所需要的功能PI_OAD通過硬件接口來操作的壓電元件中,信道爲1的時間最多,因爲我只有一個軸線,和步驟是我想設置在電壓壓電元件。
它不起作用意味着我從界面中得到一些錯誤。據我記得,我得到一個'命令是很長',然後是'未知命令'錯誤。
pChannel和pStep是指針,你不應該傳遞libpointer嗎?像pChannel = libpointer('uint8Ptr',channel); ? – Shai
matlab手冊說,Matlab將轉換爲正確的pointertype。 –
1.當你說「它不工作」究竟發生了什麼?分段故障?錯誤信息?錯誤的輸出? 2.根據函數頭信道預計爲int *,pdValueArray應該是double *。那麼,爲什麼要轉換'pChannel = uint8(channel)'和'pStep = uint16(step)'?不應該是'pChannel = int32(channel)'和'pStep = double(step)'? – Shai