📄 3.虚拟仪器系统io接口软件.txt
字号:
5) 相关项:参见viEnableEvent()、viWaitOnEvent。
6) 实现要求:该操作可用于模拟一个事件。
22、 viEventHandler(vi,eventType,context,userHandle)
1) 目标:事件服务过程原型
2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄)
eventType 输入 ViEventType 事件标识符
context 输入 ViEvent 事件信息
userHandle 输入 ViAddr 事件句柄值
3) 返回状态值:
完成代码:
VI_SUCCESS 事件处理完成
错误代码:
VI_ERROR_ABORT 终止操作引发异常
VI_ERROR_RESET 终止所有操作,复位至缺省状态
VI_ERROR_FAIL 终止对话通道所有操作
VI_ERROR_KILL 终止对话通道所有操作,并自动关闭通道
4) 描述:该操作在通道接收到一个事件并处理该事件时被调用。
5) 相关项:无。
6) 实现要求:在多个句柄情况下,只有所有句柄运行都终止时,正常运行才终止
。
3.3.2 VISA资源管理器资源
VISA资源管理器(VI_RSRC_VISA_RM)是VISA各资源的中间调度器,其在VISA各子
系统元件在整个系统中配合工作中起着重要作用。资源管理器的基本功能包括:
1) 分配资源地址
2) 分配资源识别号(ID)
3) 进行操作调用
4) 进行事件管理
图3.3体现了VISA资源管理器在系统配置中的中间调度作用。
图3.3 VISA资源管理器与其它资源的关系示图
根据VISA规范,VISA资源管理器资源继承了资源模板定义的所有属性、事件与操作
,在资源模板基础上本身没有加以扩展自己的属性、事件与操作。但资源管理器资
源具有自己的语义,在系统资源中起着根资源的作用。
3.3.3 VISA仪器控制资源
在VISA资源模板的基础上,VISA仪器控制资源定义了仪器控制特有的属性、事件与
操作。在仪器控制资源中定义的功能是通用的仪器功能,它适用于各种仪器类型。
VISA仪器控制资源中包括:
n 写资源
n 读资源
n 格式化I/O资源
n 触发资源
n 状态/服务请求资源
n 清除资源
n 高级存取资源
n 低级存取资源
n 器件特定命令资源
n CPU接口资源
VISA仪器控制各资源的关系如图3.4所示。
图3.4 VISA仪器控制资源关系概图
在VISA仪器控制资源中,CPU接口资源是相对独立的,它与其它仪器控制资源无内
部联系。这并不是说CPU接口资源不能与其它资源相互调用,但它不能调用其它仪
器控制资源的相关操作,也不能被其它仪器控制资源调用其相关操作。而如格式化
I/O资源的操作是依赖于写资源及读资源操作的,它们之间存在着内部关联性。同
样,触发资源、状态/服务请求资源及清除资源与器件特定命令资源,高级存取资
源与低级存取资源之间也存在着内部关联性。
n 写资源(VI_RSRC_WR):
1. 资源概述:控制器向器件传送任意数据块,器件可以将接收到的数据块解释为
消息、命令或二进制编码数据。
2. 资源属性表及属性描述:
属性名 描述
VI_ATTR_FDC_ACCESS_MODE FDC(高速数据通道)缓冲区存取模式
VI_ATTR_FDC1_SUPP FDC版本1是否有效
VI_ATTR_FDC2_SUPP FDC版本2是否有效
VI_ATTR_FDC_CHNL FDC数据传送通道
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_INP_RDY_NOTIFY_EN 数据有效是否被通知
VI_ATTR_NRDY_ABORT_EN 器件不再接收数据时是否被通知
VI_ATTR_PHYS_ADDR 器件地址
VI_ATTR_REPEAT_ADDR_EN 是否使用重复地址
VI_ATTR_SEND_END_ON 终止符是否被确认
_TERMCHAR_EN
VI_ATTR_SEND_END_ON 是否将END作为终止符
VI_ATTR_TERMCHAR 终止符
VI_ATTR_TMO_UNIT 超时值单位
VI_ATTR_TMO_VALUE 超时值
VI_ATTR_TRANSFER_MECH 传送机制(DMA或PIO)
VI_ATTR_WR_PROT 传送协议
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. 写资源定义的操作如下:
viWrite(vi,buf,count,retCount)
viWriteAsync(vi,buf,count,jobId)
viWriteStatus(vi,jobId,jobStatus)
4.1. viWrite(vi,buf,count,retCount)
1) 目标:将数据同步写入到器件中
2) 参数表:
参数名 输入/输出方向 数据类型 描述
vi 输入 ViSession 对话通道标识符(句柄)
buf 输入 ViBuf 数据块位置
count 输入 ViUInt32 写入的字节数
retCount 输出 ViPUInt32 实际传送字节数
3) 返回状态值:
完成代码:
VI_SUCCESS 同步写操作完成
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()、
viRead()、viReadAsync()。
6) 实现要求:无。
4.2. viWriteAsync(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()、viWriteStatus()、viRead
()、viReadAsync()。
6) 实现要求:无。
4.3. viWriteStatus(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) 相关项:参见viWriteAsync()。
6) 实现要求:无。
n 读资源(VI_RSRC_RD):
1. 资源概述:控制器从器件读出任意数据块,控制器可以将接收到的数据块解释
为消息、命令或二进制编码数据。
2. 资源属性表及属性描述:
属性名 描述
VI_ATTR_FDC_ACCESS_MODE FDC(高速数据通道)缓冲区存取模式
VI_ATTR_FDC1_AVAIL FDC版本1是否有效
VI_ATTR_FDC2_AVAIL FDC版本2是否有效
VI_ATTR_FDC_CHNL FDC数据传送通道
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -