61阅读

第一章 各种环境中动物-LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

发布时间:2018-05-01 所属栏目:labwindows

一 : LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

1.1 LabWindows/CVI

1.1.1 LabWindows/CVI概述

LabWindows/CVI是美国NI(NationalInstruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、MacOS和Unix)下运行。

LabWindows/CVI 是为C语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。使用LabWindows/CVI可以完成以下但不限于以下工作:

·交互式的程序开发;

·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;

·充分利用完备的软件工具进行数据采集、分析和显示;

·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;

·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑1 LabWindows/CVI界面

LabWindows/CVI的功能强大在于它提供了丰富的函数库。利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。

数据采集。IVI库、GPIB/GPIB488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。

数据分析。格式化IO库、分析库以及可选的高级分析库。

GUI。使用LabWindows/CVI的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI的用户界面库函数可以在程序中创建并控制GUI。此外,LabWindows/CVI为GUI面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。

网络和进程间通信库。动态数据交换(DDE)库、TCP库、ActiveX库、Internet库、DIAdem连接库、DataSocket库等。

除此之外,用户可以在CVI中使用ANSI C库中的全部标准函数。

正式因为有了强大的库支持,所以在CVI中,完成绘制图 1‑2所示正弦函数波形的功能,只需要在main()函数中写三行代码:

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑2 CVI程序运行结果

一旦提及NI公司,大家可能最先联想到的是NI公司推出的LabVIEW软件。LabWindows/CVI与LabVIEW相比,主要应用在各种测试、控制、故障分析及信息处理软件的开发中,其更适合中、大型复杂测试软件的开发,是工程技术人员开发建立监测系统、自动测量环境、数据采集系统、过程监测系统的首选工具。

1.1.2 LabWindows/CVI安装

要安装CVI,只需要根据CVI安装包里的“Release Notes.pdf”和“说明.txt”一步步完成安装即可。

安装完CVI后,我们有必要看一下,安装程序在我们计算机的磁盘中丢下了哪些东西。

表 1‑1LabWindows/CVI主要目录及其内容

目录名

说明

bin

LabWindows/CVI的库文件

extlib

外部编译器使用的CVI库文件(只在Windows95/NT中使用)

fonts

字体文件

include

头文件

instr

仪器模块

samples

CVI开发例程

sdk

SDK库文件(只在Windows95/NT中使用)

toolslib

开发工具包和库文件

tutorial

使用手册

vxd

VXD实例开发模板

wizard

CVI开发环境中的向导程序

其中,samples文件夹中的例程可以使初学者迅速掌握CVI编程开发基本步骤。bin文件夹下的cvi.chm(也可以通过CVI开发环境中按F1打开)是学习CVI之路必不可少的参考文档。

1.2 寻根问底:开发环境

对于一门学问的初学者来说,最希望搞懂的就是学的东西的本质是什么。在前一小节中我们提到了,LabWindows/CVI是NI推出的一个基于C语言的集成开发环境(IDE,IntegratedDevelopment Environment)。那么什么是开发环境呢,开发环境是怎么工作的呢?

集成开发环境(IDE,Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的VisualStudio系列,Borland的C++ Builder系列等。

但我们自从学习C语言开始就与集成开发环境建立了不解之缘。似乎在我们心中,C语言就是VC/VS、VC/VS就是C语言、VC/VS就是编译器、编译器就是VC/VS。虽然不可否认的是,IDE的出现大大的降低了软件开发的门槛,曾经帮助我们快速入门,但IDE过于友好的界面让人无需思考程序编译、运行的原理即可开始写自己的第一个HelloWorld程序。

所以,我们有必要了解IDE的工作模式,有必要了解IDE是怎么通过命令行去工作的。命令行,看似简陋,却能让人专心于自己的事物,并搞清楚一个程序的来龙去脉。

Keil下的命令行工作方式已经在创新中心的《SST单片机实践教程》的“汇编语言工具链”一节中有了详细的介绍,下面通过一个实例介绍最常用的VC6.0的命令行工作方式。

在此之前,我们假设你至少已经用VC写过C语言,编译过工程,并对Windows下的命令行至少略知一二。当然,如果你现在还不懂,赶紧利用Google等一切现代化的工具解除自己的疑惑。

例1使用命令行完成用VC对下面简单的C语言程序的编译。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

实验步骤

(1)将这段代码保存为.c文件(此处保存为main.c),并讲这段代码放在VC安装路径下的“VC98Bin”文件夹下。

启动命令行窗口,并将地址修改为当前地址
labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

(2)敲入cl.exe main.c命令执行编译。
此时可能会弹出窗口,提示缺少文件“mspdb60.dll”,编译失败。毕竟当前的命令行窗口没有标准VC的环境变量,所以编译程序cl.exe无法从当前的环境变量中找到mspdb60.dll。

(3)在VC安装路径的“CommonMSDev98Bin”目录中找到此DLL并复制到“VC98Bin”文件夹下之后,按键盘方向键↑重新运行cl.exemain.c。此时会提示找不到stdio.h文件。在VC安装路径的“VC98Include”目录中找到stdio.h之后,复制到“VC98Bin”文件夹下。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑3命令行编译main.c-提示找不到stdio.h

(4)同理,程序会依次提示找不到文件LIBC.lib、OLDNAMES.lib、kernel32.lib。这些库文件都可以在VC安装目录下的“VC98Lib”路径中找到。

(5)再次运行,命令行提示编译成功。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑4 命令行编译main.c-编译成功

(6)在命令行中敲入main.exe。“Hello,world!”是否显示出来了呢?

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑5 运行main.exe

至此,聪明的你应该已经知道VC的IDE是如何依赖于安装包内的编译器CL.exe程序实现编译的功能了吧。

本小节旨在通过对大家熟悉的VC的IDE改用命令行进行编译的方式引导大家接触一个新的事物首先应该搞清楚其本质的思想,养成搞学问时喜欢刨根问底的好习惯。除了编译器的功能外,集成开发环境IDE应该还带有调试器的功能。限于篇幅,此处不再多过多探索,大家可以自行研究。若对IDE感兴趣,大家还可以调用现有的编译器程序、调试器程序编写自己的IDE!

1.3 C语言的魅力

是不是在大家的印象里,C语言只能做那种char后面跟几个*,故意把人绕晕之后运行的时候还会弹出一个黑乎乎的窗口的程序?

是不是在大家的印象里,C语言不能访问网络、不能播放声音、不能显示图片、不能跟硬件设备打交道、不能做GUI,即便做出来GUI也丑的很或者慢的很,更不能搞多线程之类的高端一点的玩意儿?

是不是在大家的印象里,为了使用一个串口库,我们就必须丢掉C语言然后让C++甚至MFC闪亮登场?

是不是在大家的印象里,C语言能做的事情,C++、Java、C#或者Python等等编程语言通通都能做到?而这些编程语言能做到的事情C语言就很难做到?

如果一定要这么认为,那就大错特错了。即便在编程语言更新换代如此之快的今天,我们也很难找出一个智能设备或者商业软件在开发的过程中未曾使用C语言过。

借助CVI以及CVI自带的丰富的函数库,C语言不仅能够做C++、C#、Java等可以做的事,有时还可以做的更快更好,甚至还可以做这些编程语言所不能做的事。

我们学校(华中科技大学)的论坛“白云黄鹤”的服务器端程序就是采用C语言开发的,没有使用现成的Web服务程序或者数据库管理程序(当时没什么IIS也没MySQL可以用),因此数据库通过不断对文件进行fread或者fwrite实现的。

第一次听说C语言还可以用来开发服务器程序,大家肯定不敢相信。不过下面我们将以一个简单的实例来向大家证明,C语言真的可以写服务器端的程序,而且简单的超乎想象。

例2使用C语言完成简单的Web服务器的功能。

实验步骤

(1)若您的计算机尚未安装Apache,请先安装Apache服务器。若已安装Apache,请确保Apache程序处于运行状态。

(2)在VC6.0中新建C语言工程,输入以下代码。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

(3)编译,并将编译后生成的可执行文件main.exe复制到Apache程序的cgi-bin目录下。

(4)在浏览器地址栏中输入http://localhost/cgi-bin/main.exe?HelloWorld

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑6在浏览器中访问编译的程序并传入HelloWorld参数

是不是见识到了C语言在网络开发中“初见端倪”的一面?上述例子其实是CGI(Common GatewayInterface,通用网关接口)的一个最简单的例子。稍微详细一些的例子将会在第6章“综合实例:远程环境参数检测系统”中见到。如果你对C语言在开发CGI程序感兴趣,也可以自行查找资料,编写一个更具实际价值的网络应用程序。

1.4 CVI开发环境初接触

1.4.1 三步创建自己的Hello,world

不管是学习一门新的语言,还是学习一个新的开发工具,大家的第一个程序都是Helloworld。所以,下面我们一步一步来,实现我们的Hello,world!

1.建立/保存工程

运行LabWindows/CVI,初始状态的CVI会自动为我们建好一个新的工作空间Untitled.cws以及新的工程Untitled。.cws文件是CVI工作空间文件(CVIWorkSpace),而.prj(project)是CVI的工程文件。点击菜单File-New-Source(*.c),新建一个C文件。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑7 打开CVI并新建C文件

2.输入代码保存代码文件

在新建的C文件中输入下列代码,点击菜单File-SaveUntitled1.c(或者按Ctrl+S、或者点击工具栏中的保存按钮),将新建的C文件保存在自己想要保存的位置中。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

3.编译运行

此时若点击菜单Run-DebugProject(或者点击工具栏中的绿色三角形按钮),则CVI会弹出如下所示提示。说明刚刚保存的C语言文件必须添加到一个工程中才能继续编译过程。此时点击Yes会自动将C文件添加到工程中,若点击Cancel也可以右击Untitled工程之后选择AddFile…添加C文件到工程中。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

由于我们只保存了C文件,并未保存工程.prj文件,所以右击Untitled工程之后选择Save,将工程文件保存。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

此时若再点击菜单Run-DebugProject(或者点击工具栏中的绿色三角形按钮),Hello,world成功运行!

总结起来,完成一个HelloWorld程序只需要“建立/保存工程”-“输入代码保存代码文件”-“编译运行”简单的三步。

大家若感兴趣,也可以将以前在VC中写的C语言程序代码复制到CVI中,看看在CVI中是否也能正确的运行。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

其实,CVI是支持ANSI C(American National StandardsInstitute,美国国家标准协会)的,只要是ANSI C的代码,在CVI中一样可以运行。

1.4.2 阅读官方的samples

学习或提升一门编程语言的水平,最快速有效的是阅读大量优质的代码。NI在CVI安装目录的samples下提供了大量的参考例程。大家可以将samples例程中的.cws文件拖动到CVI中打开.cws文件,运行并查看官方的代码。

初次接触CVI的同学可能对CVI的“工作空间”与“工程”并不熟悉。一个工作空间中可能存在一个或多个工程。

CVI每次编译的时候一般只对“当前”工程进行编译。需要注意的是当前工程不是指的当前打开的文件所在的工程,而是被设置为“ActiveProject”的工程。设置一个工程为当前工程,可以通过右击工程-Set ActiveProject来完成,被设置为当前工程的工程名会被加粗显示,如下图所示。

labwindows LabWindows/CVI入门之第一章:LabWindows/CVI开发环境

图 1‑8 被设置为当前工程的Rtfileio

CVI也可以批量编译,即同时对一个工作空间下的多个工程进行编译。批量编译可以通过菜单Build-BatchBuild…来实现。

1.5 探索与实验

1.5.1 实验

安装CVI开发环境,并实现类似图 1‑2 CVI程序运行结果所示的应用程序,要求产生高斯噪声波形。

1.5.2 探索

通过查看NI帮助文档或查找资料,探究LabWindows/CVI的命令行编译方式。

二 : 各种国外环箍

德式喉箍 Germany Type Hose Clamps

材料 Material:

JIMKOO INDUSTRIAL

HOSE CLAMPS

W1--镀锌钢

All parts steel zinc plated

W2--钢带和箍头为不锈钢,螺丝为镀锌钢

Band and housing stainless steel and screw zinc plated.W4--全不锈钢304

All parts AISI 304 series stainless steel W5--全不锈钢316

环箍 各种国外环箍

All parts AISI 316 series stainless steel

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

www.tjclamp.com

环箍 各种国外环箍

美式喉箍 American Type Hose Clamps

HOSE CLAMPS

JIMKOO INDUSTRIAL

环箍 各种国外环箍

环箍 各种国外环箍

小美式Mini U.S.Style

包头式Normal Housing

环箍 各种国外环箍

材料 Material:

W1--镀锌钢

All parts steel zinc plated

W2--钢带和箍头为不锈钢,螺丝为镀锌钢

Band and housing stainless steel and screw zinc plated.W4--全不锈钢300系列

All parts AISI 300 series stainless steel

www.tjclamp.com

环箍 各种国外环箍

美式喉箍

环箍 各种国外环箍

American Type Hose Clamps

扣盖式

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Antenna Housing

环箍 各种国外环箍

JIMKOO INDUSTRIAL

HOSE CLAMPS

环箍 各种国外环箍

材料 Material:

W4--全不锈钢300

All parts AISI 300 series stainless steel

万能卡箍 Endless Clamp

特点:Speciality:

万能卡箍对于大直径设备是一种灵活的解决办法,可以避免经常储存多种直径的卡箍。[www.61k.com)主要用于:设备施工工程、避雷设施、快速设立标志等。

Endless Clamp is a flexible solution, especially for large diameter requirements. This mold saves you having to keep a lot of different clamp diameters in stock. It is used in plant construction work, lightning protection equipment, for fastening signs in place, etc.

材料 Material:

W4--全不锈钢300

All parts AISI 300 seriesstainless

www.tjclamp.com

环箍 各种国外环箍

单耳无级卡箍 Stepless 1- Ear Clamps

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

HOSE CLAMPS

JIMKOO INDUSTRIAL

特点Speciality:

1、 精细的“舌头在导槽内”的专利设计使圆滑的内圈在360度范围内提供均匀的密封。[www.61k.com)360 stepless design-no steps or gaps on inner circumference.

2、 边缘圆滑的带钢不会损伤所夹紧的软管。Special smooth edged band steel to protect hose.

3、 重量轻,强有力的小间隙设计。Light weight design, Narrow

环箍 各种国外环箍

band, concentrated seal compression.

材料Material:不锈钢 Stainless steel AISI 304

www.tjclamp.com

环箍 各种国外环箍

耳箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Ear Clamps

无耳无级卡箍

Earless Stepless Clamps JIMKOO INDUSTRIAL单耳可调卡箍 1-Ear Adjustable ClampsHOSE CLAMPS材质:不锈钢 Material:Stainless Steel AISI 304带宽 Band width 带厚 Band thickness 材料Material:不锈钢 Stainless steel AISI 304

环箍 各种国外环箍

7mm    0.6mm

型号范围:Dimension Range:19.5~110.0mm

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

双耳卡箍 2-Ear clamps

专用工具 Ear Clamp Jaw Pincers

材料Material:镀锌钢 Zinc plated steel 直口卡钳 1098--Standard Jaw Pincers 偏口卡钳1099--Side Jaw Pincers窄口卡钳1097--Pincer Narrow Width Retaining Plate大力卡钳1096--Heavy Duty Pincers

www.tjclamp.com

环箍 各种国外环箍

强力卡箍 High Strength Clamps

HOSE CLAMPS

环箍 各种国外环箍

材料Material:

JIMKOO INDUSTRIAL

W1--全镀锌钢 All galvanized steel

W2--钉和轴为镀锌钢 其余为不锈钢300系列 All AISI 300 Stainless steel except the Galvanized screw and shaftW4--全不锈钢 300系列

AISI 300 Stainless steelW5--全不锈钢 316

AISI 316 Stainless steel

环箍 各种国外环箍

www.tjclamp.com

环箍 各种国外环箍

双头强力 Double Bolts High Strength Clamps

JIMKOO INDUSTRIAL

HOSE CLAMPS

材料Material:

W1--全镀锌钢

All galvanized steel

W2--钉和轴为镀锌钢,其余为不锈钢300系列

AISI 300 series Stainless steel except the Galvanized screw and shaft

W4--全不锈钢 300系列

All prats AISI 300 series Stainless steel

W5--全不锈钢 316

All prats AISI 316 Stainless

环箍 各种国外环箍

steel

环箍 各种国外环箍

www.tjclamp.com

环箍 各种国外环箍

快速松紧喉箍 Quick Release Hose clamps

HOSE CLAMPS

JIMKOO INDUSTRIAL

美式快速松紧喉箍 American type Quick Release Hose clamps

德式快速松紧喉箍 Germany type Quick Release Hose clamps

材料 Material:

W1--镀锌钢

All parts steel zinc plated

W2--钢带和箍头为不锈钢,螺丝为镀锌钢

Band and housing stainless steel and screw zinc plated.W4--全不锈钢

All parts AISI 300 series stainless steel

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

www.tjclamp.com

环箍 各种国外环箍

英式喉箍 British Style Hose Clamps

特点:

JIMKOO INDUSTRIAL

HOSE CLAMPS

英式卡箍是按照BS5315标准设计,使其具有较高的自由扭力和整体扭力。[www.61k.com)较窄的钢带

环箍 各种国外环箍

环箍 各种国外环箍

使用高强度材料制成,可适用于各种管道的密封。

环箍 各种国外环箍

Speciality:

British Style hose clamps is based on the BS- 5315 specification. The three component design produces a robust clip optimizing free torque, with high final torque and the strong material allows the use of thinner band (compared to Powergrip), thus giving band flexibility which readily conforms to the shape of the hose.

材料 Materials:?

W1:镀锌钢All parts steel zinc plated W4:全不锈钢All parts stainless steel

www.tjclamp.com

环箍 各种国外环箍

其他卡箍 Other Hose Clamps

HOSE CLAMPS

JIMKOO INDUSTRIAL

胶条卡箍

环箍 各种国外环箍

环箍 各种国外环箍

Rubber Clamps

材料 Material:

W1--镀锌钢All parts steel zinc plated W4--全不锈钢All parts stainless steel

环箍 各种国外环箍

符合DIN 3016 According to DIN3016

固定卡箍 Pipe Clamps

手柄式卡箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Hose Clamp With Butterfly

www.tjclamp.com

环箍 各种国外环箍

其他卡箍

环箍 各种国外环箍

环箍 各种国外环箍

Other Hose Clamps

迷你卡箍 Mini-clamps

JIMKOO INDUSTRIAL

环箍 各种国外环箍

环箍 各种国外环箍

HOSE CLAMPS

材料 Material:

双钢丝卡箍

环箍 各种国外环箍

Wire clamps

W1--镀锌钢 All parts steel zinc plated W4--全不锈钢300系列

All parts AISI 300 series stainless steel

材料 Material:

W1--镀锌钢 All parts steel zinc plated W4--全不锈钢304

All parts AISI 304 series stainless steel

弹簧卡箍

环箍 各种国外环箍

Spring clamps

特点 Speciality:

采用优质锰钢制作,使用及拆卸方便,简捷,收紧均匀,可反复使用,有不同直径,可供客户选择。(www.61k.com]表面防护采用性能比镀锌高7-10倍的达克罗符合涂层。

Made by high quality manganese steel and designed on basis of DIN3021 standard makes it disassemble easily and quickly. Also it could be used reiterative. DARKOLL coating protect hose 7-10 times compare with zinc plated.

环箍 各种国外环箍

抽带式卡箍 Throbbing Clamp

材料 Material:

W4--全不锈钢300系列

All parts AISI 300 series stainless steel www.tjclamp.com

环箍 各种国外环箍

其他卡箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Other Hose Clamps

T-Bolt Clamps

HOSE CLAMPS

JIMKOO INDUSTRIAL

Band width 3/4"

材料 Material:

W2--钢带为不锈钢,螺栓和螺母为镀锌钢

Band stainless steel,screw and nut zinc plated.

W4--全不锈钢300系列

All parts AISI 300 series stainless steel

环箍 各种国外环箍

环箍 各种国外环箍

Spring Loaded T-Bolt Clamps

V-Bands Couplings

Band It Clamps

Band It Clamps

材料 Material:

W4--不锈钢 stainless steel AISI 430 AND AISI 304

www.tjclamp.com

环箍 各种国外环箍

管束

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Pipe Coupling JIMKOO INDUSTRIAL

D型变径式卡箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Type D-Changeable Diameter Clip drive

www.tjclamp.com

环箍 各种国外环箍

管束

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

环箍 各种国外环箍

Pipe Coupling

JIMKOO INDUSTRIAL说明 Instruction:B型耳板式卡箍 (B type):W2—螺丝和螺母为铁镀锌,其余为不锈钢。[www.61k.com](the screw and nut are galvanized steel,others are stainless steel)C型和CHA型夹板式卡箍(C type and CHA type):

W2—螺丝为铁镀锌,其余为不锈钢。

(the screw and plate are galvanized steel,others are stainless steel)E、F型卡箍(E,F type):

W2—螺丝和套管为铁镀锌,其余为不锈钢。

(the screw and cannula are galvanized steel,others are stainless steel)H型 (H Type)

螺钉和轴为铁镀锌,其余为300系列不锈钢。All300 series stainless steel except galvanized bolts and shaft.

W4—均为全不锈钢。(All 300series stainless steel)

环箍 各种国外环箍

环箍 各种国外环箍

爪箍 Grip Collar

橡胶制品

rubber products

G型  Type G

G型管道封堵 Type G-Pipe Cover

R-1型  Type R-1R-2型  Type R-2www.tjclamp.com

三 : Redis主从复制各种环境下测试

Redis 主从复制各种环境下测试

测试环境:
Linux ubuntu 3.11.0-12-generic
2GB Mem
1 core of Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
Redis 2.6.13
以下 R1 表示master, R2表示slave
配置采用运维组标准配置,默认主从配置一样,在从节点启动后设置为slave

R1: 127.0.0.1 6378 R2: 127.0.0.1 6379

0. 初始情况下各节点info情况(部分有用信息):

MASTER ->  'connected_slaves': 1, #可判断slave存活状况 SLAVE ->  'master_host': '127.0.0.1',  'master_last_io_seconds_ago': 5,  'master_link_status': 'up', #可判断master与slave存活状况  'master_port': 6378

1. 正常读写:

In [32]: r1.set('key', 'value') Out[32]: True In [34]: r2.get('key') Out[34]: 'value'

2. 主备正常连接下, 默认slave(不配置slave-read-only on)

向slave写入后发现报错

In [35]: r2.set('key2', 'value') ReadOnlyError: You can't write against a read only slave

3. Master闪断:

Crash掉主节点:

'master_host': '127.0.0.1', 'master_last_io_seconds_ago': -1, 'master_link_down_since_seconds': 4, 'master_link_status': 'down', 'master_port': 6378

重启主节点后,slave自动从从新建立连接

'master_host': '127.0.0.1', 'master_last_io_seconds_ago': 9, 'master_link_status': 'up', 'master_port': 6378,

4. Crash掉主节点,slave默认(不配置slave-read-only on 情况)

即使master挂掉,slave写入依然报错

SLAVE ->  'master_host': '127.0.0.1',  'master_last_io_seconds_ago': -1,  'master_link_down_since_seconds': 6,  'master_link_status': 'down',  'master_port': 6378  In [37]: r2.set('key', 'value') ReadOnlyError: You can't write against a read only slave.

设置slave为readonly,发现报错

zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 set slave-read-only no (error) READONLY You can't write against a read only slave.

需要关闭slave的slave特性, 将其升级为主节点

zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 slaveof NO ONE OK zb@ubuntu:~/codes/test$ redis-cli -h 127.0.0.1 -p 6379 set slave-read-only no OK

升级为主节点后,继续向slave写入:

In [38]: r2.set('key', 'value') Out[38]: True

5. 重启master, 如果将slave升级为master, 此时master与slave已经隔离, 都作为主节点存在(注意此时的主节点是没有数据的)

In [41]: r1.get('key') In [42]:

6. 拷贝R2的dump数据到R1后重启:

In [43]: r1.get('key') Out[43]: 'value'

7. 从新将R2设置为R1的slave(slave默认配置):

向slave写入:

In [45]: r2.set('key2', 'value') ReadOnlyError: You can't write against a read only slave.

8. 如果将slave-read-only 属性写到配置文件中:

可以向slave写入数据,但是不会同步到master

In [50]: r2.set('key2', 'value') Out[50]: True

9. Crash掉R1,往R2写数据(关掉slave-read-only):

SLAVE ->  'master_link_status': 'down' In [75]: r2.set('key2', 'value') Out[75]: True

重启Master(此时的master无数据):

In [85]: r2.get('key2') In [86]: r2.get('key3')

可以看到,重启了Master后,slave同步了master状态,由于master没有数据,slave的数据同时被删除

总结(部分测试未写出来):

  • slave 配置为slave-read-only on需要升级为主节点或者写入配置文件中, 而不能在默认slave情况下直接设置
  • master与slave断开后会检测心跳, 从新建立连接.
  • 可以直接copy DUMP文件从新重启master
  • 在Master为空以后,slave同步数据会抹掉全部数据.

扩展:redis 主从复制 / redis主从复制原理 / redis的主从复制

本文标题:第一章 各种环境中动物-LabWindows/CVI入门之第一章:LabWindows/CVI开发环境
本文地址: http://www.61k.com/1189215.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1