




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
标签: VISAformatIO在仪器驱动开发中使用VISA格式化I/O这篇开发者地带文档的目的是为了向仪器驱动开发者展示如何利用VISA中的格式化I/O服务来执行各种各样的I/O任务。这篇文档假设您具有字符串格式化和ANSI-C格式化说明符的基本知识。关于VISA格式化说明符的更多信息,请参考NI-VISA程序员参考手册。VISA为使用基于消息通信的仪器之间的通信提供了格式化和缓冲I/O能力。格式化能力包含那些ANSI-C指定的以及对在仪器系统中使用的协议的扩展。为了执行I/O,使用viPrintf(),viScanf(), 和 viQueryf()服务例程并提供合适的格式化字符串。这篇文档列举了四种不同类别的格式化I/O:整数,浮点数,字符串和数据块。对于每一类都提供了一些例子和描述。在每个例子中,重点放在VISA I/O支持的在驱动开发中最经常使用的格式化说明符和与每种类型的格式化代码协同工作的不同的修饰符。为了消除冗余,所有的例子中的I/O操作都省略了错误检查例程。1. 整数2. 浮点数3. 字符串4. 数据块整数在驱动开发中经常发现整数格式化。除了传递从仪器读取的数值,它页可以表示状态代码(布尔值)或者从仪器返回的错误代码。当对仪器读/写整数值时,你可以使用%d格式化代码,并与长度修饰符(h或者l)和数组修饰符(,)进行配合使用。短整数 - %hd使用这个修饰符来对短(16位)整数进行操作。一般它们用来容纳测试结果和状态代码。例子这个例子展示了如何将从仪器返回的自测试结果扫描到一个短整数中。/* Self Test */ViInt16 testResult;viPrintf (io, *TST?n);viScanf (io, %hd, testResult); /* read back the test result in short integer */长整数 - %ld, %d使用这个修饰符来对长(32位)整数进行操作。一般它们用来进行数据传输和错误代码。例子这个例子展示了如何将从仪器返回的错误代码扫描到一个32位整数中。/* Error query */ViInt32 errCode;viPrintf(io, :STAT:ERR?n);viScanf (io, %d, &errCode); /* read back error code in integer */ 这个例子展示了如何格式化采样数(一个32位整数)到一个要发送到仪器的命令字符串中。/* Send Sample Count */ViInt32 value = 5000;viPrintf (io, :SAMP:COUN %d;, value);浮点数当对仪器读/写浮点数时,可以使用%f或%e格式化代码,并与长度修饰符(l或者L)和数组修饰符(,)进行配合使用。当编程进行数值传输时浮点数非常重要。注意:在某些极端情况下,%f不能表示全部的浮点值时,此时使用%e。双精度浮点数 - %le使用这个修饰符来表示双精度(64位)浮点数。它们一般用于数据传输。这个例子展示了如何扫描垂直范围(一个64位浮点数)。例子/* Query Vertical Range */ViReal64 value;viPrintf (io, :CH1:SCA?n);viScanf (io, %le, &value); 这个例子展示了如何格式化触发延时(一个64位浮点数)到一个发送到仪器的命令字符串。/* Send Trigger Delay */ViReal64 value = 50.0;viPrintf (io, :TRIG:DEL %Le;, value); 精度说明符(.)在数据传输时,可以使用精度说明符来精确的指定小数的位数。这个修饰符设置数值的精度。例子这个例子展示了如何设置电压解析度。解析度以长双精度浮点数表示(64位)。精度修饰符.9说明小数点后有9位数字。在这种情况下,0.000000005被发送到仪器。/* Set Resolution */ViReal64 value = 0.0000000051;viPrintf (io, VOLT:RES %.9Le, value); 浮点数数组说明符(,)这个修饰符从仪器读写浮点数数组。元素的个数可以用一个常数,星号(*)或者井号(#)表示。星号说明个数位于viPrintf()的第一个参数中。井号说明个数位于iScanf()的第一个参数中。常数可以在viPrintf() 和 viScanf()中使用。例子/* Create User Defined Mask */ViInt32 maskSize = 100; ViReal64 interleaved100; /* defines points in the specified mask in the selected user coordinates and store the points in the array */ viPrintf (io, :MASK:MASK1:POINTS %*,Le, maskSize, interleaved); Create User Defined Mask例子展示了如何向仪器发送一个长双精度数组。逗号表示参数是一个数组,星号说明从参数传递数组长度。/* Read Multi-Point */ViInt32 readingCnt = 50;ViReal64 readingArray50;viPrintf (io, READ?n);viScanf (io, %,#Le, &readingCnt, readingArray); Read Multi-Point例子展示了如何从仪器读取多个数据。逗号表示参数是一个数组,井号指明了从仪器返回的数据的实际个数。/* Fetch Multi-Point */ViReal64 readingArray1000;viScanf(io, %,1000le, readingArray); Fetch Multi-Point展示了如何从仪器取出多个读数。逗号表示参数是一个数组,常数1000指明了读数的个数。字符串在传递字符串时,可以使用%s, %t, %T 和 %格式化代码和一个域宽修饰符。因为这是一个基于消息的通信系统,所以字符串格式化出现最为频繁。使用字符串格式化,你可以配置仪器以及查询仪器信息。空格终止 - %s从仪器读取字符到一个字符串中,直到读取到一个空格。例子/* Trigger Source Query */ViChar rdBufferBUFFER_SIZE;ViInt32 rdBufferSize = sizeof(rdBuffer);viPrintf (io, :TRIG:SOUR?n);viScanf (io, %#s, &rdBufferSize, rdBuffer); Trigger Source Query查询触发源。仪器返回一个字符串,字符串的最大长度通过格式化字符串中的井号指定。参数rdBufferSize包含了输入的最大长度,它包含了实际读取的字节数。END终止符 - %t从仪器读取字符到一个字符串中,直到读取到一个END字符。这通常是,但不总是换行符(n)。使用%T解析换行符而不是END。例子/* Instrument Model Information */ViChar moduleStrBUFFER_SIZE;ViInt32 modelNumber;viPrintf (io, *IDN?n);viScanf (io, TEKTRONIX,TDS %ld,%t, &modelNumber, moduleStr); Instrument Model Information查询一个泰克仪器的仪器型号。型号是一个长整数,它位于从仪器返回的字符串的前两个“,”之间。格式化字符串%t指定从仪器读取字符串直到遇到END。例如,仪器返回TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04n,型号是210,模块字符串是0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04n。其他终止符 - %, %*如果没有星号,将从仪器读取字符直到读到后面的字符。如果带星号,将抛弃读到的字符直到读到后面的字符。例子/* Self Test */ViChar testMessage256;viPrintf (io, TSTn);viScanf (io, %256n, testMessage); Self Test例子是展示了如何执行自测试。在这种情况下,格式化字符串%256n指定了字符串的最大宽度为256,并且终止于换行符(LF)。/* Error Query */ViInt32 errCode;ViChar errMessageMAX_SIZE;viPrintf(io, :STAT:ERR?n);viScanf (io, %ld,%, &errCode, errMessage);Error Query例子展示了如何查询错误。仪器返回一个整数错误代码和一个带双引号的字符串。消息位于引号中。/* Instrument Manufacturer */ViChar rdBuffer256;viQueryf (io, *IDN?, %256,%*T, rdBuffer); Instrument Manufacturer例子展示了如何查询仪器制造商。制造商名称位于从仪器返回的字符串的第一部分,直到字符“,”。例如,仪器返回ROHDE&SCHWARZ,NRVD, 835430/066,V1.52 V1.40n。制造商名称ROHDE&SCHWARZ。其余部分被舍弃。/* Instrument Model Information */ViChar rdBuffer256;viQueryf (io, *IDN?, %*,%256,%*T, rdBuffer); Instrument Module Information例子展示了如何查询仪器型号。型号位于从仪器返回的字符串的第一部分,位于头两个字符“,”之间。例如,仪器返回ROHDE&SCHWARZ,NRVD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夏日的海滩海滨风光描写作文5篇
- DBJ 15-107-2016 装配式混凝土建筑结构技术规程
- 智能制造专业试题及答案
- 安全公园考试题库及答案
- 登封市宅基地承包合同3篇
- 安b考试题库及答案
- 医疗废物规范化管理知识考核试卷附答案
- 2025年中医骨伤科学(医学高级)考试真题卷及答案
- 高效智慧城市基础设施建设合同
- 2025年教资面试结构化真题(含答案)
- GJB297B-2020钝化黑索今规范
- 关于懂你的600字初三作文9篇
- 2025-2026学年青岛版(五四制)(2024)小学科学三年级上册(全册)教学设计(附目录P230)
- 2025至2030年中国猫砂行业发展监测及投资战略研究报告
- 2025年理赔人员上岗考试题库
- 2025-2026年秋季学期各周国旗下讲话安排表+2025-2026学年上学期升旗仪式演讲主题安排表
- 2025年公务员(国考)之公共基础知识考试题库(带答案解析)
- 初级医学影像技术师考试试卷及答案2025年
- 幼儿园一日生活指引培训
- 宣传思想文化试题及答案
- 精神科木僵患者的护理
评论
0/150
提交评论