LabVIEW在不同平台之间移植VI 点击:727 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2022-08-20 22:10:51
楼主
LabVIEW在不同平台之间移植VI
移植性问题包括文件名、分隔符、分辨率和字体的差异,可能重叠的标签以及图片格式的差异。
可移植的和不可移植的VI
只要LabVIEW版本相同,VI可在任何运行LabVIEW的平台之间移植。如VI包含平台特定的要素(.NET或ActiveX),则VI不能移植。 在上述情况下移植会破坏VI。
LabVIEW在所有平台上使用相同的文件格式。
VI在新平台上打开时,LabVIEW将检测到该VI来自另一个平台,并重新编译该VI,使该VI产生对于当前处理器正确的指令。 如果要传输的VI位于其他平台格式的磁盘,可能需要读取工具才能读取该磁盘。
以下VI是不可移植的:
位于vi.lib目录下的VI-LabVIEW每次发行的版本包都含其自有的vi.lib。 不要跨平台移动vi.lib中的VI。
兼容性VI-在较高版本的LabVIEW中打开在前期版本LabVIEW中创建的VI,LabVIEW将使用兼容性VI。 兼容性VI可实现前期版本LabVIEW中的功能。移植会破坏这些VI,因为这些VI将调用平台特定的共享库。
包含调用库函数节点-除非VI可以找到一个与“调用库”函数引用有相同名称的库,否则移植会破坏这些VI。
特定平台通信VI,如Windows平台上的.NET或ActiveX函数、macOS上的AppleEventsVI。
VISA取数和VISA存数函数。
文件名差异
要简化跨平台的VI移植,可考虑VI文件名的使用。Windows、macOS以及Linux的文件名可以有255个字符,包括扩展名.vi。 避免在文件名中使用在另一个平台上无效的字符。冒号(:)在macOS上无效,正斜杠(/)在Linux上无效,下列字符在Windows上无效:\、/、:、*、 ?、"、<、 >和|。
为避免问题的复杂化,使用在所有平台都有效的名称保存VI,或者将其保存在LLB中。 LLB的名称须符合各平台的限制条件,但LLB中VI的文件名最多可包含255个字符且不受任何平台的约束。因此,LLB是传输VI最方便的形式,因其对大多数文件系统都不存在依赖性。
Linux系统对文件名区分大小写,其它系统则不区分。 如使用名称引用VI,则引用时应始终将名称大写。
分隔符差异
如开发在其它平台上使用的VI,则不要在文件名中使用反斜杠(\)、正斜杠(/)及冒号(:)等特定平台的路径分隔符。 避免在文件名中使用任何特殊字符,因为不同的文件系统对它们有不同的解释。例如,Linux系统中,隐藏文件的文件名以句点开头。
分辨率和字体差异
字体因平台而异。移植一个VI后,选择新的字体以获得更好的显示效果。 设计VI时,切记三种可在各平台上映射的字体:应用程序字体、系统字体和对话框字体。

添加图片注释,不超过 140 字(可选)

应用程序字体是在控件选板、函数选板、即时帮助和提示框中出现的默认字体。
系统字体是LabVIEW用于菜单的默认字体。
对话框字体是LabVIEW在对话框和系统控件中使用的默认字体。
三种字体在不同平台上的默认字体是相同的。
(Windows) LabVIEW使用默认Segoe UI。
(macOS) LabVIEW默认使用Lucida Grande字体。
(Linux) LabVIEW默认字体为Helvetica。
当移植到另一平台上的VI包含上述某种字体时,LabVIEW将确保字体映射与原平台相似。
如不使用预定义字体,则字体将由于其它平台可用字体和显示分辨率的不同,而在新的平台上发生字体大小的改变。例如,在macOS上选用了Geneva或者NewYork字体,然后将该VI移植到Windows上,LabVIEW将由于无法在Windows上发现该字体名称而以Arial字体代替。 替代的字体与原有字体可能不相符,且对象可能会重叠。 如移植一个VI到Windows而Windows无法识别该字体,新的字体可能会在显示上有所不同。
同样,一个字体可能无法被另一个语言系统识别。例如,一个日文系统可能无法识别Windows中的Arial字体。使用应用程序、对话及系统字体可避免应用程序本地化后重新设置字体。
如在一段文本中使用预定义的字体,则应避免改变文本大小。 如将字体改为非默认字体大小并将VI移植到另一个平台,则LabVIEW将尽量使字体与修改后的字体大小相匹配。字体效果取决于屏幕分辨率,所以移植的字体不一定合适。
字符代码问题
计算机用字节表示数据。计算机通过为每个字符指定代码,以存储字母及其他字符。
在最简单的情况下,依据映射表,一个字节对应一个字符或编码。多数操作系统支持不同的编码。 一种编码形式为单字节编码,它最多可表示2个字符。 如要表示除英文字符之外的字符,操作系统也支持多字节编码。多字节编码可支持上千个字符,但每个字符由多个字节组成。 日文和中文系统使用多字节编码来表示上千个字符。 几乎全部操作系统均支持可变长度字节编码,它使用更少的字节来表示更多的常用字符。可变长度字节编码(例如,UTF-8)使用一个字节编码表示前128个字符,并提供附加字节,以扩展可能的字符表示数量。
注: 在多字节系统的应用程序中,不要以将字符串转换为字节数组的方式分析一个字符串,因为特定字符可能需要两个字节。 一些字符串函数不处理多字节字符。
在美国及西欧国家,最常见的8位编码为ISO Latin I,它是ASCII码的扩展。
ASCII编码是一个7位代码(从0到127)。 它包含了大小写英语字母、美国英语标点符号、10进制数字,以及一些控制代码。控制代码是一组不可显示的字符,用于文本格式化。 从\0x21到\0x7F范围内的大多数ASCII字符可以打印。
操作系统支持和8位编码(例如,ISO Latin 1)来表示国际字符,8位编码是ASCII码的扩展。 低位的128个字符代码与ASCII完全相同,高位的128个字符代码在每个编码中都不同。 所有国际字符位于高位的128个字符代码中。 用于Windows和Linux的LabVIEW均使用8位字符集,但编码方式不同。从而导致了移植性问题。
美国和西欧国家,用于Windows、Linux的LabVIEW使用ISO Latin 1编码,也称为代码页。 对于本地化的日文、中文或韩文操作系统,LabVIEW使用不同的多字节编码,表示每种语言的字符。 LabVIEW根据操作系统语言环境设置,判定要使用的编码方式。 上述编码方式在Windows和Linux平台上均相同,因此移植性不再成为问题。 但用于macOS(64位)的LabVIEW使用可变长度编码UTF-8,它是ASCII码的扩展并可表示任意语言。
注: 全部操作系统均支持UTF-8编码。 但LabVIEW不在Windows、Linux和OS X(32位)平台上使用UTF-8维护现有用户应用程序的兼容性。
将VI从一个平台移植到另一个平台时,如从macOS到Windows或从Windows到macOS,由于平台之间代码页的不同,可能会遇到一些问题,特别是在使用高128位的非ASCII字符时。 例如,法语中café这个词使用了扩展字符é,它在Windows中的十六进制值是\0xE9。 如要在64位macOS上显示同一字符é,可使用双字节序列\0xC3\0xA9。
LabVIEW可针对一些元素实施代码页转化,如标题、VI及参数提示和描述、VI标题、其它私有数据等。 私有数据是指列表框项名称、表的行首和列首、表格单元字体、图形曲线名称、图形注释名称及游标名称。然而,LabVIEW并不映射标签和字符串内容。 移植到新平台后的标签和字符串内容可能会与预期效果不同,需手动修改。因此,如希望将VI从Windows或者Linux移植到macOS或者相反操作,则要避免在标签或者字符串内容中使用国际字符。
LabVIEW不会映射字符串内容,因为字符串被解析为二进制信息。 如通过GPIB或串口通信与一个仪器进行通信,并且该仪器要获取二进制字符串\0x63\0x61\0x66\0xC3\0xA9,在64位macOS平台上这个字符串显示为café,而在Windows平台上显示为café。 在这两种情况下,应向仪器发送相同二进制字符串。为避免此类通信错误,LabVIEW不对字符串值进行字符映射。
LabVIEW不会映射标签,因为重新映射标签为编码将导致VI断开。 例如,使用按名称解除捆绑函数时,LabVIEW重新映射簇的标签。 此时VI将断开,因为按名称的控件引用不再匹配。
标签重叠
将VI移植到一个新平台时,控件和标签的大小可能会改变,这取决于字体在新平台上更大还是更小。LabVIEW将标签从所在控件中删除以防止标签重叠。 同样,每一个标签和常量都有一个默认的调整为文本大小属性。 新建一个标签或常量时,设置这一属性可调整对象边界以显示所有边界内的文本。
如手动调节标签大小,则LabVIEW会关闭这一属性,快捷菜单上的选项不会显示勾选。 关闭调整为文本大小,对象边界保持不变,LabVIEW会对内部文本进行必要的剪裁。 如在平台间移植VI时不希望LabVIEW剪裁文本,则应将标签和常量中的这一属性保持为打开。 标签大小调整后,可以手动打开调整为文本大小。
并非所有计算机都有高分辨率的显示器。即使显示器具有高分辨率,为便于移植,也不要使前面板太大。 为达到最佳移植效果,应在控件之间预留额外间隔以避免控件重叠。 移植一个与另一个标签重叠的标签时,增大移植目标平台的字体可能会使整个控件重叠。
图片差异
位图是一种最基本的图片类型,通过一系列的值指定图片中每个像素颜色。更复杂的图片可包含每次显示图片时执行的计算机系统命令。
图形应用程序的图层可创建基于位图的图片。位图是所有平台都适用的图片存储格式。 如在前面板上使用含有位图的图片,则将VI加载到另一个平台上时,多数情况下,图片和原图片外观一致。但是,含有填充等绘图命令的图片可能还含有其它平台所不支持的命令。 因此,在另一个平台上使用含有位图的VI前应检查其在该平台上的外观。
图形应用程序图层可创建包含绘图命令的图片。如需使图片更易于移植,则在图片导入VI前,应把图片粘贴到图形应用程序的图层上。
(Windows和macOS)利用Windows上的一些图形应用程序以及macOS上的许多图形应用程序,可剪切或者粘贴非四边形的图片。 例如,在macOS上可利用Lasso工具选取圆形、三角形或更为复杂的图形,如一个音符的形状。
其它平台可能会将这些不规则的图形画在背景为白色的矩形上。在Windows平台上,如需要形状不规则的图片和恰当比例的图片,应使用支持加强原文件的应用程序。
上文中提到的例子和资料,均在word中的附件里,可点击下载。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目问题,可联系我们。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师