VI_ATTR_FDC_GEN_SIGNAL_EN 是否允许通过FDC传送数据 VI_ATTR_FDC_MODE FDC模式
VI_ATTR_FDC_USE_PAIR 一对或一个FDC有效 VI_ATTR_FDC_USE_VER FDC协议版本 VI_ATTR_PHYS_ADDR 器件地址 VI_ATTR_7_8_BIT_CMP 终止符有效位
VI_ATTR_NRDY_ABORT_EN 器件不再输出数据时是否被通知 VI_ATTR_OUTP_RDY_NOTIFY_EN 数据有效是否被通知 VI_ATTR_RD_PROT 传送协议
VI_ATTR_REPEAT_ADDR_EN 是否使用重复地址 VI_ATTR_SUPPRESS_END_ON 终止符是否被禁止 VI_ATTR_TERMCHAR 终止符
VI_ATTR_TERMCHAR_EN 终止符是否被允许 VI_ATTR_TMO_UNIT 超时值单位 VI_ATTR_TMO_VALUE 超时值
VI_ATTR_TRANSFER_MECH 传送机制(DMA或PIO) VI_ATTR_CMDR_SERV 主从模式 VI_ATTR_ASRL_BAUD 波特率 VI_ATTR_ASRL_DATA_BITS 数据位 VI_ATTR_ASRL_PARITY 校验极性 VI_ATTR_ASRL_STOP_BITS 停止位
VI_ATTR_ASRL_FLOW_CNTRL 数据流控制状态 3. 读资源定义的事件如下所示: 事件 说明
VI_EVENT_IO_COMPLETION 异步I/O操作已完成 4. 读资源定义的操作如下:
viRead(vi,buf,count,retCount) viReadAsync(vi,buf,count,jobId) viReadStatus(vi,jobId,jobStatus)
4.1. viRead(vi,buf,count,retCount) 1) 目标:从器件同步读取数据 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) buf 输出 ViBuf 数据块位置
count 输入 ViUInt32 读出的字节数
retCount 输出 ViPUInt32 实际传送字节数 3) 返回状态值: 完成代码:
VI_SUCCESS 同步读数据完成
VI_SUCCESS_TERM_CHAR 特定终止符被读取
VI_SUCCESS_MAX_CNT 读取的字节数与count数相同 VI_WARN_NRDY_ABORT 传送退出,器件未准备好输出数据 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_TMO 超时错误
VI_ERROR_RAW_WR_PROT 传送时写协议被破坏 _VIOL
VI_ERROR_RAW_RD_PROT 传送时读协议被破坏 _VIOL
VI_ERROR_OUTP_PROT_VIOL 传送时输出协议错误 VI_ERROR_INP_PROT_VIOL 传送时输入协议错误 VI_ERROR_BERR 传送时总线错误 VI_ERROR_ABORT 传送时用户退出
VI_ERROR_IN_PROGRESS 同步写已执行
VI_ERROR_INV_SETUP 设置错误,不能开始写操作
4) 描述:该操作将从器件中读取的值放在buf,任一读资源通道只能登录一个同 步读操作。
5) 相关项:参见viWriteAsync()、viTerminate()、viWriteStatus()、 viReadAsync()、viReadStatus()。
6) 实现要求:当满足以下三种情况的一种或几种时,被认为读操作完成:一是结 束标号被读取,二是特定终止符被读取,三是读取的字节数与所需字节数相同。 4.2. viReadAsync(vi,buf,count,jobId) 1) 目标:从器件异步读取数据 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) buf 输出 ViBuf 数据块位置
count 输入 ViUInt32 读出的字节数
jobId 输出 ViPjobId 异步读操作作业标识符 3) 返回状态值: 完成代码:
VI_SUCCESS 异步读操作完成 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_QUEUE_ERROR 不能进行读操作排队
4) 描述:该操作将从器件读取的数据放于buf中,任一读资源通道可以登录多个 异步读操作,进行排队处理。
5) 相关项:参见viWrite()、viTerminate()、viWriteAsync()、viRead( )、viReadStatus()。 6) 实现要求:无。
4.3. viReadStatus(vi,jobId,jobStatus) 1) 目标:获取读操作状态 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄)
jobId 输入 VijobId 读操作作业标识符
jobStatus 输出 ViPJobstatus 读操作状态 3) 返回状态值: 完成代码:
VI_SUCCESS 状态获取完成 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_INV_JOBID 作业标识符不当
4) 描述:当操作为同步时,标识符唯一确定,为VI_SYNC;当操作为异步时,标 识符为操作的输出参数值。
5) 相关项:参见viReadAsync()。 6) 实现要求:无。
n 格式化I/O资源(VI_RSRC_FMT_IO):
1. 资源概述:数据流格式化I/O操作,可进行格式化的器件读写操作,并可进行缓 冲区的I/O格式化。
2. 资源属性表及属性描述: 属性名 描述
VI_ATTR_7_8_BIT_CMP 终止符位数
VI_ATTR_END_ON_TERMCHAR_EN 在GPIB系统中,EOI终止符是否被确认 VI_ATTR_NRDY_ABORT 器件不再输出数据时是否被通知 VI_ATTR_PROT 读/写协议
VI_ATTR_RD_BUF_OPER_MODE 读缓冲区操作模式 VI_ATTR_RD_SIZE 读缓冲区大小
VI_ATTR_REPEAT_ADDR 是否使用重复地址 VI_ATTR_RETURN_MODE 读/写操作返回模式 VI_ATTR_SEND_END_EN 是否将END作为终止符
VI_ATTR_SUPPRESS_END 是否禁止END作为终止符 VI_ATTR_TERMCHAR 终止符 VI_ATTR_TMO_UNIT 超时值单位 VI_ATTR_TMO_VALUE 超时值
VI_ATTR_TRANSFER_MECH 传送机制(DMA或PIO) VI_ATTR_WR_BUF_OPER_MODE 写缓冲区操作模式 VI_ATTR_WR_BUF_SIZE 写缓冲区大小 VI_ATTR_ASRL_BAUD 波特率 VI_ATTR_ASRL_DATA_BITS 数据位 VI_ATTR_ASRL_PARITY 校验极性 VI_ATTR_ASRL_STOP_BITS 停止位
VI_ATTR_ASRL_FLOW_CNTRL 数据流控制状态 3. 格式化I/O资源定义的事件如下所示:无 4. 格式化I/O资源定义的操作如下: viSetBuf(vi,mask,size)
viSetUBuf(vi,mask,size,buf) viFlush(vi,mask)
viPrintf(vi,writeFmt,arg1,arg2?) viVPrintf(vi,writeFmt,params)
viSPrintf(vi,buf,writeFmt,arg1,arg2?) viSVPrintf(vi,buf,writeFmt,params) viBWrite(vi,buf,count,retCount) viScanf(vi,readFmt,arg1,arg2?) viVScanf(vi,readFmt,params)
viSScanf(vi,buf,readFmt,arg1,arg2?) viSVScanf(vi,buf,readFmt,params) viBRead(vi,buf,count,retCount)
viQueryf(vi,writeFmt,readFmt,arg1,arg2?) viVQueryf(vi,writeFmt,readFmt,params) 4.1. viSetBuf(vi,mask,size) 1) 目标:设置格式化I/O缓冲区大小 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) mask 输入 ViPUInt16 缓冲区类型 size 输入 ViPUInt32 缓冲区大小 3) 返回状态值: 完成代码:
VI_SUCCESS 缓冲区大小设置完成 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_ALLOC_MEM 系统无法分配缓冲区 VI_ERROR_INV_MASK 缓冲区类型设置错误
4) 描述:该操作改变读/写缓冲区大小,缓冲区类型可取VI_READ及VI_WRITE。 5) 相关项:参见viSefUBuf()、viFlush()。 6) 实现要求:调用该操作会刷新相关缓冲区。 4.2. viSetUBuf(vi,mask,size,buf) 1) 目标:设置格式化I/O用户缓冲区 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) mask 输入 ViPUInt16 缓冲区类型 size 输入 ViPUInt32 缓冲区大小 buf 输入 ViBuf 实际缓冲区地址 3) 返回状态值: 完成代码:
VI_SUCCESS 用户缓冲区设置完成 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作
VI_ERROR_INV_MASK 缓冲区类型设置错误
4) 描述:该操作为格式化I/O开辟一个缓冲区,该缓冲区不能用作其它用途。 5) 相关项:参见viSefBuf()。
6) 实现要求:调用该操作会刷新相关缓冲区。 4.3. viFlush(vi,mask)
1) 目标:手工刷新格式化I/O缓冲区 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) mask 输入 ViPUInt16 缓冲区类型 3) 返回状态值: 完成代码:
VI_SUCCESS 缓冲区刷新完成 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_IO I/O错误
VI_ERROR_TMO 超时错误
VI_ERROR_ABORT 在操作结束前收到退出信号 VI_ERROR_INV_MASK 缓冲区类型设置错误
4) 描述:该操作手动刷新相关读/写缓冲区内容。 5) 相关项:参见viSefBuf()、viSefUBuf()。
6) 实现要求:若对一空缓冲区进行刷新操作,相当于没有动作。 4.4. viPrintf(vi,writeFmt,arg1,arg2?) 1) 目标:按设定格式将数据传送到器件中 2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄) writeFmt 输入 ViString 参数格式 arg1,arg2? 输入 各个所需参数 3) 返回状态值: 完成代码:
VI_SUCCESS 参数成功地格式化 错误代码:
VI_ERROR_INV_SESSION vi不能标识正当对话通道 VI_ERROR_RSRC_LOCKED 存取锁定模式不支持特定操作 VI_ERROR_IO I/O错误
VI_ERROR_TMO 超时错误
VI_ERROR_ABORT 在操作结束前收到退出信号
VI_ERROR_FILE_NOPEN 文件没有打开或文件存取特性不当 VI_ERROR_NSUP_FMT 参数格式不当
4) 描述:该操作以一定格式将数据传送到器件中,viWrite()实际上是完成低 层I/O操作。任一对话通道不能同时进行viWrite()及viPrintf()操作。
5) 相关项:参见viSPrintf()、viVPrintf()、viSVPrintf()、viBWrite(