VISA编程实例(C实现)

    今天写这个文章,是因为自己工作中用到了ROHDE&SCHWARZ(即罗德-施瓦茨公司)的仪表设备,需要通过编程的方式来读取仪表上功率测试结果,本来仪表上显示了测试结果,不知道硬件部门为什么需要通过程序来获取?需求我是不明白的。

    既然要实现这个功能呢?自然就硬着头皮搞了,没想到,研究了几天,发现网上有这样的程序示例。

    先来说说做这个工作的必要的工具:

    1、电脑安装NIVISA1850这个工具。这个工具可以通过tcp的方式连接仪表,然后通过指令来获取相关的测试结果。其实这个工具在本文的例子中,它的作用是一个依赖,而不是用这个工具去查询功率结果,虽然通过这个工具可以查询到测量结果(measure result)。

    2、仪表:罗德施瓦茨 CMW500,这个工具只有懂的人或者用过的人才知道。

    

    3、本机安装vs2019。

    4、芯片板子,既然是测试功率,就需要其他的设备了,这个设备是公司硬件部门捣鼓的东西,他们需要测试GPS功率,就是通过射频发射信号(GPRF),然后连接仪表来测试。

 ==========================================================================

    开始试验:

    a 、开启仪表,仪表是一个windows xp系统,启动之后,设置测试功率相关参数,然后等待测试:

    b 、前面提到安装的第一个工具,nivisa,其实这个就是一个远程操作仪表的工具,安装之后,会有一个NI-MAX的工具,点击打开,选择左侧菜单,依次选择我的系统->设备和接口->网络设备->CMW "TCPIP0::192.168.253.13::inst0::INSTR":

   

    c 、然后选择面板上的“打开VISA测试面板”,会打开如下所示的面板:

    

    d 、切换到Input/Output:就可以通过命令来获取仪表信息了,如下所示:

    

     以上说了这么多,其实在我们c++编程里面,nivisa是一个依赖,我们需要他安装之后的头文件visa.h,还需要依赖库visa64.lib

    e 、在visual studio 2019中新建工程,编写如下代码:

#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
#define _CRT_SECURE_NO_DEPRECATE
#endif#include <stdlib.h>
#include <stdio.h>
#include <string.h>#include "visa.h"static ViSession defaultRM;
static ViSession instr;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static ViStatus status;
static unsigned char buffer[100];
static char stringinput[512];int main(void)
{status = viOpenDefaultRM(&defaultRM);if (status < VI_SUCCESS){printf("Could not open a session to the VISA Resource Manager!\n");exit(EXIT_FAILURE);}//status = viOpen(defaultRM, "ASRL1::INSTR", VI_NULL, VI_NULL, &instr);status = viOpen(defaultRM, "TCPIP0::192.168.253.13::inst0::INSTR", VI_NULL, VI_NULL, &instr);if (status < VI_SUCCESS){printf("Cannot open a session to the device.\n");goto Close;}/* Set the timeout to 5 seconds (5000 milliseconds). */status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000);/* Set the baud rate to 4800 (default is 9600). */status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800);/* Set the number of data bits contained in each frame (from 5 to 8).* The data bits for  each frame are located in the low-order bits of* every byte stored in memory.*/status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8);status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE);status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE);status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE);/* Set the termination character to 0xA*/status = viSetAttribute(instr, VI_ATTR_TERMCHAR, 0xA);/* We will use the viWrite function to send the device the string "*IDN?\n",* asking for the device's identification.*///strcpy(stringinput, "*IDN?\n");strcpy(stringinput, "FETCh:GPRF:MEAS:POWer:PEAK:MAXimum?\n");status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);if (status < VI_SUCCESS){printf("Error writing to the device.\n");goto Close;}status = viRead(instr, buffer, 100, &retCount);if (status < VI_SUCCESS){printf("Error reading a response from the device.\n");}else{printf("\nData read: %*s\n", retCount, buffer);}/** Now we will close the session to the instrument using* viClose. This operation frees all system resources.*/
Close:status = viClose(instr);status = viClose(defaultRM);printf("Hit enter to continue.");fflush(stdin);getchar();return 0;
}

    关于这个程序来源呢,网上有,另外nivisa安装之后,有个目录:C:\Users\Public\Documents\National Instruments\NI-VISA\Examples\C,这里面都是一些c的代码,通过usb,serial,tcpip方式连接并且操作的代码都有。

    这个代码需要运行正确,需要对项目进行设置,主要是 VC++ Directories需要包含(Include Directories)visa.h所在的目录:

    C:\Program Files\IVI Foundation\VISA\Win64\Include

    库目录(Library Directories)要添加:

    C:\Program Files\IVI Foundation\VISA\Win64\Lib_x64

    还需要设置:链接(Link)->输入(Input),额外依赖(Additional Dependencies),添加:

    C:\Program Files\IVI Foundation\VISA\Win64\Lib_x64\msc\nivisa64.lib

    C:\Program Files\IVI Foundation\VISA\Win64\Lib_x64\msc\visa64.lib

    全部设置好了,项目不报错,编译通过,运行:

    f 、下面先给出仪表的显示结果:

     

    功率最大值Power Maximum是:23.878 dBm

    通过程序获取的结果:

    

    打印的结果是一个接近的数值,跟仪表结果类似,应该是仪表做了取舍。

    至此,通过visa编程,我们获取了仪表数据。这里我获取的是功率最大值,关于这个值,一般文档都是介绍的通过FETCh:GPRF:POWer:MAXimum:CURRent?获取,但是这个获取的是仪表上显示的Power Current Max的数值,我后来根据CMW_GPRF_UserManual文档找到了如下一些方法:

     

    后来试着用了FETCh:GPRF:MEAS:POWer:PEAK:MAXimum?来获取最大功率,竟然成功了,很高兴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33212.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

visa虚拟卡生成器_英国虚拟卡 获取多张VISA和Mastercard

这是一家英国的虚拟卡平台,主要提供虚拟信用卡。 官方网址: https://www.swiftpaycard.com/cards.php 进入之后,点上角的sign up进行注册。不懂得可以网页翻译注册。 输入你的个人信息。类似姓名,邮箱,密码,用户名之类的。自己填好就行。然后就会提示你注册成功。并提示…

【编程实践】24个实用代码优化技巧实例讲解

写代码的同学都有一些明显的共性,整体来说都比较符合代码特性中的可读性、严谨性、扩展性的要求。本文将举例一些自己看到的代码以及感受建议,从以上三个角度进行总结,希望能够对大家日常编码有一些帮助。 ChatGLM: 优秀的程序员通常具备以下特质: 1. 良好的逻辑思维能力:…

OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)

Production Best Practices 生产最佳实例 前言Introduction 导言Setting up your organization 设置您的组织Managing billing limits 管理计费限额API keys API密钥Staging accounts 演示账户 Building your prototype 构建您的原型Additional tips 其它技巧 Techniques for i…

chatgpt赋能python:Python数据搜索指南

Python数据搜索指南 对于很多Python程序员来说&#xff0c;从互联网上查找数据是非常常见的需求。本文将介绍一些使用Python高效地搜索数据的技巧和工具。 Google Custom Search API Google Custom Search API是一个用于在Google搜索引擎中搜索内容的接口。使用该接口&#…

【Python】用python高效查询gptkey的额度(封装pytqt5版本)

文章目录 前言一、源码二、运行效果展示总结 前言 昨天发了python查询gpt-key剩余额度和近10天使用额度查询情况的源码&#xff0c;有伙伴反馈很实用&#xff0c;但是如果能封装UI版就更好了 那徐浪老师今天就给大家做一个封装吧&#xff01; 一、源码 话不多说&#xff0c;…

无需订阅的GPT-4?

上周末&#xff0c;MegaEase 创始人兼 CTO 陈皓老师&#xff08;左耳朵耗子&#xff09;在推特推荐了一款 ChatGPT 套壳网站 Forefront Chat&#xff0c;称其可以“免费使用 GPT-3.5 和 GPT-4”。溯源了一番&#xff0c;其官方 Forefront AI 公司在前一天进行了官宣&#xff1a…

异常检测专栏(一)异常检测概述

前言 异常检测一直是机器学习中一个活跃的研究领域&#xff0c;由于风险管理、合规、安全、将抗和医疗风险以及人工智能安全等广泛领域的需求和应用不断增加&#xff0c;异常检测发挥和越来越重要的总用。近年来&#xff0c;随着深度学习和计算机视觉技术的不断发展&#xff0c…

GPG密钥生成与使用教程

以下命令只需Ubuntu用户执行 sudo yum install gnupg 生成密钥 gpg --gen-key 密钥种类选择&#xff1a;键入1 RSA密钥长度&#xff1a;键入1024&#xff08;此操作仅为提高RSA生成的速度 密钥的有效期&#xff08;默认为0选项&#xff09;&#xff1a;回车 真实姓名&…

腾讯AI开放平台使用尝试:通过文本翻译API进行汉译英

这篇文章继续尝试使用腾讯AI开放平台提供的文本翻译API进行汉译英的示例说明。 目录 事前准备请求参数返回格式示例代码使用示例常见问题总结参考内容 事前准备 实现需要申请申请账号&#xff0c;获得如下接入凭证&#xff1a; AppID&#xff1a;应用IDAppKey&#xff1a;应…

GitHub英译中设置方法

GitHub 英译中设置方法 相信有很多小伙伴初次打算使用GitHub然后去浏览器搜索之后&#xff0c;发现打开官网内容全部是英文&#xff0c;这可难倒了很多英文不好的小伙伴。但凡事都有解决之道&#xff0c;我们只需要将GitHub官网的英文转换为中文就能够很好很快学习运用GitHub&…

现在各行各业的人们越来越多地依靠计算机来解决各种难题.翻译英语,公共英语PETS三级阅读与翻译试题训练 四...

三级英语汉译英 1、他这次考试失败使他意识到定期复习功课是多么重要。 He failed in the exam, which has made him aware of the importance of reviewing his lessons regularly. 2、请一定不要忘记离家前你父母对你说过的话。 Be sure not to forget what your parents sai…

论文中文翻译成英文有什么好办法?

不知道大家是否想过这个问题&#xff1a;到大学为止&#xff0c;我们可以说已经学了十年英语了&#xff0c;但为什么英语水平高的人却没有那么多&#xff1f;尤其是涉及英语口语或写作这种需要输出的内容&#xff0c;对我们来说更是难上加难。原因主要在于&#xff0c;我们的思…

Abaqus取消汉化(汉译英,英译汉)

1、创建abaqus 桌面快捷方式 拖拽到桌面上即可 2、打开文件所在位置 3、点击win_b64 4、然后依次打开 win_b64--->SMA---->Configuration--->locale 5、加 和 改 汉化&#xff1a;在1处添加 Chinese (Simplified)_China.936zh_CN 在2处把 0 改成 1 汉化取消&…

AndroidStudio翻译辅助工具(中译英与英译中)

1.设置 File -> Settings 2.Browse repositories File -> Settings->Plugins->Browse repositories… 3.下载Translation 4.Restore点击一下 5.重启一下 6.申请ID和密匙 自己随便注册一下即可 7 创建有道智云实例 名字随便写 翻译实例-》创建实例 8 创建应…

微信小程序 通过百度API接口实现汉译英翻译

目录 先看一下做出来的效果&#xff1a; 一、微信开发平台的网址&#xff08;微信开发者工具的官方使用说明&#xff09; 二、百度API&#xff08;文本翻译的API&#xff09; 三、进入正文&#xff0c;微信小程序的代码部分 先看一下做出来的效果&#xff1a; 一、微信开发…

Python实现汉译英

引言 你是否还在用老套的方式网页打开数据&#xff1f;你是否想要打造一个属于自己的翻译程序&#xff1f; 看完这篇博客实现你的梦想&#xff0c;打造一个属于自己的翻译器。 代码解析 首先我们要导入两个库爬虫库&#xff08;requests&#xff09;和json库。Requests库就不多…

HuggingFace学习3:加载预训练模型完成机器翻译(中译英)任务

加载模型页面为&#xff1a;https://huggingface.co/liam168/trans-opus-mt-zh-en 文章目录 整理文件跑通程序&#xff0c;测试预训练模型拆解Pipeline&#xff0c;逐步进行翻译任务 整理文件 首先下载模型所需的全部文件&#xff1a;https://huggingface.co/liam168/trans-op…

有没有什么好用的汉译英的学术翻译软件推荐(医学sci方面)?

有学医的小伙伴吗&#xff1f;快看过来&#xff01; 我们都知道&#xff0c;医学生是非常辛苦的&#xff0c;不仅专业课特别繁多&#xff0c;需要记忆的知识内容多&#xff0c;而且对实践技能要求也很高&#xff0c;试错成本极低&#xff0c;这就要求医学生们在平时的学习中要…

数据平台投标方案模板

随着信息化程度的加深&#xff0c;以及移动互联网、物联网的崛起&#xff0c;人们产生的数据急剧膨胀&#xff0c;传统的数据处理技术难以支撑数据大量的增长和处理能力。经过近几年的发展&#xff0c;大数据技术逐步成熟&#xff0c;可以帮助企业整合更多的数据&#xff0c;从…

训练软件类项目投标文件示例

原创不易&#xff0c;公开部分自取自用&#xff0c;如需全文支持&#xff08;可定制&#xff09;&#xff0c;私信留言 系统概述 由于各项目需求和背景的差异性&#xff0c;此处主要根据项目自身系统功能&#xff0c;背景及意义进行描述。 1.1设计思路 各项目需求和背景的差异…