我正在使用MATLAB從外部庫調用函數來控制設備, 我遇到的問題是具有特定函數的參數未正確轉換且奇怪的字符出現在它的位置。當在Matlab中調用庫函數時出現奇怪/奇怪的字符
例如,調用:
ERRCODE = calllib ('MEDAQLib','ExecSCmd',1,int8('Laser_On'));
其中ExecSCmd
參數在libfunctionview
被定義爲ulong,int8Ptr
現在,當我登錄的命令發生這種情況
ExecSCmd,回車,instanceHandle = 1,sensorCommand ='Laser_On''£〜'' MESensor :: SensorCommand,Enter,this = 0x30c07b50,S_Command = Laser_On'「£〜d ERRORMSG :: Error_SetText集,留言:-14 (ERR_UNKNOWN_SENSOR_COMMAND):Laser_On'「£〜d
相反的Laser_On'「£~ð
它的意思是顯示一個乾淨Laser_On
像它與其他功能呢。它變得更加怪異,有時稱它爲隨機工作,但這樣做的次數很少。
當使用不同的計算機,使用相同的Matlab版本,相同的編譯器,相同的庫,但操作系統不同時,會出現類似的問題。 使用的編譯器是Windows SDK 7.1,Matlab版本2012b。
爲什麼這些奇怪的字符出現在參數中?
很好解釋!我現在知道了。我現在沒有機會對此進行測試,但這可能會起作用。只有一件事,我認爲函數輸入仍然需要Matlab上的整數格式,因此:'int8(char ['Laser_On',0])'應該這樣做。如果這個工作很快就會確認。 – DonD
非常感謝您的反饋。如果你發現只有'int8'可以工作,你可以編輯我的答案。 –