(visadev visadev签证问题没有得到所有数据发送)

9的观点(30天)
抓数据从一个r和s ZNB网络分析仪。我有代码适用于抓取数据netan被定义为一个签证的对象,然而,当试图改写为visadev对象,我不能抓住所有的跟踪数据。我意识到很多格式化数据等,可以做很多清洁,原谅我,现在(很久以前就写这个函数)。
函数(签证对象):
函数data_to_save = rhode_netan_save_trace_data (ip_addr、通道、trace_name file_name)
% rhode_netan_save_trace_data (' 192.168.10.103 ' 2 ' Trc2 ', ' clever_name_for_file ');
dev_name = [“TCPIP::”ip_addr“::INSTR”];
netan =签证(“倪”,dev_name);
netan。InputBufferSize = 1000000;
fopen (netan);
流(netan“感觉:扫描:一步?”);
freq_step = str2num (fscanf (netan));
流(netan“感觉:频率:开始?”);
start_freq = str2num (fscanf (netan));
流(netan“感觉:频率:停止?”);
stop_freq = str2num (fscanf (netan));
流(netan“感觉:扫描:一步?”);
freq_step = str2num (fscanf (netan));
频率= ' (start_freq: freq_step: stop_freq);
命令= [“钙”num2str(频道)参数:选择“””trace_name”“];
流(netan、命令);
%格式化的数据
流(netan”:形式:dexp:酸fdat);
%获得数据从选中的痕迹
%流(netan trac ?ch1data”);
流(netan [trac ?ch 'num2str(频道)“数据”]);
raw_data = fscanf (netan);
formatted_dB_only_data = sscanf(废话,“% f”,);
文件关闭(netan);
raw_data在上面的函数返回1 x22248 char。formatted_dB_only_data x1是1601双(这正是我期望我有网络分析仪设置为1601分)。
现在,让我们来试试这个netan为visadev对象:
函数data_to_save = rhode_netan_save_trace_data (ip_addr、通道、trace_name file_name)
% rhode_netan_save_trace_data (' 192.168.10.103 ' 2 ' Trc2 ', ' clever_name_for_file ');
dev_name = [“TCPIP::”ip_addr“::hislip0”];
netan = visadev (dev_name);
% configureTerminator (netan“低频”)
freq_step = str2double (writeread (netan“感觉:扫描:一步?”));
start_freq = str2double (writeread (netan“感觉:频率:开始?”));
stop_freq = str2double (writeread (netan“感觉:频率:停止?”));
频率= ' (start_freq: freq_step: stop_freq);
%选择跟踪你想获取的数据
命令= [“钙”num2str(频道)参数:选择“””trace_name”“];
writeline (netan、命令);
%格式化的数据
writeline (netan”:形式:dexp:酸fdat”);
%获得数据从选中的痕迹
data = writeread (netan [trac ?ch 'num2str(频道)“数据”]);
%写(netan [' trac吗?ch ' num2str(频道)“数据”);
% =读取的数据(1601年netan,“双”);
formatted_dB_only_data = str2double (strsplit(数据,”、“));
使用“writeread”来填充数据时,它返回的字符串长度(根据strlength(数据))10898。如果我第二次运行这个命令,它回来的垃圾二进制数据strlength() = = 7,每次当我运行它(断点设置在“data =…”),它将返回各种长度的垃圾数据。我也应该注意,如果我停止脚本,并再次运行,数据的大小根据strlength()改变每次(3跑回来strlength 22247, 22224和5355年)。显然这应该是返回跟踪数据每次都为1601分。如果我使用写然后读(1601年,“双”),我做得到1 x1601矩阵,但数据垃圾(6.22 38吗,6.54 e-43)。
任何人有任何想法吗?我真的很希望把我的很多函数从签证对象visadev对象会更微不足道,但我想只要我理解这是如何工作在这个例子中,我可以算出来其他脚本/设备。
谢谢。
2的评论
斯科特
斯科特 2022年6月14日
R2022a。
我应该指出,上面所示的代码,我不做“定期轮询”的工具,它可以中断一个并发数据传输错误报告中提到的。我只是想做我发出命令读取一次。

登录置评。

接受的答案

斯科特
斯科特 2022年6月30日
关闭循环:
似乎提到的错误 @Andrei Ursache 是一个良好的工作理论,然而这个bug并不是解决在MATLAB R2022a的原始版本,这是固定在R2022a_Update_3。申请服务票后,我奉命update_3手动下载,因为它不是正式发布的这篇文章的写作。 是下载并安装更新的过程。一旦我更新,MATLAB从ZNB成功地抓住了所有的数据。

更多的答案(0)

社区寻宝

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

开始狩猎!