VC控制

2024-10-22

VC控制(共12篇)

VC控制 篇1

随着国内外冶金工业的发展,在我国的板带材生产中已经广泛应用四辊板带轧机,为了最大限度地提高轧制成材率,一方面采用合理的轧制工艺,通过将轧机工作辊、支承辊与原始磨削辊型进行配合;另一方面轧机还应具备一定的辊型调整手段。由于工作辊面所形成的有载辊缝形状决定了实际轧件的截面形状,而这又受到轧制时轧制力、轧辊配置、弯辊力等因素的影响和制约。因此,在板带轧制中如何根据产品的平直度原则进行四辊板带轧机的辊型的辊型设计及辊型调整越发重要。

1 冷轧板形缺陷与控制

所谓板形,就是轧制后带材所产生的波浪和瓢曲。实际上就是指板带材的翘曲程度。由于各种因素的影响,带材在辊缝中的纵向延伸方向往往是不均匀的。通过对板形进行检测进而实现板形自动控制,只有连续不断地、准确地将板形状况及时地反馈给控制系统,板形控制系统才能以此为依据向执行机构发出正确的调节指令,实现板形闭环自动控制。

2 控制板形问题的基本方法

2.1 HC轧机

在普通四辊冷轧机的基础上对HC轧机进行处理,通过在工作辊和支承辊之间设置可以进行轴向移动的中间辊,采用更小的直径的工作辊。主要特点是: (1) 中间辊的位置可根据板宽调整,可以减小工作辊的弯曲挠度和工作辊与支撑辊的弹性压扁,因此可以显著地减小带钢边缘减薄现象; (2) 中间辊的轴向移动在一定程度上减小了工作辊与支承辊的有害接触区,使有害接触区不再阻碍液压弯辊,液压弯辊的板形控制功能得到明显改善; (3) 采用了较小的工作辊直径,减小了轧制力和轧制力矩。

2.2 CVC轧机

CVC轧制采用S型轧辊,上下轧辊的辊型相反布置,调节轧辊的轴向位置可以获得不同的辊缝形状,以满足轧制带钢的板凸度和板形要求。CVC轧机的特点主要表现在: (1) 多组原始辊型不同的轧辊可以通过一组S型曲线轧辊进行代替,在一定程度上减少了轧辊的备用数量; (2) 通过调整无级辊缝进而适应不同产品规格的变化; (3) 辊缝调节范围大。

2.3 PC轧机

轧辊的成对交叉是PC轧机的主要特点。成对交叉是指相互平行的轧辊轴线,上工作辊与上支撑辊构成一对,下工作辊与下支撑辊构成另一对,通过交叉将这两对轧辊的轴线按照一定的角度进行布置。轧辊辊缝随着轧辊轴线的交叉而发生变化,离轧辊交叉线越远,辊缝就越大。PC轧机对板形进行控制,是通过改变轧辊轴线交叉角进而改变辊缝形状实现的,这是一种柔性的辊缝型。

3 VC轧机的特点与结构

3.1 特点

VC轧辊系统的特点主要有:通过降低支撑辊的换辊次数,在一定程度上减少了不同辊型的轧辊数量;对轧辊磨损及热辊形进行补偿;在进行带材轧制加、减速的阶段,对于轧制速度的变化引起的轧制力波动和轧辊凸度变化可以进行有效补偿;通过采用VC辊代替原有支撑辊,所以在线改造较为方便。

3.2 VC轧辊的结构

VC辊是一种组合式支承辊,由芯轴、套筒和旋转接头装配而成(如图1所示),在芯轴和套筒之间的辊身中心区域有一个油槽,槽内充以压力可变的高压油。辊颈两端的套筒均收缩,收缩接头用作内部压力油的外部密封件并用于轧辊传动装置的自由滑移转矩传输。

4 控制VC辊轧机板形的技术

根据图1所示,与普通实心辊相比,VC轧机由套筒与芯轴通过热装而成,其内部有一个可以进油的空腔。使得在轧制过程中,由于VC轧机内部油腔的存在,套筒在辊间压力作用下,一方面产生一个整体的挠度,另一方面在受力区域产生一个塌陷位移。

5 结语

综上所述,随着现代工业技术的不断发展,对冷轧带材的质量提出更高的要求,冷轧机的装备技术、控制水平在一定程度上向着更高层次发展,其最终目标是不断提高连续化率和质量,进而推广自动化。

参考文献

[1]程志彦.几种新型轧机的板形控制分析[J].机械管理开发, 2005, 200 (4) :36-37.

[2]刘妍.基于改善板形的带材拉伸弯曲矫直理论研究及其仿真[D].燕山大学, 2007.

[3]丁开荣.板形标准曲线的理论计算方法研究[D].燕山大学, 2006.

[4]白振华, 连家创, 杨杰等.可变凸度轧辊 (VC辊) 在不同油压下的凸度分布曲线[J].机械工程学报, 2002, 38 (6) :156-158.

[5]王国栋, 刘相华, 王君等.我国中厚板生产设备和工艺技术的发展[C].//首届宝钢学术年会论文集, 2004:150-157.

[6]郭峰.中厚板精轧基础自动化控制系统设计与研发[D].东北大学, 2008.

VC控制 篇2

1、启动VS2008(我的默认环境是VC),单击“File”->“New”->“Project”

出现如下对话框:

接下来按照图示来,我就不文字叙述了,

2、点击“Finish”后,在右击“Source Files”->“Add”->“New Item”:

出现如下对话框:

如果是C程序,就添加后缀“.c”,单击“Add”就可以写程序代码了(对于头文件和资源文件的添加是一样的,这里就不多说了),

3、我用的测试代码如下:

4、单击“Debug”->“Start Without Debugging”:

出现如下对话框:

单击“Yes”,运行结果为:

VC控制 篇3

关键词:虚拟现实;OpenGL;3DS;Visual C++

中图分类号:TP317 文献标识码:A文章编号:1009-3044(2007)15-30832-02

3DS Document Reader and Control Methods Based on VC + + 6.0 and OpenGL

DING Bin

(Northeastern University,Qinhuangdao 066004,China)

Abstract:This article introduced how uses the OpenGL read under Visual C and controls 3Ds Max production three-dimensional model method.

Key words:Virtual reality;OpenGL;3DS;Visual C++

1 引言

OpenGL和3DS Max 是三维图形开发的两个强有力的工具。

OpenGL作为一个性能优越的图形应用程序设计界面(API),其编程灵活、方便,有广泛的移植性和很强的交互式三维图形处理能力,被认为是高性能图形和交互式视景处理的标准。OpenGL除了能够对三维模型进行绘制外,还可以进行三维交互、动作模拟等。具体的功能主要有:模型绘制;模型观察;颜色模式的指定;光照应用;图形效果增强;纹理映射;实时动画;交互技术。此外,使用OpenGL编程有三个显著的特点:网络透明,可共享资源;程序移植性强,在不同的操作系统上不必重建模型;采用流水线机制,适于硬件加速。

3DS Max是Autodesk公司开发的一套优秀的三维建模、动画制作软件,利用该软件能够快速地构造出复杂的三维模型,并加以材质、贴图、纹理、灯光等效果。此外,3DS Max软件是基于WindowsNT平台的,方便易学,又因其相对低廉的价格优势,所以成为目前个人PC上最流行的三维建模软件。它所生成的3DS文件已经成为业界得标准,是一种非常普及的数据格式,以3DS格式保存的三维图形文件也非常丰富。

因此,通过OpenGL读取并控制3DS模型对于快速开发可视化图形应用软件以及虚拟现实系统具有十分现实的意义。

2 OpenGL的绘制流程

作为图形硬件的软件接口,OpenGL主要工作是将三维的物体投影到一个二维平面上,之后处理得到的像素,进行显示。首先将物体转化为可以描述物体几何性质的顶点与描述图像的像素,在执行其他操作后,最终将这些数据转化成像素数据。

2.1 针对每个顶点的操作和几何要素装配

每个顶点的空间坐标需要经过模型取景矩阵变换、法向矢量矩阵变换,若允许纹理自动生成,则由变换后的顶点坐标所生成的新纹理坐标替代原有的纹理坐标,再经过当前纹理矩阵变换。然后根据几何要素类型决定采取不同的几何要素装配方式。

2.2 像素操作

由主机读入的像素首先解压缩成适当的组分数目,然后进行数据放大、偏置,并经过像素映射处理,根据数据类型限制在适当的取值范围内。像素最后写入纹理内存,使用纹理映射或光栅化生成像素段。

2.3 像素段操作

当使用纹理映射时,每个像素段将产生纹素,再进行雾效果计算、反走样处理。接着进行剪裁处理、一致性检验、模板检验、深度缓冲区检验和抖动处理。

3 3DS文件格式

3DS文件由许多块(chunk)组成(大块中镶嵌子块),一个块由块信息和快数据组成。块的前两项信息分别是块的ID和快的长度(也是下一个块相对于该块的字节偏移量),块的ID是一个整型数,块的长度是一个长整型数。每个块是一个层次结构,不同类型的块,其层次结构也不相同。3DS文件中有一个基本块,其ID是4D4D,它包含了整个文件,每个3DS文件的开头都是由这样一个块构成。基本块中的子块是3D编辑程序和关键贞块,前者的ID是3D3D,后者的ID是B000。3D编辑程序块表明编辑程序数据开始,即物体的形体数据定义从此处开始。关键贞块表明下面开始定义关键贞信息。下面给出块中的基本结构图,

说明不同类型的块及其在块中的位置。

图1 3DS文件结构

在读入这种块结构(大块中嵌套小块,而块的结构固定)的文件时,完全可以用递归的方法实现,而返回上一级的条件则是当前已经读入的块的字节数是否等于块的长度。从父块砖向读入其子块,则可用switch语句实现,通过子块的ID判断进入哪个分支。块结构带来的另一个好处是可以根据需要选择读入的块,而不需要的块可以忽略掉。

此外,3DS文件中也用相同的方法标识了物体在场景树中的位置。场景中给予每个物体一个数字以标识其在场景树中的顺序,作为根物体赋予数字-1(FFFF)。当读取文件的时候,就会得到一系列的物体数字标识。如果当前数字标识比前一个大,那么当前物体时前一个物体的子物体;反之,则又回到上一层结构。

4 3DS文件的读取与控制

3DS格式文件的读入可以分为两大部分:文件内容的读入和3D对象的绘制。

4.1 文件内容的读入

根据3DS文件的结构定义,采用面向对象的技术,把3DS文件对3D模型的描述信息进行数据抽象,首先定义一系列的结构,用来存放对象的材质、位置矢量、关键贞等,然后定义用于处理3DS文件中各种对象的CTriObject类和处理对象序列的CTriList。CTriObject中主要包含以下成员变量:

float * x,* y ,* z;//对象的几何位置的坐标

float * nx,* ny, * nz; //对象的法向量

int* faces; //对象的面

tMaterial materials; //对象的材质

char* name; //对象的名称

还需要定义一个3DS文件的读入类C3dsReader,主要将3DS文件中的内容读入到上述两个对象中。C3dsReader类中有很多成员函数,用于读取不同的内容,主要的如下:

int Read3DSChunk (FILE* fp, Chunk3DS& chunk ) ;

//将块的内容读入块结构中

int ReadPercentage (FILE *fp, float& value);

//读入子块

int ReadColor (FILE *fp,float& red,float& green, float& blue );

//读入颜色定义

int ReadPointArray(CTriObject * newchild, long filezize,FILE *fp );

// 读入顶点

int ReadFaceArray(CTriObject * newchild, long unsigned filezize,FILE *fp );

// 读入多边形

VC控制 篇4

六自由度结构示意图如图1所示, 机械手由机座、腰部、大臂、小臂、手腕及执行末端等组成, 它由6个转动关节组成, 关节1、2、3是用来定位手腕的, 关节4、5、6是用来定位方位的, 每一个关节都是由一个伺服电机驱动。

2 六关节机械手运动学分析

六关节机械手由转动关节和连杆组成, 由关节角度的转动而实现机械手的运动, 为了分析机械手的运动, 需要对机械手的各个机构之间的运动关系进行分析, 建立如图2所示的坐标系, 运用D-H方法可以确定机械手的各连杆D-H参数。

若机械手结构参数已知, 则当给出机械手各个运动关节变量时, 运用坐标变化的方法, 通过齐次坐标的平移和旋转变换就可以确定机械手部在机座标中所处的位置和姿态, 即可确定运动学方程中位姿矩阵的各元素, 设连杆i坐标系和i-1坐标系之间的齐次变换矩阵为i-1Ti, 以下各式sθ和cθ分别代表sinθ和cosθ, S12=sin (θ1+θ2) , C12=cos (θ1+θ2) 则机械手的各齐次变换矩阵如下:

根据多级坐标变换关系, 把以上各矩阵相乘就可以得到机械手末端执行器的位姿矩阵为:0T6=0T11T22T33T44T55T6=

3 仿真系统的设计

3.1 建立单文档程序

在VC++中建立单文档程序manipulator, 在FileView中找到manipuatorView.h, 在程序前面加上#include"glgl.h"和#include"glghu.h"2语句。添加库文件“OpenGL32.Lib glu32.lib”到Object/Library modules栏中, 这样可以把OpenGL的各种库函数调到VC++页面中来。在视图类中添加WM_TIMER定时器消息处理函数, 然后对其生成的OnTimer事件函数进行设计。

3.2 创建渲染描述表

OpenGL是以SGI为图形工作站, 它独立于操作系统, 而Windows应用程序是使用设备描述表 (DC) 进行绘图的, 而OpenGL是使用渲染描述表 (RC) 完成图像的映射的, 因而在Windows环境下绘制窗口要通过建立DC和RC的连接, 实现绘制的目标。RC的映射核心是像素格式的设置, 当OpenGL将数据转化为像素操作写入帧缓存中, OpenGL就要知道Windows的像素格式, 像素属性的设置需要初始化函数PIXELFORMATDE-SCRIPTOR来完成, 包括颜色模式、深度缓存位数等参数。

3.3 设置像素格式

设置像素格式时, ChoosePixelFormat函数是在系统中选取一个合适的像素格式, 它将pixelDesc描述的象素格式选择到系统中, ChoosePixelFormat接受2个参数:一个是hDC, 另一个是指向初始化函数结构的指针&pixelDesc;像素格式的工作函数由SetwindowPixelformat () 完成, 具体代码如下:

3.4 关联RC和DC

用OnCreate () 把DC和RC关联起来, 程序设计如下:

4 仿真原理及人机交互界面

本系统主要由控制界面完成各种运动的选择和控制, 控制界面包括正逆运动、各种轨迹插补、关节角度的输入和运动途经点等。各种运动的程序设计是仿真的核心, 由人机交互界面设计特定运动参数, VC++通过关联函数把设定的参数传输到运动源程序中, 利用Setimer函数设置定时器, 每一段时间就执行OnTimer函数, 然后把各关节变量信息发送出来, 然后通过On Draw函数把程序翻译出来, 在视窗中生成相应的动画。在仿真运动的过程中动画可能闪动, 可以利用OpenGL的SwapBuffers双缓存函数来实现。

用VC++设计的人机交互界面主要包括3部分, 即运动控制界面、运动显示界面和参数显示界面, 如图3所示。这个界面可以很方便地提供控制系统与仿真运动的沟通, 利用这种VC++开发的面板, 可以直观地看到机械手的运动及其轨迹, 同时用户可以很方便地改变机械手的参数进行其他的仿真。

5 结语

利用上述机械手运动学分析和仿真控制系统, 操作者在模拟的环境中能很清楚地观察到抛光机械手正逆运动学求解, 还可以清楚地看到三次多项式、五次多项式、直线插补和圆弧插补的轨迹, 并可以比较它们的差异。借助于计算机仿真技术, 不仅可以节省人力、物力, 也为以后一些不规则的轨迹规划设计的合理性、可行性、可靠性打下了基础。

参考文献

[1]和克智.OpenGL编程技术详解[M].北京:化学工业出版社, 2010

VC类定义 篇5

如果你定义了一个类(假设是A)那么声明一个A的对象的方法就是:

A a;// a 就是一个A的对象

A *a;// a 就是一个A的对象的指针

A a[N];// a 就是一个A的对象的数组

A fuctionName();// 返回A的一个对象的函数

上面是说如何定义对象,下面说如何定义一个类

最基本的:(运用关键字class)

class A{

public://公有变量及函数(没声明是public,private,protected的都默认为public,这个与Java是不同的,后者默认为protected)(可以在任意位置被访问)

......private://私有变量及函数(只能在类里面被访问)

......protecte://受保护的变量及函数(可以在派生类中被访问)

};//注意分号

一般构造函数,析构函数,复制构造函数都是在public里被声明的(不用我说什么是构造函数(construct)和什么是析构函数(destruct)了吧)。

更往深一层会有派生类,友元类,抽象类的概念。

派生类就是有一个已经存在的类来derive一个新的类,一般新的类跟原来的是被包含与包含的关系(否则声明一个派生类就没什么意义)具体实现如下:

class A: public B{

......//跟一个普通的类没什么区别

}

声明一个友元类是这样的:

class A: {

friend B

......}(A就成了B的友元类,友元函数的声明也类似)

不过要注意到,友元函数、友元类的大量使用破坏了类里的数据及函数的稳定性,或是可靠性。使得private类型的都可能被篡改。

最后抽象类:

王一敏:邂逅VC 篇6

无论从哪个角度看,王一敏都着实是个美女:外表时尚靓丽,为人谦和热情,言谈真诚风趣。这让人一下子没有办法将她与VC的身份联系在一起。与VC们带给人的内敛印象相比,王一敏多了一份温暖和灿烂。

王一敏自己也表示,她确实是一不经意撞进了VC圈子。

尽管加入华登之前还不曾真正深入地了解创投行业,但不久之后她即被深深吸引。“这个职业真的很有魅力。”像很多VC一样,王一敏发出了这样的感叹。

曾经“鸡尾汤”

王一敏是个随性的人,好奇心又很强,这种性格使她在入行之前的那段经历异常的丰富。“真的像大杂烩一样,又没鸡尾酒那么纯,充其量也就是‘鸡尾汤’吧。”说这话的时候,她爽朗地笑了。

高中毕业之后,王一敏开始了美国留学之路,喜欢与人交流的她在大学选择了心理学。但念到第三年的时候,她开始觉得心理学过于玄妙,担心自己这辈子都要跟疯子或者病态的人打交道,甚至感到了一些沮丧。于是,王一敏决定“回归理性”,转念工科。从心理学到电信专业,王一敏的人生之路来了个大跨度转弯。

毕业后,王一敏曾做过网络工程师等好几份工作。1999年,王一敏加入爱立信,负责亚太区的移动数据业务。由于工作关系,王一敏有75%的时间都奔波于中国各地市之间。

从那时起,她亲身感受到了中国正在发生的巨大变化。“从科技、经济增长到人的心态、消费习惯,以及交通、房产、饮食等生活的各个方面,进步都太快了,所以我非常希望留在中国。”

2002年回到美国进入加州伯克利大学攻读MBA时,王一敏的这种“恋家”情绪达到了顶峰。第二学年时,王一敏一年中就回了10次中国,甚至连作业都是在飞机上做的。

“我特别想回来看看又发生了什么变化,这种好奇心一直在驱使我。”直到现在,王一敏在伯克利的同学聚会时还会抱怨她的任性。“他们都说跟我一组做作业太辛苦了,还要浪费许多电话费。”说起那段经历,她还止不住地乐。

偶遇“伯乐”

2004年底的一次机缘巧合,王一敏与VC行业不期而遇。

临近毕业时,有朋友将王一敏推荐给了华登国际,而当时她对华登还一无所知。起初这件事一直杳无音信,直到3个月后的一天,王一敏终于收到了与华登国际董事长陈立武的见面邀约。而这次初识至今都令王一敏记忆犹新。

当时令王一敏略感惊讶的是,陈立武一开始就直言不讳地说,“华登现在不招人,只是为了给我的好朋友面子才见你一面”。后来王一敏才知道,那位一向都只写E-Mail给陈立武的朋友为了她,一天给陈打了好几通电话,因而争取到了这次机会。

随性的王一敏也索性以一种轻松的心态与陈立武交谈起来。“可能是因为没有负担,大家都很放松,所以聊了一个多小时觉得很谈得来。”

后来的事情完全出乎王一敏的意料。午饭之后,陈立武当天下午就给王一敏安排了很多会,把她当天的计划给全盘打乱。“我们那天是早上十点见面,大概晚上五点我才忙完。”就这样,华登向她伸出了手。回想起来,王一敏认为这完全是种缘分。“当时我一心只想着回国,倒真的没有打算在美国找工作。但转念一想,其实我原本回国要做的也是跟创业和投资有关的事情。”

对于自己的“伯乐”陈立武,王一敏满口溢美之词。

决定加入华登之前,因为对华登和陈立武本人还不太了解,王一敏还曾把他们给“DD(Due Diligence,尽职调查)”了一把,“打电话给很多朋友询问,结果是非常一致的好口碑”。“我觉得陈立武除了是位很成功的人之外,最重要的是他很有诚信,处事也非常公平。”

2005年1月,王一敏正式加入华登。

重返中国

作为华登国际副总裁,最初一年半王一敏的精力大多放在美国的案子上,包括协助陈立武调查拟投资企业,管理投资组合公司,寻找潜在的投资目标等。同时,王一敏每个月都要飞回中国完成一部分工作。

2006年8月,“恋家”的王一敏终于重新搬回中国,更多地与华登中国团队一起合作寻找投资机会。这令她十分开心。“这么大的国家能够在25年中持续保持10%以上的GDP增长,我觉得这是史无前例的,虽然我个人很渺小,不足以去推动整个国家的发展,但我应该选择留在这里亲身体验。”

在王一敏看来,虽然在突破性的技术方面美国走在中国前面,但中国却往往能涌现出很多创新的机会。她对中国的创业者和企业家感触尤深。“我觉得中国的企业家非常了不起,因为他们都有非常强烈的想要成功的那种驱动力,即使只有一点钱和一点资源,他都会毫不犹豫地投入创业。”

让王一敏印象最深的是高德软件。作为国内最早从事地图软件开发应用的企业之一,高德软件于2006年10月获得了红杉资本中国基金、KPCB、华登、联想投资超过2000万美元的联合注资。而此前的高德软件曾经半年都发不出工资,但其创业团队的十几个兄弟仍然分文不要地在工作,“这真的让我特别感动,他们那时候居然根本就不知道还有创投这回事情,不知道自己可以融资,但还是凭借很强的信念去创业并坚持了下来”。

基于VC的以太网控制系统的设计 篇7

1 主要架构

1.1 以太网架构

以太网转串口的模块的主要作用就是完成执行机构网卡,而且还要能够实现执行机构与以太网之间的协议转换以及交流。串行TTL电平的主要作用就是让电动执行机构与以太网转串口模块进行通信,之后可以通过这个模块把信号以网络数据帧的形式传到以太网上(可以用HUB来代替以太网),然后再传给上位机,这样就可以形成一条可靠的信道来连接上位机和执行机构。所采用的以太网转串口模块是嵌入式的网络模块,这种模块的内部集成了TCP/IP协议栈,可以通过这些协议来实现嵌入式设备的功能。可以有效进行串口和以太网的数据输送,增加以太网的接口来使串口设备更加实用;还可以用于主控计算机与串口设备之间的远程通信,或者是多个串口设备之间的远程通信,起到了很好的桥梁作用。如图1所示。

1.2 电动执行机构与以太网转串口模块的通信

串行通信所采用的是TTL电平,会占用两个I/O口,也就是输入口(Rx D)以及输出口(Tx D),执行机构主控板需要提供+5V电源给以太网转串口模块,硬件连接如图2所示。

2 软件部分的实现

本系统是基于VC++6.0的Win Sock编程。套接字(Socket是当前比较常用的网络通信应用程序接口。Socket最开始是加利福利亚大Berkeley分校为Unix操作系统开发的网络通信接口,之后Socket被移植到Windows系统与DOS系统,这奠定了它在开发网络通信程序中的重要作用。

本系统所采用的模式是Client/Server。把以太网转串口模块设置成为服务器的模式,主控计算机上的控制软件部分被设置为客户端,每次启动都输由主控计算机来实现与执行机构的连接。客户端和服务器所采用的通信协议是面向连接的协议,也就是说,模块和控制计算机两者之间会建立一个虚拟的连接,来交换双向字节流;但是如果不能成功建立两者之间的连接,就不会有数据发送。而且,面向连接传输的报文都需要得到接收端的确认,如果接收端没有确认报文,这个报文就被认为是错误的报文。

2.1 通信过程

套接字有两种使用方式,分别为同步阻塞以及异步非阻塞两种方式,由于已经把以太网转串口模块设置成为了服务器的模式,因此,主控计算机段的程序是客户端的形式出现的。图3是客户端与服务器的通信过程。

在模块当中,可以在服务器程序当中调用listen函数让这个socket对进来的连接确认。如果服务器端收到了客户端连接的请求的话,一个socket就会确认每个所发送的请求,之后才开始调用accept函数,随后,客户就可以用connect函数来开始网络对话。客户端与服务器连接以后,就可以进行网络通信。

2.2 通信协议

所有的对话都要通过计算机这个主动通讯设备来发起,执行机构只能是被动的。在协议当中可以分为命令帧以及数据帧两种信息帧。数据帧包括I/O信息,命令帧包括控制、查询及设置等操作的命令。为了让信息传输准确无误,每条命令都要听过校验,而且还可以二次校验,校验的方式可以采用逐字节异或的方式;当然,执行机构所返回的信息也必须要通过校验才可以。控制计算机命令格式如下:

2.3 软件的功能

通过调试以及验证,基本可以达到的需求有:查询当前执行机构的运行情况,包括运行的位置以及参数的设置情况等;通过指定方向让执行机构自主运行;通过握手的指令来确认连接的成功与否,如果连接不正常,之后系统就会接到错误报告;输入IP就可以与指定的执行机构连接;对执行机构的参数远程设置等等。

3 结语

介绍了基于VC的执行机构以太网监控系统的方案,在以后的开发当中,可以使得这个系统的软件与市面上通用的工控组态软件兼容;也就是如果组态软件发出命令之后,本软件就可以间接控制执行机构,这样,系统就可以实现控制上的兼容。总之,以太网的传输速度在不断加快,实时性、确定性以及可靠性等方面都在完善化,在未来的控制网络当中会愈加重要。

摘要:介绍了以太网监控系统的架构,通过主控计算机以及工业以太网,可以把设计的各种网络化的电动执行机构按照要求来形成一个系统。通过自定义的通信协议,保证系统的可靠性以及实时性。

关键词:VC,以太网,控制系统,设计

参考文献

[1]蔡水成,郭东辉,李立峰,刘瑞堂.SDH/SONET技术的现状和研究进展[J].电讯技术,2000,(02).

[2]吴立勋,韩提文,赵增荣.隧道监控系统的网络结构设计与应用[J].山东理工大学学报(自然科学版),2005,(06).

[3]何静,谢晓方.基于快速以太网的舰载作战系统网络优化[J].计算机工程与应用,2001,(02).

[4]刘希戊,殷国富,胡晓兵,郭文胜.机械制造企业生产车间管理信息系统的分析与设计[J].四川大学学报(工程科学版),2001,(03).

[5]严登俊,袁洪,高维忠,吴峰,鞠平.利用以太网和ATM技术实现电网运行状态实时监测[J].电力系统自动化,2003,(10).

[6]高振清,齐元胜,王晓华.基于DNC的制造信息集成技术研究与系统开发[J].组合机床与自动化加工技术,2008,(06).

[7]刘剑飞,艾晓林,吕斌,李善君,陈勇,程玥晴,粟超,杜飞.重庆市农业科学院局域网建设规划[J].农业网络信息,2008,(05).

[8]何轩,夏应清,李祥,付晓军,占林松.基于以太网的嵌入式Web服务器的设计与实现[J].微电子学与计算机,2005,(12).

[9]Danny L.S.Chan,Samuel T.Chanson.Scalability support formultiparty multimedia communications[J]Multimedia Sys-tems,1998,6,(2).

VC控制 篇8

1 微程序控制器的基本结构

微程序控制的基本思想是仿照通常解题的方法,把操作控制信号编成所谓的“微指令”存放到一个只读存储器里,当机器运行时,一条一条读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作。基本构成包括控制存储器、微指令寄存器、微地址产生逻辑等组成。

2 微程序控制器虚拟实验设计思路

Tec-xp实验设备的微程序控制器实验支持两种工作方式:11010(即:单步、手动置指令、微程序控制器、联机、16位机时)和00010(即:连续运行程序、微程序控制器、联机、16位机),虚拟实验也按照这两种工作方式设计。在前一种工作方式下,借助模拟机箱上的指示灯可以查看某一条指令的微程序执行的过程;在后一种工作方式下,可以启动模拟监控程序,运行一段程序,查看多条指令的执行结果。

在单步方式(11010)下,设计了Tec-xp实验设备上的所有按键及电源指示灯、微程序灯、查看微指令执行顺序的指示灯等。这部分的核心问题是确定每次START按下,执行哪条微指令,需要重点设计START按键的响应函数。主要依靠节拍和控制变量实现,多数微指令都对应节拍,在特定的节拍下执行特定的功能。状态编码为0010和0000两个节拍完成读取指令的功能,公用于所有指令;A组指令将进入0011状态的节拍,用1步完成寄存器之间的数据运算或传送;B组指令将进入0110状态的节拍,再经过0100的节拍,用2步完成1次对主存储器或IO设备的读写操作;C组指令将进入0110状态的节拍,再经过0111,0101状态的节拍,用3步完成2次内存储器的读写操作;D组指令,将进入0110状态的节拍,再经过0100、0111、0101的节拍,用4步完成2次内存储器的操作。因此确定了节拍就确定了当前应执行的“一组”指令,在START按键的响应函数中要调用一个设置节拍的函数ProcessCLK()。在一组指令中如何选出一条执行的指令呢?指令是通过16位数据开关输入的,在其响应函数中,调用ReSetDataCtrl()函数,设置48条指令数组CurAR[48]对应的元素为1。在START按键的响应函数中调用函数SetVariable0(),设置控制变量的值。因此,通过三个函数准备好节拍和控制变量,在START按键的响应函数中检索节拍和变量的值执行唯一正确的微指令。

在连续方式(00010)下,要调用联机监控程序,就是对应Tec-xp设备的“汇编语言”,它与计算机的“汇编语言”不一致,要进行重新编写实现,在VC++中可直接调用。监控程序要处理Tec-xp设备发送的消息,比如:连续按RESET和START按键启动监控程序、工作方式改变、停止执行当前的监控程序等,通过进程间通讯实现。这里简单介绍一下,在VC++中,进程通讯是通过发送消息实现的。VC++中允许用户自定义消息,形式为:#define messagename USER+x,x取大于或等于5的值。发送方使用函数SendMessage(messagename,0,0)发送消息,接收方通过消息映射添加消息响应函数,在其中添加处理消息的代码。

此外,各种操作之间存在相互制约的问题。一是在两种工作方式下,按键执行的功能不同,对按键进行处理时,很重要的一点就是要判断工作方式,如对于START按键,在11010方式下,每按一下,执行一条微指令,而在00010方式下,若之前按了RESET按键,重启监控程序,否则不执行任何操作。二是操作执行的先决条件,如连续按下RESET和START按键,是否重启监控程序,要判断电源是否打开,工作方式是否为00010。因此设置了一些标识变量,标识电源、工作方式、START、RESET等。在程序中,通过判断这些变量,实现各按键间的相互约束。

3 微程序控制器虚拟实验设计程序

程序是交互式程序,通过各按键的响应函数实现。具体如下:

1)监控程序按键响应函数

若监控程序界面未打开,则打开;否则,不执行任何操作。

2)电源开关的响应函数

当电源打开时,电源标识PowerFlag=true,电源指示灯亮,调用函数ReSetBlackCtrl(),设置工作方式。若工作方式WorkType=4,调用函数ReSetDataCtrl(),确定输入指令,输出状态提示文字“电源已经接通,可以开始试验了,请设置相关的控制开关及数据开关”。当电源关闭时,标识PowerFlag=False,所有指示灯灭,此时需要判断工作方式,若WorkType=4,调用函数InitVariable(),恢复变量初始值;若WorkType=2,监控程序窗口打开,判断监控程序运行标识RUNNING,若为真,则向监控程序发送消息,停止其运行,并输出状态提示文字,“电源已断开,如果要重行试验,请拨通电源,否则,点击右上角的红?关闭该实验系统!”。

3)控制开关、数据开关成批处理函数

标识C_Bkbutt[5],C_Redbutt[24],D_Button[16]相应置0或置1,据标识设置图标。

对于五个黑色控制开关,若PowerFlag=True,调用“设置工作方式”函数ReSetBlackCtrl()。若WorkType=2,输出“工作方式为:连续运行程序、微程序控制器、联机、16位机”,如果监控程序窗口打开,检测监控程序运行标识RUNNING,若为真,则向监控程序发送WM_STOP消息,停止其运行;若WorkType=4,输出状态提示文字“工作方式为:单步、手动置指令、微程序控制器、联机、16位机”;WorkType为其他值时,输出“工作方式与微程序控制器试验不对应,请选择正确的工作方式"。

对于16位数据开关,若PowerFlag=ture,调用函数ReSetDataCtrl(),确定输入指令,设置其对应的微指令执行时的状态提示文字。

4)RESET按键响应函数

如果PowerFlag=true,判断工作方式,若WorkType=4,则将变量“清零”,标识RESET=0,输出状态提示文字“清零”操作已完成,请继续试验”;若WorkType=2,监控程序窗口打开,判断监控程序运行标识RUNNING,若为真,则向监控程序发送“复位”消息WM_CLEARR,输出状态提示文字“复位”操作已完成,请继续实验”,将RESETFLAG设为true。否则,不执行任何操作。

5)START按键响应函数

如果PowerFlag=true,判断工作方式,对于“11010”工作方式,解释执行指令的每条微指令对应一个节拍,根据当前节拍和指令判断应执行哪一条微指令。不同微指令的有效执行,取决于一组控制变量。先调用ProcessCLK(),获得当前节拍,再调用SetVariable(),根据节拍,设置控制变量,最后根据节拍和控制变量选择微指令执行。

对于“00010”工作方式,若监控程序窗口已打开,RESETFLAG=TRUE,RUNNING=TRUE,发送WM_STOP消息,停止当前运行的监控程序,发送WM_START消息,重启监控程序,若RUNNNING=FALSE,则不发送WM_STOP消息,输出状态提示文字“操作失败,先按下RESET,再按START,才能启动监控程序”。如果监控程序程序窗口未打开,则输出“操作失败,监控程序窗口未打开,请按左上方的“监控程序窗口”按键”。其他工作方式不予处理。

START按键响应函数流程图如图3所示。程序代码省略。

4 结束语

为了适应实验教学的需要,我们重点研究了计算机组成原理虚拟实验的实现方法,以满足教学、实验的需要。实践证明,计算机组成原理运算器虚拟实验的开发,不仅使学生不受时间、空间的限制,而且可以方便地帮助学生加深对微程序控制器原理的理解,提高了学习兴趣。虚拟实验室的研究及其进一步实现是非常必要的,这也是摆在计算机科学与技术教育工作者面前的一项重要的工作。

参考文献

[1]王爱英.计算机组成与结构[M].3版.北京:清华大学出版社,2000.

[2]王诚.Tec-xp技术说明和实验指导[M].北京:清华大学科教仪器厂,清华大学计算机系,2007.

[3]Kruglinski D J,Wingo S,Shepherd G.Visual C++6.0技术内幕[M].5版.北京:北京希望电子出版社,2002.

[4]明日科技.Visual C++程序开发范例宝典[M].北京:人民邮电出版社,2008

[5]王建新,张丽媛,盛羽,等.基于组件的计算机组成原理虚拟实验室的设计与实现[J].系统仿真学报,2008,20(9):2470-2474.

[6]Andreas S,Venkatraman A.Interactive Online Undergraduate Laboratories using J-DSP[J].IEEE Transactions on Education(S0018-9359),2005,48(4):735-749.

VC控制 篇9

机器人已经广泛应用于生产、生活中的各个领域,传统的移动机器人可分为滚动机器人与步行机器人。常见的步行机器人以两足式、四足式、六足式应用较多。其中,四足步行机器人机构简单且灵活,承载能力强、稳定性好,在抢险救灾、探险、娱乐及军事等许多方面有很好的应用前景,其研制工作一直受到国内外的重视。目前最具代表的四足步行机器人是美国Boston dynamics实验室研制的BigDog[1],它能以不同步态在恶劣的地形上攀爬,可以负载高达52 kg的质量,爬升斜坡可达35°。在四足机器人的研究中,控制技术是一个研究重点,目前很多机器人采用了工控机与PMAC(programmable multi-axis controller)相结合的方式[2]。本文介绍了一种基于上位机PC与下位机PMAC的控制系统,用Visual c++与PMAC语言编写了四足机器人控制软件,可对四足机器人的运动进行平稳控制。

1 四足机器人机构与运动学分析

1.1 四足机器人机构分析

为了使四足机器人实现行走、爬坡、转弯等功能,在机械结构上模仿自然界较为常见的大型哺乳动物,如骆驼,水牛等。这些动物在行走时的机构模型可简化为一个具有12个自由度(其中6个独立自由度)的并联机构,如图1所示。

12个自由度均摊在四条腿中,每条腿3个自由度,其中胯关节两个自由度,包括外摆自由度和弯曲自由度;膝关节包含一个弯曲自由度。用Solidworks绘制了四足机器人的样机模型示意图,如图2所示。机器人包括车身与四条腿,每条腿包括胯关节、大腿、膝关节、小腿和足,可模拟骆驼等动物的步态进行行走,足与小腿固连,在与机器人行走过程中支撑机器人并提供机器人前进的反力。

2.2 四足机器人运动学分析

四足机器人可以看做一个移动的并联平台机构,各腿处于支撑相与摆动相的交替状态。计算并联机构正运动学是非常困难的,实时性很差,而并联机构的逆运动学相比就简单得多。若对机器人的车身与足端轨迹全部加以规划,可以精确、快速地计算出每一时刻各关节转角。以一条腿为例,四足机器人的逆运动学模型如图3所示。其中肘式代表膝关节向后弯曲,膝式代表膝关节向前弯曲。

给定足端与车身的轨迹f(t),b(t).每条腿拥有自己单独的坐标系,基坐标原点选在运动周期开始时胯关节正下方足端与地面接触点,z轴向上,y轴与前进方向相同。当车身平动时,车身四个胯关节相对于基坐标原点位置相同,用胯关节位置代表相对应腿坐标系中的车身轨迹,各坐标系的b(t)相同。设第i条腿三个关节变量由上至下为q1i,q2i,q3i,腿的长度参数为a1,a2,a3,用f(t)i-b(t)可得第i条腿的位置向量(xi,yi,zi),进一步由几何关系可得他们之间关系为:

q1i=arctan(xi-zi)q3i=±arccos((zicosq1i+a1)2+yi2-a22-a322×a2×a3)

(正号对应肘式,负号对应膝式。)

q2i=arcsin(yi(a2+a3×cosq3i)2+(a3×sinq3i)2)-arctan(a3×sinq3ia2+a3×cosq3i)

2 控制软件的开发及调试

2.1 上位机软件开发

PC机应用广泛,运行稳定,软件丰富,可完成提供操作界面、运动规划、离线编程、在线指令发送等工作[3]。本课题选择PC作为控制系统上位机。PMAC由于具有实时性强、稳定性好、效率高等优点[4],可与底层执行机构进行数据通信,作为本控制系统下位机。控制系统结构图如图4所示。

利用Visual c++中的MFC库类开发了上位机应用程序,程序主要包括以下功能模块:1) 初始化模块。该模块负责控制系统用户界面的初始化,对PMAC卡进行选择,给出控制卡中控制参数的初始值,同时运行下位机程序。2) 用户交互模块。该模块通过MFC界面与用户进行信息交互,用户可选择机器人步态,车身、足端运动轨迹,插值点数量,运动速度,运动周期数,各腿的运动时序、膝肘运动模式等参数对机器人进行多种类型行走控制,并能实时从界面中读取下位机存储的运动参数值。3) 运动学计算模块。实时对机器人轨迹点进行运动学逆解,得出各关节电机转角转速,形成一系列关节运动的插值点。4) 轨迹检测模块,实时检测当前轨迹插值点的运动学逆解是否存在并在规定范围内,如不,通过界面向用户报错并终止程序。5) 伺服模块:通过PComm32(上位机与PMAC的通讯驱动程序)函数与下位机进行指令通信,发送运动控制变量,完成对机器人的控制。图5为上位机软件流程图。

2.2 下位机软件开发

利用PMAC自带软件PEWIN32进行下位机编程及控制。首先定义程序段,再利用轴定义语句对各电动机轴进行分配,并建立坐标系,选择适合的运动指令。由于PMAC可以支持任意坐标系在任意时刻执行任意一个运动程序,本课题可以利用此特点对每个腿单独建立运动坐标系,并单独执行某段运动程序,这样可大大提高机器人的可控性和适应性。上位机以PMACP变量的形式向PMAC传输运动参数。为了将上位机传送的插值点拟合成平滑的运动轨迹,下位机使用了SPLINE2函数的运动模式,该模式利用不均匀非有理3次B样条对运动插值点进行拟合,且各插值端点的速度、加速度连续,可以利用参数TM对每段运动轨迹总时长进行设定,即可控制每段运动的平均速度[5]。机器人第一条腿运动程序如下:

之后使坐标系1运行程序1,这样通过上位机实时传送的运动控制参数就可以使腿1完成预先的运动轨迹。同理将第2,3,4腿坐标系设定为2,3,4,同时执行程序2,3,4,可完成对整个机器人的协调控制。

2.3 控制软件调试

在软件编译完成后运行控制程序,在上位机用户接口界面中完成运动轨迹等运动参数的输入,观察机器人关节运动,并用PMAC PLOT32记录下一条腿中两个电动机的运动数据,如图6所示。

图中①,②两条线是两电动机一个摆腿周期内的位置数据,③,④两条线为对应速度数据。运动由图6可知,摆动相各关节可按预定轨迹运动,支撑相可以缓慢,稳定达到指定位置,运动速度曲线较为平滑,波动较小。

3 结论

本文设计了一种四足机器人控制系统软件,利用上位机、下位机组成的控制系统获得了较好的人机交互能力及控制效果。利用Visual c++与PMAC语言编写了四足机器人控制软件,可在Windows环境下平稳运行,操作简单,实时性强,可以通过用户交互界面完成不同运动参数下的运动学实时计算,轨迹检测,伺服控制等功能。实验证明该软件可平稳、精确对四足机器人进行预定轨迹的运动控制。此控制软件未来发展方向为:增加运动检测与自主运动选择模块,处理机器人运动中传感器的信息并根据信息调整运动、控制策略,达到更加精确的闭环控制,并提高机器人的智能性。

参考文献

[1]Raibert,M.,et al.,Bigdog,the rough-terrain quaduped ro-bot.Proceedings of the 17th International Federation of Automa-tion Control.(April 2008).

[2]周青松,张铁.基于PMAC的机器人控制器调试系统的研制[J].机器人技术,2009(3).

[3]简毅,李红梅,陈桂芳.基于PC+PMAC的仿人机械臂控制系统的应用研究[J].轻工机械,2010(12).

[4]窦伟,赵新华,李振华.基于vc++与PMAC的机器人控制软件的开发[J].天津理工大学学报,2010(6).

VC视点 篇10

章苏阳(IDGVC创投合伙人):

风投第一是投人,第二是投人,第三还是投人

中国的连锁企业零售总额大概是1 1000亿左右,这是个很高的数据。只要有品牌这个基点,我认为所有的东西都可以做连锁体系。而在连锁企业11000亿左右的销售额中绝大多数应该还是零售的贡献。面对如此大的零售总额,风险投资当然不会错过。

风险投资到底投什么东西?绝对是投入,而不仅仅是一个点子。风险投资人不算是世界上最聪明的人,但是他肯定不是世界上最笨的一帮人,他不会为一个点子,傻乎乎地就砸进去。可以说风投第一是投人,第二是投人,第三还是投入。若干人组成的是一个机构,所以公司的正常运作就像大齿轮和小齿轮啮合得很好,只有这样的机构才能做成大事业。

黄佩华(GGV纪源资本合伙人):

在考虑投资连锁行业时,我们更注重它是否具有可复制性

GGV是一家跨国的投资资金,我们很看好中国的连锁行业。在去考察一家连锁公司时,我们更注重它是否具备可复制性,所以不能光看它的产品而是看它的标准。另外,我们也会关注它怎么能够控制成本和对员工的培训。当然,团队也是最重要的,因为它能反映连锁企业的执行能力有多强。

可复制性包括连锁企业的跨区域发展,这一点是让我们最担心的。比如,有的企业在某个二级、三级城市很成功,可是到了另外一个城市却做不起来了,这很常见。因为他们没有在自己城市发展的地方关系,也不了解客户,当然也包括很多其他因素。

杨瑞荣(兰馨亚洲投资总监):

投资增长型连锁企业,寻找“品牌杀手”的模式

兰馨亚洲投资基金的定位是希望投资一些增长型的,我们首先希望寻找的是“品牌杀手”的模式,在某一个特定行业有特别强的竞争力。从具体模式上讲,连锁的态势必须有两大优势——品牌和渠道。你的品牌是不是有一个很好的渠道让消费者认知。我们会投资有能力盈利或者达到这样的阶段,我们的投资规模基本上在1000万以上。

做连锁其实就是一个运营公司,钱都是一分一分地挣出来的,所有在零售业有作为的都知道利润很薄。从我们的角度看连锁企业主要是两个方面:一是看现在的运营状况,持续发展,以及单店的盈利利润或每平米的盈利效果。这反映了你在过去有没有把这个店经营好。二是看持续能力,零售的选址是非常重要的,当前阶段很多做零售的都说我赚的很多钱都被地产商吃掉了。还要看地点是不是好,你有没有能力持续找到好的地方,对于将来的发展能力是非常大考验。

唐越(蓝山中国资本创始合伙人)

看连锁,重要的是看它所在的行业是否还存在机会

中国有一个非常庞大的市场,而连锁是一个能够获得中国庞大市场潜力的一个非常重要的方式。比如,我们今天看到的KFC,它在中国有了超越2000家餐馆,已经成为中国最大的餐饮企业,每年还以开300到400家新店的速度进行增长。像沃尔玛在中国有近百家门店,而它在中国的扩张仅仅是一个开始。我们看到连锁企业的发展空间非常广阔。

我们看连锁,重要的看它所在的行业是否还存在机会,在国外将这个称为一个行业专门的领导者有没有形成的地方。比如说家电连锁的大卖场,可能绝大多数的投资人对此不会感兴趣,因为大家认为这个游戏已经结束了。这个行业已经有了国美、苏宁这样的公司,它们在这个行业已经建立了领导的地位。不过,在中国绝大多数的行业仍然是一个高度的分散化,行业的参与者规模非常小,行业全国的领导地位没有形成的时候,对于创业者和投资者都呈现着庞大的机会。

甘剑平(启明维创投资董事总经理):

我们更喜欢那些利用IT技术改善企业内部管理的连锁企业

启明创投愿意做相对比较早期的连锁消费类企业,因为这个市场非常巨大,中国有13亿的人口,如果卖一块钱就是13亿。

在选择连锁企业时,我们比较注重公司的内部管理。零售企业其实整体利润率是比较低的,很多东西必须通过精确的管理,用好的市场营销来提高它们的利润率,包括做到一个大的规模。所以我们非常希望看到利用一些现代的管理手段包括IT技术提高这类企业的盈利能力,包括未来品牌的创立。比如说沃尔玛,有很多人说沃尔玛是一个IT公司,只不过它有很多店面,因为它所有的进销存都有完整的电脑系统控制,它们比较注重公司的内部管理。其实我们非常喜欢用前IT人士然后转过头来做传统企业,利用IT技术改善传统企业的一些行规或者一些不同的做法提高效率。

谢忠高(永威投资北京代表处总经理):

做投资很辛苦,尤其投连锁,可能成为最富有的,也可能被饿死

全世界前十个最有钱的人中,有3个是沃尔玛家族的人。做连锁零售可以作为全世界最优先的人,也可以有很多的资金最后死掉。

我们做风险投资很辛苦的,融资的过程大概花一年的时间,比方说投资进来之后说一定三年五年,但是在第二年或者第三年的时候,这个公司却死了,原本上市的公司还没上市,所以说,在第二、三年的时间心理压力是比较大的。三年以后还没死,那才有希望上市。像永威投资公司,我们大概一年做两个案子,我们花非常多的时间,尽心尽力地帮我们的企业,比如公司里面或者要雇人等,每一件事情都花非常多的时间。

吴克忠(PreIPO优势资本总裁/合伙人):

在中国,连锁还是一片蓝海,有资本支持一定发展更好

连锁企业在中国,我觉得前途非常大。目前中国大多数产业都是没有充分竞争的,即使在像电器行业价格战的时候,也只是一个同质化的竞争,还没有到差异化竞争的程度。对连锁企业,只要商业模式稳定,门槛建立,市场扩张有基础,我觉得只要有资金以后就非常容易得到发展。

在中国还没有充分的竞争,甚至不是说已经开始,而是还没开始,并且国家的一些政策还没开放,甚至商业模式还没有形成,因为没有开始竞争,很多企业还都是圈地状态。我认为连锁还是一片蓝海。只要资本支持,有基础的企业应该能够比较好比较快地发展。

黄国滨(中国国际金融投行部董事总经理):

做全产业链服务,我们的核心目的是帮助企业上市

最近我们拿到了在美国上市的牌照。除此之外,我们还拿到了证监会唯一的两家在中国做直接投资的资格,我们能够做全产业链的服务,我们的核心目的是帮助企业最终上市。

中金公司是从三个方面看连锁的:第一是公司的盈利模式,我们最关注企业盈利模式是否具有可持续性。因为在中国竞争会非常激烈,任何一个行业,只要大家认为有利可图都会蜂拥而上,所以要看你怎样提高进入壁垒,确保长期稳健持续盈利。第二是管理层、团队、培训体系。培训包括人才培训、招聘,以及吸引人才的激励机制。第三是上市的架构,治理结构。当然有的公司本身的治理架构非常好,我们直接帮助公司做境内外的上市。有时候我们会推荐引进一些风投或者PE,募集资金不是我们第一位的目的,引进风投是为了能给公司带来资金以外的额外价值。

周政宁(集富亚洲投资董事兼北京首席代表):

“方案简单”、“产品符合大众”“团队执行力”,一个都不能少

说老实话,我们对行业早期真的是看不准,相信也没有人能够看得准。所以我要回到基本理念,我凭什么要投资?第一,你的方案策划要简单清晰,视频文件也要简单,15分钟过去我要完全明白这件事情。第二,基本的东西。我投资的东西,服务的产品最好是可以给广大群众享用的,符合大众的口味。第三就是你的团队是否有执行力,有些东西很难执行,收费很难收费,送货很难送货,就没有办法执行。

2007年美国VC100 篇11

创业者无疑是2007年最大的赢家,连续4个季度都从投资人手中获得了超过70亿美元(每季度)的风险投资,这是2001年以来从未有过的盛景。根据普华永道和美国风险投资协会向《Entrepreneur》杂志独家提供的分析报告:2007年,全美的风险投资家在3,813比投资交易中共投资294亿美元,创造了自2001年以来的市场最高点。投资总额比2006年增加了10.8%,投资交易数量则增加了5%。

种子期和早期的企业在2007年也获得了更多的投资,比2007年增长了21%,融资总额达到了63亿美元,平均每家公司获得了450万美元的投资。同时第一次融资的企业数量也达到了6年来的新高,这是由于风险投资家增加了对很多领域的公司的首次投资,去年共投资1,267家公司,总额为72亿美元。

2007年的投资的增长主要归因于清洁技术和生命科学领域投资的上升,互联网垂直领域的投资也出现了强劲的增长。在过去的几年里,活跃的并购市场和风险投资支持的企业IPO市场让投资者备受鼓舞,因此,2007年风险投资家乐意和新老创业企业分享胜利,这也是投资增长另外一个原因。不过,风险投资家们的口袋里还有很多钱,在2008年,你会发现,有着绝佳创意和坚实商业计划的创业者依然能获得他们的青睐。

VC++中动态生成菜单 篇12

在实际应用中, 经常需要根据操作来增减菜单和菜单项。在VC++编程环境下, 动态生成菜单的方法有多种。例如:可以利用资源编辑器创建菜单资源, 然后在程序运行中动态加入菜单中, 这种动态生成菜单的方法比较常见, 运用比较多。用这种方法动态增加菜单时, 首先需要在Resource.h中添加菜单ID;由于是动态生成的菜单选项, 所以要实现它的功能就不能在Class Wizard中映射函数了, 需要在头文件中手动添加消息函数原型, 在代码文件中手动添加消息映射和添加消息响应函数。动态生成菜单的另一种方法, 不能事先对每个菜单ID进行定义, 比如从数据库中读出的每条记录内容动态添加为菜单项, 菜单项的数量不是固定的, 可以在动态添加菜单项时使菜单项的ID顺序递增;对菜单项的消息响应不能事先写出响应代码, 而需要根据菜单ID动态响应函数。

2 相关知识

2.1 常用菜单操作

文中涉及到的VC++中常见的菜单主要操作如下:

2.2 菜单消息处理

Windows消息分为3类:标准Windows消息、命令消息、控件通知消息。标准消息, 指除WM_COMMAND之外, 所有以WM_前缀开始的消息, 包括键盘消息和窗口消息等;命令消息, 指来自菜单、快捷键、工具栏按钮等用户界面对象发出的WM_COMMAND消息。其中, 在MFC中, 通过菜单项的标识 (ID) 来区分不同的命令消息;在SDK中, 通过消息的wParam参数识别。控件通知消息, 是对控件操作而引起的消息, 是控件和子窗口向其父窗口发出的WM_COMMAND通知消息。

菜单命令则属于命令消息, 一个菜单命令可以映射到框架类、视图类或文档类的某一个成员函数, 但不能同时映射到多个成员函数上。即使将一个菜单命令同时映射到多个不同的成员函数上, 其中只有一个成员的映射是有效的。在MFC文档/视图结构中映射有效的优先级高低顺序为视图类、文档类、框架类。菜单消息一旦在其中一个类中响应则不再在其他类中查找响应函数。

具体来说, 菜单命令消息路由过程是这样的:当点击一个菜单项的时候, 最先接受到菜单项消息的是CMainFrame框架类, CMainFrame框架类将会把菜单项消息交给它的子窗口View类, 由View类首先进行处理;如果View类检测到没对该菜单项消息做响应, 则View类把菜单项消息交由文档类Doc类进行处理;如果Doc类检测到Doc类中也没对该菜单项消息做响应, 则Doc类又把该菜单项消息交还给View类, 由View类再交还给CMainFrame类处理。如果CMainFrame类查看到CMainFrame类中也没对该消息做响应, 则最终交给App类进行处理。而且一个消息一旦在某个类中被响应过, 则不再接着传递。

3 编程实例

3.1 新建工程

(1) 新建工程

VC++中新建工程exmenu:第一步选择“单文档”, 接下来几步不用修改使用默认设置, 到最后一步将Base class下拉选“CFormView”, 即建立基于FormView的MFC应用程序。本项目中3.3以动态创建控件为例, 而视图中FormView可以放置控件, 因此选FormView。

(2) 创建菜单资源

在Resource中Menu下的菜单中, 添加菜单“动态菜单示例”, 下设两个菜单项, 分别是“添加例一菜单”“添加例二菜单”如图1所示。ID分别为ID_FIRSTMENU和ID_SECMENU。点击这两个菜单项, 通过两种方式动态添加两个菜单。仅添加了菜单, 并没有实现菜单的功能, 即没有对应的命令处理函数与菜单项对应, 因此, 添加的菜单项是灰色的, 即为当前不可用状态。添加新菜单项后, 还应该为新的菜单项指定一个消息响应函数。

通过MFC ClassWizard在View下为两菜单项添加消息响应函数, ID_FIRSTMENU的响应函数为void CExmenuView::OnFirstmenu () , ID_SECMENU的响应函数为void CExmenuView::OnSecmenu () 。

3.2 动态添加菜单

本例适用于菜单项名称、数量事先固定, 仅在需要时将事先定义好的菜单动态添加到主菜单中, 不需要时删除即可。响应函数需要通过手动添加, 更改菜单项时需要重新修改代码。

本例功能:通过点击上述exmenu工程中的菜单“动态菜单示例”下的“添加例一菜单”, 添加新的动态菜单“动态菜单一”, 点击其下的菜单项“First1”即进行菜单响应, 弹出提示框, 菜单项“First2”未定义消息响应则不可用, 如图2所示。

主要编程步骤:建立菜单资源, 手动加入菜单ID、消息映射、消息响应函数。

实现步骤:

(1) 在以上exmenu工程中的Resource.h中添加要生成的菜单的ID, 如:

(2) 在MainFrm.h中手动添加命令响应函数原型。

(3) 手动添加消息映射, 在MainFrm.cpp用ON_COMMAND宏关联消息响应函数。

(4) 新增菜单, 添加的菜单项往往是灰色的, 不可用, 只有为此菜单项定义了相应的响应函数才会可用。为ID_FIRST1菜单项定义如下消息响应函数, 则菜单项为可用。没有为ID_FIRST2定义消息响应函数, 则对应的菜单项为灰色。在MainFrm.cpp中手动编写消息响应函数如下:

(5) 点击“动态菜单示例”下的“添加例一菜单”时, 在菜单末尾添加“动态菜单一”。

通过MFC ClassWizard在CExmenuView下为菜单项ID_FIRSTMENU添加消息响应函数如下:

3.3 将数据库中读出的记录动态添加为菜单项

本例适用于菜单项数量和菜单项显示名称事先不固定的场合, 只需将菜单项写入数据库, 对数据库内容进行更新维护即可。在需要时读取数据库中记录, 动态添加为菜单项。

本例功能:通过点击上述exmenu工程中的菜单“动态菜单示例”下的“添加例二菜单”, 即在菜单末尾添加新的动态菜单“动态菜单二”, 其中的菜单项由数据库中读出记录内容添加而形成, 点击各菜单项即进行菜单响应, 如图3。

点击新添加的菜单项, 根据菜单项的名称和当前数据库中的记录内容, 动态建立控件。如:菜单项名为“文本框”, 数据库中当前记录中类型字段contype为“文本”, 当点击该菜单项时在程序运行界面中动态建立一文本框。如为“下拉框”, 数据库中当前记录中类型字段contype为“选择”, 点击该菜单项时在程序运行界面中动态建立一下拉框。

编程步骤:建立数据库, 其中的记录即为动态菜单二的菜单项;动态添加菜单项时使菜单项的ID顺序递增;菜单项数据量不固定, 对每个菜单项的消息响应也不能事先写出响应代码, 需要动态响应函数, 因此根据菜单ID并结合数据库记录内容在菜单项响应函数中进行功能分类并响应。

实现步骤:

(1) 建立Access数据库menu, 表名exmenu, 表中设两个字段分别是myname、contype, 字段类型均为“文本”。表中添加两条记录:文本框、文本;下拉框选择如图4所示。以下根据contype的值动态建立控件, 并将myname值作为控件中显示内容。

(2) 在exmenu工程中连接数据库。

在exmenu.cpp文件的InitInstance () 中添加如下连接代码:

(3) 在CExmenuView中设置全局变量flag作为判断是否添加了“示例菜单二”的标志, 并在CExmenuView的构造函数中设置初值为false, 代码如下:

(4) 点击菜单项“添加例二菜单”时, 从数据库中读取记录, 添加为动态菜单项, 菜单添加成功后将flag置为true, 便于在菜单响应时进行判断。

通过MFC ClassWizard在CExmenuView下为菜单项ID_SECMENU添加消息响应函数如下:

(5) 添加菜单项消息响应函数。

MFC确定一个Command ID是否有Handler与之对应是通过调用OnCmdMsg (UINT nID, int nCode, void*pExtra, AFX_CMDHANDLERINFO*pHandlerInfo) , 然后根据返回值来确定的。返回值为true, 表示有对应的处理函数, 返回值为false, 表示没有。其中, 参数nID就是发送过来的消息ID号, 对于菜单, 就是菜单的ID;参数nCode为0表示是命令消息, 如单击菜单项发出的消息, 为-1就表示是UPDATE_COMMAND_UI消息;参数pHandlerInfo不为NULL时, 表示是在检测;当其为NULL时, 表示是在路由这个命令消息, 希望能得到处理。

重载了CExmenuView的OnCmdMsg () 函数, 因为要在CExmenuView中处理这些动态添加的菜单项。通过class wizard, 为CExmenuView添加消息响应函数OnmdMsg, 添加代码如下:

其中, 函数Myfunc (strMenuName) 是用户自定义的菜单项单击的响应代码, 参数为当前点击的菜单项名称, 根据菜单项动态建立控件, 主要代码如下:

}else if (ctype=="文本") {CDC*pDC=GetDC () ;number=new CEdit;number->Create (WS_VISIBLE|WS_CHILD|WS_BORDER, CRect ( (260) , (40) , (330) , (60) ) , this, j+1) ;number->SetWindowText (strMenuName) ;}}

4 结语

上一篇:顾客知识的获取下一篇:时代转变