2012-07-13 97 views
0

我正嘗試通過matlab函數和.mex文件與差分驅動器移動機器人通信。我能成功地用命令移動機器人:matlab中的fprintf(串行通信)

ref = serial('COM1'); 
set(ref,'BaudRate', 9600); 
fopen(ref); 

fprintf(ref,'C,1000,1000'); 
out = fscanf(ref) 

fclose(ref) 
delete(ref) 

但是,我做了,其中包括功能fprintf不起作用:

function r = Move(ref,left,right) 

fprintf(ref,'C,left,right'); 
out = fscanf(ref) 

我'知道問題是出在命令中使用不同的字符串fprintf(即'C,1000,1000'不等於'C,左,右'),但我無法解決這個問題。對不起,如果這太微不足道了。

答案是(見下面的註釋):

function r = Move(ref,left,right) 

fprintf(ref,sprintf('C,%d,%d', left, right)); 
out = fscanf(ref); 

回答

3

你可以嘗試以下方法:

function r = Move(ref,left,right) 

fprintf(ref,'C,%d,%d', left, right); 
out = fscanf(ref) 
+0

試過了,沒有工作。抱歉沒有發佈此問題。 – Makaroni 2012-07-13 12:39:47

+0

@Makaroni你用哪個參數來調用'move'函數? '移動(ref,1000,1000)'? – 2012-07-13 12:43:41

+0

是的,基本上。調用函數「移動」時,我可以放置0到20000之間的任何數字。 – Makaroni 2012-07-13 12:46:08