使用matlab fscanf进行nexstar望远镜

时间:2015-02-02 00:56:47

标签: matlab serial-port scanf

我遇到了从望远镜获得返回值的问题。我已经能够向它发送数据了,我使用fscanf来获取返回值,这是我的代码到目前为止。

close all; clear all; clc;
priorPorts = instrfind; % finds any existing Serial Ports in MATLAB
delete(priorPorts); % and deletes them
COMnum = input('COM Number:');
telescope = serial(['COM',num2str(COMnum)]);
set(telescope,'BaudRate',9600);
set(telescope,'Terminator','#'); %theres a pound symbol at the end of all commands
fopen(telescope);
fprintf(telescope,'h');
out = fscanf(telescope,'%c',512);

当我运行它时,将返回一个我无法解释的字符串(例如“9ø”)。预期的反应是:

chr(Q) &
chr(R) &
chr(S) &
chr(T) &
chr(U) &
chr(V) &
chr(W) &
chr(X) &
"#”

其中Q,R,S,T,U,V,W,X都是整数,“#”是终止符。 当我输入一个返回char(整数)&的命令时“#”返回空格和“#”终止符。 注意:当返回值只是一串文本时,此程序可以正常工作 我试过的:

  1. 将%c更改为其他类型,例如%x
  2. 研究nexstar编程网站以及其中的故障排除建议,例如将其置于跟踪模式
  3. 以下是我一直在使用的一些资源 http://www.nexstarsite.com/PCControl/ProgrammingNexStar.htm 特别是coms协议文档,它是顶部的第一个链接。 任何和所有的帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

使用fscanf然后输入cast为double,如此

out = fscanf(s);
out = double(out);