关于VISA状态转移问题

2019-07-18 09:15发布

VISA端口 就以串口举例 状态转移
A情况:
比如只有一个COM1
方法:
1.初始化COM1后 直接连线 地球人都知道
2.初始化后写入功能全局变量(其实就是未初始化的移位寄存器),下次调用的时候读出该COM1即可 这个方法避免了连线 (当然局部或是全局变量 不讨论有一定labview经验的人都知道)
不知道其他朋友是否有别的办法?仔细想想似乎只有这一种不连线的方式,这样的好处是想不一定要连续使用COM口
B情况:
比如有好多COM口 或者 你也不知道有多少COM口,假设有COM1-COM5
那如何做转移呢?
方法:
1.当然同A情况一样,对每个COM做独立的功能全局变量12345 这样需要好多个(验证过 当然是可行的)
2.设置一个数组 数组里修改成COM1-COM5 设置成一个功能全局变量,但修改状态的时候,把修改好的COM口 对应替换掉功能全局变量中这个数组的对应COM口(没验证过 不知道是否可行,我觉得不行)
3.同2 可以设置一个簇,后面就不说了 类似数组的方式 但是只是没有索引(没验证过 不知道是否可行,我觉得行)
对于B情况,其实本人也是求教来的,不知道是否有别的办法,
我的想法是,先用枚举预设好COM1-COM5
然后正好调用数组的COM1-COM5(或簇)
但是试验结果 不行?
所以想问下是否有知道的,类似VISA状态数据转移 该如何办法不直接连线,可以供下次使用的时候调用(肯定是不同VI之间的)
PCB打样找华强 http://www.hqpcb.com 样板2天出货
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
GREATMWW
2019-07-18 17:31
sushu 发表于 2013-7-5 21:47
没有明白,是不是这样,有一个com口,楼主想要不同的VI都可以读取这个com口的数据,加入有两个VI A和B,一 ...

呵呵,版主的理解方式也對
假如被初始化后的COM口线不继续连接下去,
设想:我要用到它的时候调用它,所以目前我想到的办法是功能全局变量。缓存在移位寄存器里,当需要的时候直接读出。

所以这样的方式可以如同版主的理解一样,只是一种可能的需求情况
那么两个VI都可以通过这个功能变量读取COM状态后继续使用它
只是存在一个先后,谁先调用了,那状态肯定是转移下去了,第二个VI调用的时候可能不行了或者还是可行,我没试验过~


为什么我存在这样的想法,
1.因为假如有COM1 COM2 我初始化COM1后不发送命令,而我对COM2做操作,完了再对COM1操作,但是每次操作COM1 期望是不连续的,因为不同VI之间调用,当然得靠累死缓存的办法,所以i功能全局变量就很当然想到并运用到了。

2.但是COM口可以人为设置的 可是设置到几十,
对于软件本身而言,要么在使用COM的直接通过VISA搜所,但是这个办法暂时不考虑,也不切需求,不解释。
预先通过枚举设置好字符型的COM1-COM5(假设),通过数组或是簇来调用已经安放好的COM1-COM5
但是预先被安放好的不管是COM几都是没有被初始化的,所以这样就产生问题了,用户可以选着这个枚举任何一个,
但是程序得一一对应其被选用的COM口状态。

所以这样的状态如何转移就成为问题了。

我目前开发的一个软体就是按步骤执行的可自定义序列测试,每个步骤都是可以设置的,也可自定义逻辑循环 并且计算
笔者人为没有正真的同步技术,所谓的同步都是相对的,CPU四核多线程,能同步处理吗,偶然吧,这跟误差是一个道理。只是几乎是在纳秒级内已经做计算处理了,相对独立有可能同步,
所以若是单线程处理程序的时候,按步骤执行那是必然的,
那以上这个问题就产生了,一些数据不是必须得靠连线必须得执行下去,可以缓存执行。
作为一些状态信息,是没有数据体现给开发者的,就比如说是VISA初始化后的状态 如何转移使用,除了功能变量或是直接连线以为LABVIEW是否还有别的简单办法,否则真的有多少COM口得设置多少COM功能变量才符合这样的需求
这样的需求不知道是否有遇到过?

一周热门 更多>