2012-07-13 94 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