返回错误时字符串数量只在Matlab Int32Ptr被接受

2视图(30天)
我新在Matlab使用dll文件,我有一些麻烦返回errorNumber和xMotor的价值。dll的文档是特定于C和建议使用以下实现我想要的:
#包括PiUsb.h
void * pUsb1;
intErrorNumber;
intMotorSerialNumber = 10;/ /序列号从电动机
pUsb1 = piConnectMotor (&ErrorNumber MotorSerialNum);
如果(ErrorNumber = = PI_DEVICE_NOT_FOUND)
AfxMessageBox (“找不到汽车……”);
其他的
AfxMessageBox (“电机连接”。);
然而,我希望能够用Matlab。
我succesffully dll加载到Matlab与:
(pwd filesep fullpathToPiUSBHeader =“picardStage”filesep“PiUsb.h”]
(pwd filesep fullpathToPiUSBDll =“picardStage”filesep“PiUsb.dll”]
(pwd filesep fullpathToPiUSBHeader =“picardStage”filesep“PiUsb.h”]
如果(libisloaded (fullpathToPiUSBHeader))
loadlibrary (fullpathToPiUSBDll fullpathToPiUSBHeader)
结束
libfunctions (“PiUsb”,“全部”)
我返回函数的完整列表,特别是这个函数:
(自由。指针,int32Ptr] = piConnectMotor (int32Ptr int32)
这是到目前为止我有:
errorNumber = libpointer (“int32Ptr”,0);
xMotor = libpointer (“voidPtr”);
xMotor = calllib (“PiUsb”,“piConnectMotor”、errorNumber xMotorSerialNumber)
我希望能够找回errorNumber结果为xMotor以及价值,然而他们的价值观只是作为“libpointer”返回。任何想法如何访问这些值/结果?
任何帮助将不胜感激!

答案(1)

菲利普Borghesani
菲利普Borghesani 2016年6月24日
记住,MATLAB创造了一切 (* )左边的等号和别烦初始化xMotor errorNumber然后调用:
[xMotor, errNumber] = calllib (“PiUsb”,“piConnectMotor”0 xMotorSerialNumber);
errNumber应该包含一个整数值和xMotor将包含一个不可读句柄(void *)可以传递给其他函数。
在您的代码中errorNumber什么是应该有一个值
errorNumber.value
* 没有提供索引完成lh

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!