输出读取错误仪器控制程序 [英] Output Read Error Intstrument Control Program

查看:150
本文介绍了输出读取错误仪器控制程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

在这个简单的程序中,我试图通过调用main中的运算符来从方法中提取一个值(我很抱歉,如果我的详细信息不正确,我是编程新手.)

本质上,我希望仪器读取频率,然后在相应变量旁边输出.
例如,如果分析仪的读数为1400 MHz,则我想在控制台中看到:

Hi All,

In this simple program I am trying to pull a value from a method by calling the operator in the main(I apologize if my verbatum is incorrect, I am new to programming).

Essentially I want the instrument to read the frequency and then output next to the corresponding variable.
For instance if the Analyzer read 1400 MHz, in the console I would like to see:

"Frequency: 1400 MHz"


我正在尝试使用多个变量来执行此操作,因此我们将不胜感激!
谢谢!

这是我的代码:


I am attempting to do this with multiple variables so any help would be appreciated!
Thanks!

Here is my code:

// FileStateRecall.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "visa.h"
#include <iostream>
#include <fstream>
using namespace std;
int print_Freq()
{
	

	char FreQ[2048];
	int FreQSize = 2048;

	ViSession rm;
	viOpenDefaultRM(&rm);
	
	ViSession v5182_signal_generator;
	viOpen(rm, "TCPIP0::10.208.211.33::5025::SOCKET", VI_NULL, VI_NULL, &v5182_signal_generator);
	
	viQueryf(v5182_signal_generator, "STAT:QUES:FREQ?\n",  "%#T", FreQSize, FreQ);


	char z;
	z =printf("  %s\n",FreQ);
	return z;
}

int print_Amp()
{
	ViSession rm;
	viOpenDefaultRM(&rm);
	
	ViSession v5182_signal_generator;
	viOpen(rm, "TCPIP0::10.208.211.33::5025::SOCKET", VI_NULL, VI_NULL, &v5182_signal_generator);
	
	int z;
	z = viPrintf(v5182_signal_generator, ":POW 0dBm\n");
	return z;
}

int Save_Image()
{
	ViSession rm;
	viOpenDefaultRM(&rm);

	ViSession n9010a_exa_signal_analyzer;
	viOpen(rm, "TCPIP0::10.208.211.153::5025::SOCKET", VI_NULL, VI_NULL, &n9010a_exa_signal_analyzer);

	viPrintf(n9010a_exa_signal_analyzer, "n9010a_exa_signal_analyzer\n");

	return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{	
	ViSession rm;
	viOpenDefaultRM(&rm);
	ViSession n9010a_exa_signal_analyzer;
	ViSession v5182_signal_generator;
	viOpen(rm, "TCPIP0::10.208.211.153::5025::SOCKET", VI_NULL, VI_NULL, &n9010a_exa_signal_analyzer);
	viOpen(rm, "TCPIP0::10.208.211.33::5025::SOCKET", VI_NULL, VI_NULL, &v5182_signal_generator);
	
	viPrintf(v5182_signal_generator, "*RCL 1\n");
	viPrintf(n9010a_exa_signal_analyzer, "*RCL 1\n");	

	printf("You are currently viewing State 01 via v5182 Signal Generator\n");
	printf("     \n");
	printf("Generator Frequency: \n", print_Freq);
	printf("     \n");
	printf("Generator Power: \n", print_Amp);
	printf("     \n");
	printf("Screenshot Saved in 'My Data Directory'  \n", Save_Image);
	printf("     \n");
	printf("Press any key to continue:\n");
	getchar();
	return 0;
		
	viClose(n9010a_exa_signal_analyzer);
	viClose(v5182_signal_generator);

	return 0;

}

推荐答案

我只是在猜测问题所在.这是一个大错误:

代替这个:
I''m just guessing what the problem is. Here is a big mistake:

Instead of this:
printf("Generator Frequency: \n", print_Freq);
printf(" \n");
printf("Generator Power: \n", print_Amp);
printf(" \n");
printf("Screenshot Saved in 'My Data Directory' \n", Save_Image);
printf(" \n");



使用这个:



Use this:

printf("Generator Frequency: ");
print_Freq();
printf(" \n");
printf("Generator Power: ");
print_Amp();
printf(" \n");
printf("Saving Screenshot to 'My Data Directory'....\n");
Save_Image();
printf(" \n");
printf("Screenshot Saved.\n");



如果仍然有问题,我们需要看一下在print_Freq()函数中使用的viQueryf()的文档!



If you still have problems we need to take a look at the documentation of the viQueryf() that you use in the print_Freq() function!


大家好,

我感谢我的程序提供的反馈和帮助,并且正如您所看到的,事实上我对自己到底想做什么感到困惑.但是,在听完我对项目的想法和想法后,今天早上我可以修改我的项目.

这是代码(非常基础):

//FinalTestMode.cpp:定义控制台应用程序的入口点.
//

#include"stdafx.h"
#include"visa.h"
#include"Windows.h"


void state_One()
{

ViSession rm;
viOpenDefaultRM(&rm);

ViSession v5182_signal_generator;
viOpen(rm,"TCPIP0 :: 10.208.211.33 :: 5025 :: SOCKET",VI_NULL,VI_NULL,&v5182_signal_generator);
ViSession n9010a_exa_signal_analyzer;
viOpen(rm,"TCPIP0 :: 10.208.211.153 :: 5025 :: SOCKET",VI_NULL,VI_NULL,&n9010a_exa_signal_analyzer);

printf(您当前正在通过v5182信号发生器查看状态01 \ n");
睡眠(10000);
viPrintf(v5182_signal_generator,"* RCL 1 \ n");
viPrintf(n9010a_exa_signal_analyzer,:FREQuency:TUNE:IMMediate \ n");
printf("\ n");
printf(您正在查看W-CDMA波形模式\ n");
睡眠(10000);
printf("\ n");
printf(系统现在将准备执行测量\ n");
printf("\ n");
睡眠(10000);
printf("\ n");
printf(您正在查看频道功率\ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:CHPower \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1ChanPow.png''\ n");
睡眠(10000);
printf("\ n");
printf(您现在正在查看被占用的带宽\ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:OBWidth \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1OBWidth.png''\ n");
睡眠(10000);
printf("\ n");
printf(您正在查看ACP \ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:ACP \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1ACP.png''\ n");
睡眠(10000);
printf("\ n");
printf(您现在正在查看Power Stat CCDF \ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:PSTatistic \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1PowStat.png''\ n");
睡眠(10000);
printf("\ n");
printf(您正在查看Burst Power \ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:TXPower \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1BurstPow.png''\ n");
睡眠(10000);
printf("\ n");
printf(您现在正在查看杂散辐射\ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:SPURious \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1SPuriousEmis.png''\ n");
睡眠(10000);
printf("\ n");
printf(您现在正在查看频谱发射掩码\ n");
viPrintf(n9010a_exa_signal_analyzer,:CONFigure:SEMask \ n");
viPrintf(n9010a_exa_signal_analyzer,:MMEMory:STOR:SCR``S1SpectrumEmissMask.png''\ n");
睡眠(10000);
printf("\ n");
printf(状态01的测量测试现在已完成\ n");
睡眠(1000);
printf("\ n");
printf(每个测试的图像已保存到桌面\ n");
睡眠(1000);
printf("\ n");
printf(按任意键继续:\ n");
getchar();
返回;



viClose(n9010a_exa_signal_analyzer);
viClose(v5182_signal_generator);


}


int _tmain(int argc,_TCHAR * argv [])
{

state_One();


返回0;
}
Hey Everyone,

I appreciate the feedback and help with my program and as you can see I infact was confused myself as to what exactly I was trying to do. But after sleeping on my thoughts and ideas for the project I was able to revise my project this morning.

Here is the code (Very Basic):

// FinalTestMode.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "visa.h"
#include "Windows.h"


void state_One()
{

ViSession rm;
viOpenDefaultRM(&rm);

ViSession v5182_signal_generator;
viOpen(rm, "TCPIP0::10.208.211.33::5025::SOCKET", VI_NULL, VI_NULL, &v5182_signal_generator);
ViSession n9010a_exa_signal_analyzer;
viOpen(rm, "TCPIP0::10.208.211.153::5025::SOCKET", VI_NULL, VI_NULL, &n9010a_exa_signal_analyzer);

printf("You are currently viewing State 01 via v5182 Signal Generator\n");
Sleep(10000);
viPrintf(v5182_signal_generator, "*RCL 1\n");
viPrintf(n9010a_exa_signal_analyzer, ":FREQuency:TUNE:IMMediate\n");
printf(" \n");
printf("You are now viewing W-CDMA Waveform Mode\n");
Sleep(10000);
printf(" \n");
printf("The System Will Now Prepare to Perfrom Measurements\n");
printf(" \n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Channel Power\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:CHPower\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1ChanPow.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Occupied Bandwith\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:OBWidth\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1OBWidth.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing ACP\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:ACP\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1ACP.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Power Stat CCDF\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:PSTatistic\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1PowStat.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Burst Power\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:TXPower\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1BurstPow.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Spurious Emissions\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:SPURious\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1SPuriousEmis.png''\n");
Sleep(10000);
printf(" \n");
printf("You are now viewing Spectrum Emission Mask\n");
viPrintf(n9010a_exa_signal_analyzer, ":CONFigure:SEMask\n");
viPrintf(n9010a_exa_signal_analyzer, ":MMEMory:STOR:SCR ''S1SpectrumEmissMask.png''\n");
Sleep(10000);
printf(" \n");
printf("The Measurement Tests For State 01 Are Now Complete\n");
Sleep(1000);
printf(" \n");
printf("An Image Of Each Test Has Been Saved to the Desktop\n");
Sleep(1000);
printf(" \n");
printf("Press any key to continue:\n");
getchar();
return;



viClose(n9010a_exa_signal_analyzer);
viClose(v5182_signal_generator);


}


int _tmain(int argc, _TCHAR* argv[])
{

state_One();


return 0;
}


这篇关于输出读取错误仪器控制程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆