VFP学习笔记

VFP学习笔记
VFP学习笔记

【076】一直打开某表的别名为vcAlias,如何知道所对应的文件名及路径?

代码如下:

Local lcFile

lcFile=Dbf(vcAlias>

DBF( > 函数----返回指定工作区中打开的表名,或根据表别名返回表名。

语法: DBF([cTableAlias | nWorkArea]>

参数

cTableAlias

指定表的别名。

nWorkArea

指定工作区编号。如果省略 cTableAlias 和 nWorkArea,DBF( > 返回当前工作

区中打开的表名;如果指定的工作区中没有打开的表,DBF( >返回一个空字符串;如果表没有 cTableAlias 别名,则 Visual FoxPro 产生错误。有关创建表别名

的详细内容,请参见. b5E2RGbCAP

返回值: 字符型

说明

当 SET FULLPATH 设置为 ON 时,DBF( > 返回表的路径和表名;当 SET FULLPATH 设置为 OFF 时,DBF( > 返回表所在的驱动器和表名。p1EanqFDPw

示例

下面的示例从工作区和别名中返回表名,当所有的表关闭后,返回空串。

CLOSE DATABASES

OPEN DATABASE (HOME(2> + 'Data\testdata'>

USE customer IN 2 ALIAS mycust

CLEAR

? DBF(2> && Displays customer.dbf with its path

? DBF('mycust'> && Displays customer.dbf with its pathDXDiTa9E3d

CLOSE DATABASES

? DBF( > && Displays the empty string

【077】把当前运行程序所在的路径设置为默认路径的代码片段:

Local lcOldPath,lcSys16,lcPath

lcOldPath=Curdir(> &&----保存当前路径,以便恢复。

lcSys16=Sys(16>

lcPath=JustPath(lcSys16>

lcPath=Addbs(lcPath>

Set Default To (lcPath>

*--其他代码

Set Default To (lcOldPath> &&----恢复原来的路径

Return

【078】一种数字排列方式的公式化

问题如下表所示:

12345…

11471013…

22581114…

33691215…

其第i(i=1,2,3>行,第j(j=1,2,3,…>列的元素a(I,j>=3(j-1>+I,问:数字n是第几行,第几列元素?RTCrpUDGiT

这里的n=1,2,3,4,…

结果:

一般地:

123…

11P+12p+1…

22P+22p+2…

33P+32p+3…

………

p P2p3p

其第i(i=1,2,3,…,p>行,第j(j=1,2,3,…>列的元素a(I,j>=p(j-1>+I,则数字n(n=1,2,3,…>的位置为:5PCzVD7HxA

【079】关于身份证的几个函数

身份证出错信息分类:

·身份证号码不满15位。

·性别与身份证号不符。

·出生月份出错(不在1~12之间>。

·出生日子出错(不在1~31之间>。

·18位校验位出错。

·18位身份证出生年出错。

检查原则:

·不满15位,只检查位数。15位检查年、月、日的越界关系,性别对应关系。

男: 身份证第15位是”13579”,女:身份证第15位是”02468”

·18位身份证除了检查15位的检查原则外,增加检查最后一位检验码的关系校验。

·身份证第18位校验码的算法[GB11643-1999]

15位身份证的编码是把出生年扩展为4位,就是增加”19”(1900年以前出生的不适用>

计算公式:

其中: i----表示号码从右到左(包括校验码在内>的位置序号。

ai----第i位置上的号码字符值。

Wi----第i位置上的加权因子。

Wi=2(i-1>(mod 11>

示例:

I181716151413121110987654321 Ai34052419800101001A1 Wi79105842163791058421 Ai*Wi21360251616294800905002A1∑Ai*Wi1892 A1=∑Ai*Wi(mod 11>=189(mod 11>=2

校验码字符串为: 1 0 X 9 8 7 6 5 4 3 2

Wi串为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

校验码串:10X98765432

(1>身份证升级函数:

Function GetNewCardId(vcSfzh>

Local I,lnAW,lcNewId

lnAW=0

lcNewId=””

vcSzfh=StrTran(vcSfzh,’‘,’’>&&--删除空格

If Len(vcSfzh>==15

vcSfzh=Left(vcSfzh,6>+[19]+Right(vcSfzh,9>

EndIf

If Len(vcSfzh>==17

lcNewId=vcSfzh

For I=1 To 17

lnAW=lnAW+Val(Substr(vcSfzh,18-I,1>>*Mod(2^I,11>

EndFor

lcNewId=lcNewId+Iif(Mod(1-lnAW,11>==10,’X’,Str(Mod(1-

lnAW,11>,1>>jLBHrnAILg

EndIf

Return lcNewId

EndFunc

(2>检测18位身份证是否正确

Function CheckSfzh18(vcSfzh>

Local s1,s2,newId,nAw,I

S1=’ 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2’

S2=’10X98765432’

vcSfzh=Alltrim(vcSfzh>

vcSfzh=Upper(vcSfzh>

If Len(vcSfzh>==15

vcSfzh=Stuff(vcSfzh,7,0,”19”>

EndIf

newId=Left(vcSfzh,17>

nAw=0

For I=1 To 17

nAw=nAw+Val(Substr(s1,I*2-1,2>>*Val(Substr(newId,I,1>>xHAQX74J0X EndFor

newId=newId+Substr(s2,Mod(nAw,11>+1,1>

If Len(vcSfzh>==18

If Right(vcSfzh,1><>Right(newId,1>

MessageBox(vcSfzh+”为错误身份证号”,48,”警告!”>

EndIf

EndIf

EndFunc

注释:本程序中利用了函数Stuff(>,语法如下

Stuff(cExpr,nStartRep,nChars,cRep>

参数:

nStartRep 替换/插入的开始位置

nChars 替换/插入的字符数,若为0则为插入

cRep 替换的字符,若为空,则删除指定的字符数。

(3>测试身份证年月日的合法性: CheckYMDX(>

Function CheckYMDX(vcXb,vcSfzh>

Local lcErrCode,Sfxb,SfSex,Sfy,Sfr,s1,s2,newId

lcErrCode=””

Sfxb=Iif(vcXb==”1”,”13579”,”02468”>

vcSfzh=Alltrim(vcSfzh>

If Len(vcSfzh>==15

SfSex=Substr(vcSfzh,15,1>

If !Sfsex $ Sfxb &&--测试性别

lcErrCode=Iif(Empty(lcErrCode>,”2”,Alltrim(lcErrCode>+”+2”>LD AYtRyKfE

EndIf

Sfy=Substr(vcSfzh,9,2> &&--取月份

Sfr=Substr(vcSfzh,11,2> &&--取日

If !(Val(Sfy><=12>

lcErrCode=Iif(Empty(lcErrCode>,”3”,Alltrim(lcErrCode>+”+3”>Zz z6ZB2Ltk

EndIf

If !(Val(Sfr><=31>

lcErrCode=Iif(Empty(lcErrCode>,”4”,Alltrim(lcErrCode>+”+4”>dv zfvkwMI1

EndIf

Else

SfSex=Substr(vcSfzh,17,1>

If !SfSex $ Sfxb &&--测试性别

lcErrCode=Iif(Empty(lcErrCode>,”2”,Alltrim(lcErrCode>+”+2”>rq yn14ZNXI

EndIf

Sfy=Substr(vcSfzh,11,2> &&--月

Sfr=Substr(vcSfzh,13,2> &&--日

If !(Val(Sfy><=12>

lcErrCode=Iif(Empty(lcErrCode>,”3”,Alltrim(lcErrCode>+”+3”>Em xvxOtOco

EndIf

If !(Val(Sfr><=31>

lcErrCode=Iif(Empty(lcErrCode>,”4”,Alltrim(lcErrCode>+”+4”>Si xE2yXPq5

EndIf

*----以上测试第18为校验码

S1=”7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2”

S2=”10X98765432”

vcSfzh=Alltrim(vcSfzh>

vcSfzh=Upper(vcSfzh>

If Len(vcSfzh>==15

vcSfzh=Stuff(vcSfzh,7,0,”19”>

EndIf

newId=Left(vcSfzh,17>

nAw=0

For I=1 To 17

nAw=nAw+Val(Substr(s1,I*2-1,2>*Val(Substr(newId,I,1>>6ewMyirQFL

EndFor

newId=newId+Substr(s2,Mod(nAw,11>+1,1>

If Len(vcSfzh>==18

If Right(vcSfzh,1><>Right(newId,1> &&--校验码不正确。

&&--返回错误及正确的校验码。

lcErrCode=Iif(Empty(lcErrCode>,”5 (应

为”+Right(newId,1>+”>”,。kavU42VRUs

Alltrim(lcErrCode>+”+5 (应为”+Right(newId,1>+”>”> EndIf

EndIf

If Substr(vcSfzh,7,2><>”19”&&--测试年

lcErrCode=Iif(Empty(lcErrCode>,”6”,Alltrim(lcErrCode>+”+6”>y6 v3ALoS89

EndIf

EndIf

Return lcErrCode

EndFunc

(4>从身份证号提取性别信息

算法: 15位身份证的未数,18位身份证的第17位,是性别的标志。具体是: 13579表示男,02468表示女。M2ub6vSTnP

Function GetXb(vcSfzh>

vcSfzh=Alltrim(vcSfzh>

Local lnLen,lcTag

lnLen=Len(vcSfzh>

Do Case

Case lnLen==15

lcTag=Right(vcSfzh,1>

Case lnLen==18

lcTag=Substr(vcSfzh,17,1>

otherwise

lcTag=””

EndCase

Return Iif(lcTag $ “13579”,”男”,。

Iif(lcTag $ “02468”,”女”,””>

EndFunc

【080】关于菜单定义的命令

(1>创建一个菜单栏

语法: Define Menu menubarname [Bar [At Line nRow]] [In Screen|Window winName]0YujCfmUCw

[Font cfontname[,nFontSize[,nFontCharset]]] [Style cFontStyle] eUts8ZQVRd

[Key keylabel][Mark cMarkCharacter] [Message cMsgText] [NoMargin]sQsAEJkW5T

[Color Scheme nSchemeNumber|ColorPairList]

其中:menubarname 菜单栏名称

winName 顶层表单窗口名

nFontSize 默认10磅

cFontStyle B 粗体 N 常规–删除线 I 斜体 Q 不透明 T 透明U 下划线keylabel 激活菜单的组合键

cMarkCharacter 菜单标记左边的标记字符。默认为”V”

NoMargin删除每个菜单名左右两边的空格。

(2>创建菜单标题

语法: Define Pad menuTitle Of menuBarName Prompt cmenuTitleText [At nRow,nCol]GMsIasNXkA

[Before menuName|After menuName]

[Negotiate cContainerPosition[,cObjectPosition]]

[Font cFontName[,nFontSize[,nFontCharSet]]]

[Style cFontStyle] [Key keylabel[,cKeyText]]

[Mark cMarkCharacter] [Skip [For lExpression]]

[Message cMessageText]

[Color Scheme nSchemeNumber|ColorPairList]

(3>在一个用Define Popup创建的菜单上创建一个菜单项

语法: Define Bar nmenuItemNumber|SystemItemName Of menuNameTIrRGchYzg Prompt cMenuItemText [Picture cFileName] [Pictres cMenubarName]7EqZcWLZNX

[Before nmenuItemNumber|After nmenuItemNumber]

[Font cFontName[,nFontSize[,nFontCharset]]]

[Style cFontStyle]

[Key keylabel[,ckeytext]]

[Mark cmarkcharacter]

[Message cmessageText]

[Skip [For lExpression]]

[Color Scheme nSchemeNumber|ColorPairList]

[MRU]

[INVERT]

(4>创建菜单

语法: Define Popup menuName [From nRow1,nCol1] [To nRow2,nCol2] [In Screen|Window winName]lzq7IGf02E

[Font cFontName[,nFontSize[,nFontCharset]]]

[Style cFontStyle]

[Footer cFooterText] [Key keylabel][Margin][Mark

cmarkCharacter][Message cmessageText]zvpgeqJ1hk

[Mover][MultiSelect][Prompt Field FldName|Files [Like fileSkeleton]|Structure]NrpoJac3v1

[Relative][Scroll][ShortCut][Title

cMenuTitleText][Rtjustify]1nowfTG4KI

[Color Scheme nSchemeNumber|ColorPairList]

(5>

语法:

On Bar nMenuItemNumber Of menuName [Activate Popup menuName|Activate Menu menuBarName]fjnFLDa5Zo

On Pad menuTitleName Of menuName [Activate Popup menuName|Activate

Menu menuBarName]tfnNhnE6e5

On Selection Bar nmenuItemNumber Of menuName [Command]HbmVN777sL

On Selection Menu menuBarName|All [Command]

On Selection Pad menuTitleName Of menubarName [Command]V7l4jRB8Hs

On Selection Popup menuName|All [Command]

On Key [Label keylabelName] [Command]

【081】随想

·操作引用对象和直接操作控件时一样的(效果>。但操作引用对象比较方便,代

码可读性好。

·注意:当有引用窗口控件的对象存在时,窗口无法关闭,要关闭窗口,必须释

放对象的引用。

·可以在控件的Init事件中,将自身添加到引用对象中:AddProperty(引用对象,属性名,This>83lcPA59W9

控件应添加一个属性以标识其是否添加到引用对象中。

【082】动态改变数据源问题

·一些和数据源相关联的控件,如ListBox,Grid等,在动态更改其数据源时,

首先应将其绑定的数据源属性清空,如:RowSource=””,RecordSource=””等,

然后再设置其属性。这样就可以使得控件能正确显示其数据,不会出现其他问题。mZkklkzaaP

·对于Grid控件,不能动态更改每列显示控件的ControlSource属性。只能在

设计时设定或者在初始化控件时设定。AVktR43bpw

方法: InitGrid(>代码结构:

Parameters voGrid,vcAlias,vcFldList,vcHeader

**voGrid Grid控件

**vcAlias 表别名

**vcFldList 现实的字段

**vcHeader 字段标题

Local nFldCount

vcFldList=Alltrim(vcFldList>

vcHeader=Alltrim(vcHeader>

vcAlias=Alltrim(vcAlias>

nFldCount=GetWordCount(vcFldList,[,]>

…………………………………..

【083】代码类文件结构布局

实践证明:用类设计器比用代码方便许多。

信息显示:可以设置一个模版,运行中动态设置其中的一些信息值,

例如:”程序错误,错误代码:@”,运行中若有错误发生,将@用代码替换之即可。

【084】VFP应用程序的目录结构

根目录/主

程序

..\Main.prg说明

子目录Data系统数据目

Forms表单目录Progs程序目录Menus菜单目录Reports报表目录Labels标签目录Images图像目录

Libs类库目录

Other其他

User用户目录

定义一个管理类:CManager.prg放入主目录下,实现下列功能:

·设置主目录: Path以及子目录

·设置保护运行环境及恢复运行环境

·运行各种文件。

·管理类库文件(其中包括.prg定义的类>。

·管理表单的多个实例。

·建立一个方法依据类名及初始化条件能创建对象。如:CObject(>或MObject(>等等。

约定:

·和表相关的数据表,用Tag属性记录表别名,用Comment属性表文件的信息。

·程序编写的类的命名规定为:子类名_父类名_祖父类名….prg

·将控制按钮映射到oButtons对象。在按钮的Init事件中写下如下代码: If Vartype(ThisForm.oButtons>==”O”And 。

!Isnull(ThisForm.oButtons> And 。

Upper(ThisForm.oButtons.BaseClass>==”COLLECTION”

ThisForm.oButtons.Add(This ,Lower(https://www.360docs.net/doc/ea12781346.html,>>

Else

If !PEMStatus(ThisForm,”oButton”,5>

AddProperty(ThisForm,”oButtons”,CreateObject(“Collection”>>OR jBnOwcEd

ThisForm.oButtons.Add(This ,Lower(https://www.360docs.net/doc/ea12781346.html,>>

Else

ThisForm.oButtons=CreateObject(“Collection”>

ThisForm.oButtons.Add(This ,Lower(https://www.360docs.net/doc/ea12781346.html,>>

EndIf

EndIf

【085】顶级表单附着菜单的调用

To attach this menu to you Top_Level form,Call it from the Init event of the form:2MiJTy0dTT

Syntax: Do With [,|]

[]gIiSpiue7A

oFormref----form object reference(This>

cMenuname----name for menu(this is required for Append menus –see below>uEh0U1Yfmh

lRename—renames Name Property of you form.

lUniquePopups----determines whether to generate unique IDs for popup names.IAg9qLsgBX

Example:

Procedure Init(>

Do mymenu.mpr With This,.T.

EndProc

Use the optional 2nd parameter if you plan on running multiple instance of your Top_Level form.WwghWvVhPE

The preferred method is to create an empty string variable and pass it by reference so you can receive the form name after the MPR file is run. You can later use this reference to destroy the

menu.asfpsfpi4k

Procedure Init(>

Local cGetMenuName

cGetMenuName=””

Do mymenu.mpr With This,m.cGetMenuName

EndProc

The logical lRename parameter will change the name property of your form to the same name given the menu and may cause conflicts in your code if you directly reference the form by name.ooeyYZTjj1 You will also need to remove the menu when the form is destroyed so that it does not remain in memory unless you wish to reactivate it later in a new form. If you passed the optional lRename parameter

as .T. as in the above example,you can easily remove the menu in the form’s destroy event as shown below.BkeGuInkxI

This strategy is ideal when using multiple instance of Top-Level forms.PgdO0sRlMo

Example:

Procedure Destroy(>

Release Menu (https://www.360docs.net/doc/ea12781346.html,> Extended

EndProc

Using Append /before/After location option:

You might want to append a menu to an existing Top-Level form by setting the location option in the General options dialog. In order to this, you must pass the name of the menu in which to attach the new one. The second parameter is required here. If you originally created the menu with the lRename Parameter=.T. ,then you can update the menu with code similar to the following:3cdXwckm15

Example:

Do mymenu2.mpr With ThisForm,https://www.360docs.net/doc/ea12781346.html,

Using lUniquePopups:

If you are running this menu multiple times in your

application,such as in multiple instances of the same top-level

form,you should pass .T. to the lUniquePopups Parameter so that unique popup names are generated to avoid possible conflicts.h8c52WOngM Example:

Procedure Init(>

Do mymenu.mpr With this,.T.,.T.

EndProc

Note:Param4~Param9 are not reserved cmd freely available for use with your menu code:v4bdyGious

lParameters

oFormRef,GetMenuName,lUniquePopups,Param4,…,Param9J0bm4qMpJ9 Local cMenuName,nTotPops,a-

menuPops,cTypeParam2,cSaveFormNameXVauA9grYP

If Type(“m.oFormRef”>#”O” Or

Lower(m.oFormRef.BaseClass>#”form” OrbR9C6TJscw

m.oFormRef.ShowWindow#2

MessageBox([This menu can only be called from a top-level

form,Ensure that yourpN9LBDdtrd

form’s showWindow Property is set to 2. Read the header section of the menu’sDJ8T7nHuGT

MPR file for more details.]>

Return

EndIf

m.cTypeParam2=type(“m.getmenuName”>

m.cMenuName=Sys(2018>

m.cSaveFormName=https://www.360docs.net/doc/ea12781346.html,

If m.cTypeParam2==”C” Or (m.cTypeParam2==”L” And

m.GetMenuName>QF81D7bvUA

https://www.360docs.net/doc/ea12781346.html,=m.cMenuName

EndIf

-------------------------Menu Definition----------------4B7a9QFw9h Define Menu (m.cMenuName> In (https://www.360docs.net/doc/ea12781346.html,> Bar

Define Pad _2croz97f Of

……………

Activate Menu (m.cMenuName> Nowait

If m.cTypeParam2==”C”

m.GetMenuName=m.cMenuName

https://www.360docs.net/doc/ea12781346.html,=m.cSaveFormName

EndIf

………………

【086】顶层表单与菜单、工具栏的协调

【087】个性化应用程序开发小结

(1>主程序

·设置路径、运行环境等等。

·开发类库运行表单集

◎在表单集的Activate事件中,利用方法AddObject(>添加工具栏:名为oToolBar(设置在顶层表单中>。wt6qbkCyDE

◎表单集中的表单属性:ShowWindows为在顶层表单中。

·运行表单时,同样适用表单集的AddObject(>方法添加表单到表单集中。·把相关操作的方法放入表单中,以备工具栏上的按钮进行调用。

·工具栏的样式如图所示:

·还是类设计器比较方便,手工编写代码是比较麻烦的。

·和表单相关联的操作放在表单中,无关的操作不要放入。

·使用函数NewObject(>直接从类库中建立对象。

语法: NewObject(className,vcxFile,””,paramList>

·一个光头表单的属性设置如下(作为顶层表单的子表单使用>

BorderStyle=0(无边框>|1(单线边框>

Caption=””

Closable=.F.

ControlBox=.F.

MinButton=.F.

MaxButton=.F.

Movable=.F.

ShowWindow=1(在顶层表单中>

WindowState=2(最大化>

ZoomBox=.F.

以上属性可以在Init事件中设置。

·用表单集做应用程序的基本框架如下:

准备工作

◆合理地命名各个按钮及控件的名称,以备引用。

◆准备好所用的图标,并用容易记忆的名字进行命名,放入单独的文件夹中。

◆制作所用的类及类库,放入文件夹Libs中。

◆设置固定的全局变量。如:oApp表示应用程序的全局变量。

总体框架

◆运行环境设置及全局变量的设置。

◆制作一个表单集类,其中的表单作为顶层表单。

◆制作个性化工具栏,设置其显示在顶层表单中。这可以在表单集的Activate 事件

◆中,使用AddObject(>方法添加到表单集中。

◆制作在顶层表单中显示的子表单,建议使用光头表单。

测试应用程序

·注意:

(1>和界面无关的功能单独制作一个类,在设计时直接添加到界面中。

(2>建立各对象之间的引用关联,可以考虑设置一个搭线中介,例如集合等。

(3>示意图:

(4>为了编写代码方便,可以定义若干引用工具栏、主表单和指定表单的变量,这样在代码中可以直接使用它,减少代码量。Kp5zH46zRk

例如: goToolBar 用以引用工具栏

goMainForm 用于引用主表单

goBmForm 用于引用报名表单

等等。

这些全局变量可以在主程序中定义。或者定义一个全局集合[可以命名

为:goAppColl或goCollApp],用以保存这些对象。在创建时添加到集合中,在关闭时,从集合中移去。Yl4HdOAA61

(5>工具栏方案

(6>创建一个自定义类CObject[基于Custom]用于获取应用程序的各个目录结构,其他类可以由此类派生,这样一来,我们无需为路径的问题而发愁。例如:可以派生一个文件集合CFiles。ch4PJx4BlI

假定我们要操作各种文件:

(7>基本表单数据处理结构

【088】两个实用函数

·GetWordCount(String[,Delimiters]>----返回串中的单词数目。·GetWordNum(String,Index[,Delimiters]>--- 返回串中第Index个单词。qd3YfhxCzo

例如:

索引12345

String=“This,is,a,Book,您

GetWordCount(String,[,]> 返回 5

? GetWordNum(String,5,[,]> 返回“您好”

特点: GetWor+Count 计数

Num 取字

【089】系统函数库,用于整个应用程序,其对应的对象名为全局变量。名称可以考虑为:

goFunctions或AppFunctions或SysFunctions或_Functions或oFunctions,_Funcs。全局变量的释放应放在最后。E836L11DO5

WinAPI函数库命名为: goAPI,_API

应用程序对象命名为: _App,oApp

顶层表单为: _TopForm, _TopForm=ThisFormSet.TopForm

【090】两个语句的加强

·With …EndWith

With ObjectName [As Type [Of ClassLib]]

Command

EndWith

·For Each…EndFor

For Each objectName [ As Type [Of ClassLib]] In GroupS42ehLvE3M Command

[Exit]

[Loop]

EndFor

【091】表单或报表设计器中的两个快捷键

Alt+方向键 [ 以1个像素移动],Alt+Shift+方向键[以1个网格移动]【092】从PRG文件创建VCX文件(即将代码类转换成类库>

程序代码如下:

*

* Create VCX from PRG file.

*

*

* First created 06/13/03 by RMK

#define PROCINFO_CONTENT 1

#define PROCINFO_LINENO 2

#define PROCINFO_TYPE 3

#define PROCINFO_INDENT 4

* Definition Types used in RefDef.dbf

#define DEFTYPE_NONE ' '

#define DEFTYPE_PARAMETER 'P'

#define DEFTYPE_LOCAL 'L'

#define DEFTYPE_PRIVATE 'V'

#define DEFTYPE_PUBLIC 'G'

#define DEFTYPE_PROCEDURE 'F'

#define DEFTYPE_CLASS 'C'

#define DEFTYPE_PROPERTY '='

#define DEFTYPE_INCLUDEFILE 'I'

#define DEFTYPE_SETCLASSPROC 'S'

#define VISIBILITY_PUBLIC 'G'

#define VISIBILITY_HIDDEN 'H'

#define VISIBILITY_PROTECTED 'P'

#define MAX_TOKENS 100

#define EMPTYVCX_FILENAME "emptyvcx.vcx"

#define NEWLINECHR(13> + CHR(10>

#define TAB CHR(9>

#define VCX_VERSION "VERSION = 3.00"

*

* Wrapper around a VCX file. Add objects and then call methods 501nNvZFis

* to write to a VCX file or cursor. Also has support forjW1viftGw9 * parsing a PRG file into wrapper objects.

DEFINE CLASS VCXWrapper AS Custom

PRGFile = ''

ADD OBJECT oClassCollection AS Collection

*

* Add a new class to the Class Library.

*

*

* References to class object.

*

*

* cClassName - name of class (ObjName in VCX>

* cParentClass - name of parent class

* [cClassLoc] - location of prg/vcx where parent class can be foundxS0DOYWHLP

* [lOlePublic] - TRUE if this class should be marked OlePublicLOZMkIqI0w

* [nLineNo] - line # class can be found on

FUNCTION AddClass(cClassName, cParentClass, cClassLoc, lOlePublic, nLineNo>ZKZUQsUJed

LOCAL oClass

m.oClass = CREATEOBJECT("VCXClass", THIS.PRGFile, https://www.360docs.net/doc/ea12781346.html,lassName, m.cParentClass, https://www.360docs.net/doc/ea12781346.html,lassLoc, m.lOlePublic, m.nLineNo>dGY2mcoKtT

THIS.oClassCollection.Add(m.oClass>

RETURN m.oClass

ENDFUNC

*

* Create VCX file on disk based upon currently

* defined classes in this VCX wrapper.

*

*

* TRUE on success.

*

*

* cFilename - name of VCX file

proe实习心得

proe实习心得 proe实习心得篇1 时间过得真快,转眼间,为期一个星期的PRO/E实训就这样结束了,然而实训的过程历历在目。实训期间,让我学到了很多东西,不仅使我在理论上对PRO/E 这门课程有了新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了许多实用的新操作,为我以后的工作学习打下坚实的基础。 为期一周的 PRO/E实训已经接近尾声,但由于时间的仓促,我们对PRO/E的学习还只能说是凤毛麟角,虽然通过老师的指导我们按时完成了我们的实训任务,但我们好需要努力深入的了解它,对于我们主修CAD的学生来说,PRO/E技术的应用可能性还是相当大的,对我们以后从事机械设计的学生起来如虎添翼的效果!实训是每个大学毕业生必须拥有的一段经历,它使我们在实践中了解社会、在实践中巩固知识;实训又是对每一位大学毕业生专业知识的一种检验,它让我们学到了很多在课堂上根本就学不到的知识,既开阔了视野,又增长了见识,为我们以后进一步走向社会打下坚实的基础,也是我们走向工作岗位的第一步。 这次实训不仅仅是去实践,更重要的是学到了一种工作的方法,一种应对不同问题的经验,一种面临难题的解决思路,当然也注意到了一些自身的问题,意志不够坚定,中途有退出的想法,遇到问题有畏难情绪,但我最终还是坚持下

来,总的来说实训还是收获不少。实训中我学会了如何与人相处,学会了面对困难,学会了独立思考问题,从中收获了毅力,收获了一份坚持。很感谢我们的实训指导老师李旭老师,还有卢小波老师,虽然周运金老师出差了,但是一样感谢他,教导我们PRO/E这门课程。谢谢你们老师! proe实习心得篇2 我们在系部的安排下开始持续两周的proe实训。首先,要在这里感谢指导老师舒老师,如果没有老师在我们实训过程中遇到困难的时候耐心的教导,我相信我们全组组员不可能这么顺利的凭借自己的努力完成了此次的实训,无论在实训中遇到什么事问题,老师都能悉心为我们解答从来不说一句话厌烦的话,再次代表全班真诚的谢谢舒老师。 实训中我们同组人的共同参与,共同的思考,共同的努力下,终于完成了这次的实训。就是我们一组人这么在一起讨论,一起研究,一起谈吐自己内心的想法,虽然没有曲折的过程,也没有让人激动人心的事情发生,但是却让大家都觉得这是一个很融洽的团体,团体里面的每个人都在工作中付出了自己的努力,付出自己的汗水,这是我们大家自己对自己能力的一种证明。我想这对我以后的学习和工作都将会有很大的帮助,在这次实训中遇到了许多实际性的问题,在实际设计中才发现,书本上的理论知识与在实际运用中还是的还是有一定出入的,而且要不断更正以前的错误思维,一切必须靠自己一点一滴的解决,在解决的过程中你会发现自己子在飞速的提升。

以太网及TCPIP通俗理解

1 以太网------EtherNet: ---------------------------参考图解 以太网最早由Xerox(施乐)公司创建,于1980年DEC、lntel和Xerox三家公司联合开发成为一个标准。以太网是应用最为广泛的局域网,包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网,采用的是CSMA/CD访问控制法,它们都符合IEEE802.3。 IEEE 802.3标准 IEEE802.3规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术,它很大程度上取代了其他局域网标准。如令牌环、FDDI和ARCNET。历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。 常见的802.3应用为: 10M: 10base-T (铜线UTP模式) 100M: 100base-TX (铜线UTP模式) 100base-FX(光纤线) 1000M: 1000base-T(铜线UTP模式) 2 UIP协议: uIP由瑞典计算机科学学院(网络嵌入式系统小组)的Adam Dunkels 开发。其源代码由C 语言编写,并完全公开,uIP 的最新版本是1.0 版本,本指南移植和使用的版本正是此版本。uIP协议栈去掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保留了网络通信 必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。 由于uIP协议栈专门为嵌入式系统而设计,因此还具有如下优越功能: 1)代码非常少,其协议栈代码不到6K,很方便阅读和移植。 2)占用的内存数非常少,RAM 占用仅几百字节。 3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。 4)支持多个主动连接和被动连接并发。 5)其源代码中提供一套实例程序:web 服务器,web 客户端,电子邮件发送程序(SMTP 客户端),Telnet服务器,DNS主机名解析程序等。通用性强,移植起来基本不用修改就可以通过。 6)对数据的处理采用轮循机制,不需要操作系统的支持。 由于uIP对资源的需求少和移植容易,大部分的8位微控制器都使用过uIP 协议栈,而且很多的著名的嵌入式产品和项目(如卫星,Cisco 路由器,无线传感器网络)中都在使用uIP 协议栈。 3 TCP/IP协议: TCP/IP是(Transmission Control Protocol/Internet Protocol)的简写,中译名为传输控制协

实验二、Wireshark的使用与PackerTracer的使用

实验二 Wireshark的使用与PackerTracer的使用 实验目的:掌握网络协议分析软件Wireshark的常用操作和网络模拟器PackerTracer的常用操作。 实验环境:计算机若干、直通双绞线若干、小型非管理交换机10台。 实验步骤: 1、配置对等局域网 2、Wireshark的使用 (1)启动系统。点击“Wireshark”图标,将会出现如图1 所示的系统界面。 图1 Wireshark 系统界面 其中“俘获(Capture)”和“分析(Analyze)”是Wireshark 中最重要的功能。 (2) 分组俘获。点击“Capture/Interface”菜单,出现如图2 所示界面。 图2 俘获/接口界面 如果该机具有多个接口卡,则需要指定希望在哪块接口卡俘获分组。点击“Options”,则出现图3 所示的界面。

图3 俘获/接口/选项界面 在该界面上方的下拉框中将列出本机发现的所有接口;选择一个所需要的接口;也能够在此改变俘获或显示分组的选项。 此后,在图2 或者图3 界面中,点击“Start(开始)”,Wireshark 开始在指定接口上俘获分组,并显示类似于图4 的界面。 当需要时,可以点击“Capture/Stop” 停止俘获分组,随后可以点击“File/Save”将俘获的分组信息存入踪迹(trace)文件中。当需要再次俘获分组时,可以点击“Captuer/Start”重新开始俘获分组。 (3) 协议分析。系统能够对Wireshark 俘获的或打开的踪迹文件中的分组信息(用 File/Open 功能)进行分析。如图4 所示,在上部“俘获分组的列表”窗口中,有编号(No)、时间(Time)、源地址(Source)、目的地址(Destination)、协议(Protocol)、长度(Length)和信息(Info) 等列(栏目),各列下方依次排列着俘获的分组。中部“所选分组首部的细节信息”窗口给出选中协议数据单元的首部详细内容。下部“分组内容”窗口中是对应所选分组以十六进制数和ASCII 形式的内容。 若选择其中某个分组如第255 号帧进行分析。从图4 中的信息可见,该帧传输时间为俘获后的15.129546 秒;从源IP 地址119.147.41.101 传输到目的IP 地址222.95.175.235;帧的源MAC 地址和目的MAC 地址分别是00.e0.fc.65.73.59 和00.16.35.aa.f3.75 (从中部分组首部 信息窗口中可以看到);分组长度74 字节;是TCP 携带的HTTP 报文。

proe实习心得范文3篇

proe实习心得范文3篇Proe's practical experience 编订:JinTai College

proe实习心得范文3篇 小泰温馨提示:心得体会是指一种读书、实践后所写的感受性文字。语言类读书心得同数学札记相近;体会是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。本文档根据心得体会内容要求和针对主题是实习期群体的特点展开说明,具有实践指导意义,便于学习和使用,本文下载后内容可随意修改调整及打印。 本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】 1、篇章1:proe实习心得范文 2、篇章2:proe实习心得范文 3、篇章3:proe实习心得范文 通过proe实习实训,使自己学到了更多更深的Pro/E的知识。虽然现在学到的Pro/E还是很少,还是比较浅的知识,但比实训之前学到的多了很多,在此分享心得范文。下面是小泰为大家收集整理的proe实习心得范文,欢迎大家阅读。 篇章1:proe实习心得范文

短短三天的ProE实训,让我对ProE的画图技能的掌握提升很大,虽然还有许多东西还没完全弄懂,但是能够独立的把一些零件成功分模,这份成就感是从内心里感觉到的。 在这里感谢指导老师周铭杰,如果没有周老师在我们实训过程中遇到困难的时候的教导。我相信我们不可能这么顺利的凭借自己的能力完成了此次的实训。在这次设计中遇到了许多实际性的问题,在实际设计中才发现,自己之前太依赖老师录制的视频,在没有老师讲解时,一切必须靠自己一点一滴的解决;当然在解决的过程中会发现自己的能力也在不断的得到提升。 实训前两天康老师没有讲,而是让我们自己去做题,自己去思考,这可把我们难住了,之前上课周老师都是先讲一遍再录制个视频给我们参考,我们大部分同学都是按着老师的步骤去做,怎么做思路还是较清晰的,现在实训给我们而是几十个产品,自己去琢磨怎么把模具设计出来、分型出来;结果做一个产品时怎么入手就想了大半天,首先考虑的是怎么把分型面做出来,先用体积块,不行;再用裙边曲面,又不行;再用回体积块,就这样反复做了好几遍;最后做出分型面了,分模时又遇到问题,然后找出问题,解决问题,最后成功做出来,总算有点成就感,但一天就只做出三个产品,这效率太低了;到

2012.11.6战略智慧笔记 陈果

N 《战略智慧》 --陈果 如何建立战略思维? 你现在最需要解决的是什么问题? 1、未来老百姓的健康生活方式? 2、房产中介的人力资源 3、企业做到一定程度,如何把规模缩小? 4、如何使用90后? 5、外贸出口利润越来越低,公司成本越来越大,如何突破?需要经营的: 1、原始积累(财富) 2、内部团队(精神共同体) 团队是利润,是巨大财富 3、忠实客户(了解客户需求) 企业一定要战略升级,为谁请命? 老板需要经营“空手套白狼”的本领。 企业做大的因素: 1、政府的力量 2、资金对你的加持 3、消费者对你的关注 4、优秀的人才向你靠齐

利润 (如:外婆家) 如:宋城集团,通过做“宋城千古情”项目,获得政府的支持 大老板:看似很傻,实际很厉害,用一年的时间赚10年的钱 如:王志纲老师用三十年的时间做中国最好的“战略思想智库”,一转身获得无数的财富 经营企业就是经营人,经营企业就是经营价值。 企业、产品都是媒介,关键是你想到哪里去。 战略思维思考的问题是:我要到哪里去? 老板必须为战略负责! 战略是唯一不能让职业经理人去做的事情。 没有战略就没有人追随,如果成功也是偶然的。 如:王建林(万达集团),当初做商业地产,所有人都反对如:吴亚军,(南湖地产,温州人)当初做战略十几人的核心团队全部走掉,但今天成为中国女首富。 老板不是所有事情都需要你来做,而是那些事情是你必须要做的。

如:华为,力排众议做最适合当下的战略 这是一场越来越激烈的商战,不要妄想今天的困难明天就过去了,要有打战的思维 如:微软 在战争当中总结经验,这是老板需要修炼的 战略智慧金三角: 找定位 定打法 开模具 战略之道的根本是定位。 打法和模具的关系: 模具是企业超级杀伤力的武器 如:工作室:帮企业找魂,帮企业开模具书院班:帮企业开模具,寻找战略突破打法:合适的发射装置 打法与模具的关系是炮弹和炮筒的关系 孵化人的板块: 从老板到老师的智慧

wireshark代码解析1

Wireshark学习笔记 1.简介 2.Wireshark功能模块 下图给出了wireshark功能模块: a)GTK1/2 处理用户的输入输出显示,源码在gtk目录. b)Core 核心模块,通过函数调用将其他模块连接在一起,源码在根目录 c)Epan wireshark Packetage Analyzing,包分析引擎,源码在epan目录 ●Protocol-Tree:保存数据包的协议信息,wireshark的协议结构采用树形结构,解析 协议报文时只需要从根节点通过函数句柄依次调用各层解析函数即可。 ●Dissectors:在epan/dissector目录下,各种协议解码器,支持700+种协议解析,对 于每种协议,解码器都能识别出协议字段(field),并显示出字段值(field value) 由于网络协议种类很多,为了使协议和协议间层次关系明显,对数据流里的各个层 次的协议能够逐层处理,wireshark系统采用了协议树的方式。 ●Plugins:一些协议解码器以插件形式实现,源码在plugins目录 ●Display-Filters:显示过滤引擎,源码在epan/dfilter目录 d)Capture 捕包引擎,利用libpcap/WinPcap从底层抓取网络数据包,libpcap/WinPcap提供了通用的抓包接口,能从不同类型的网络接口(包括以太网,令牌环网,ATM网等)获取数据包。 e)Wiretap 从文件中读取数据包,支持多种文件格式,源码在wiretap目录 f)Win-/libpcap Wireshark抓包时依赖的库文件

wireshark功能模块 3.wireshark流程分析 1)初始化 Wireshark的初始化包括一些全局变量的初始化、协议分析引擎的初始化和Gtk相关初始化,显示Ethereal主窗口,等待用户进一步操作。重点就是Epan模块的初始化。 Epan初始化: ?tvbuff初始化:全局变量tvbuff_mem_chunk指向用memchunk分配的固定大小的 空闲内存块,每个内存块是tvbuff_t结构,从空闲内存块中取出后,用来保存原始 数据包。 ?协议初始化: ◆全局变量: ●proto_names ●proto_short_names ●proto_filter_names 以上三个全局变量主要用来判断新注册的协议名是否重复,如果重复,给出提 示信息,在协议解析过程中并没有使用。 ◆协议注册:

proe学习笔记

学习笔记 多靠自己吧,兄弟! https://www.360docs.net/doc/ea12781346.html,/study .asp?vip=852395非常 适合各位现在学习的 自学网站 第一节Proe/E5安装方法 安装方法: 1) 在安装proe之前,需要修改系统的环境变量,lang=chs(右键单击我的电脑-属性-高级-环境变量),这个变量一定要修改,否则中文出不来. 另:如果要想出现中英文对照的界面,只要将语言项改为both就OK了。双击“SETUP.EXE”开始安装----- 2) 安装初始界面左下角PTC主机ID:XX-XX-XX-XX-XX-XX,用记事本打开license.dat(注:在 \pro5.0M030\shooters目录下,文件名为ptc_licfile.dat),将里面的00-00-00-00-00-00全部替换为你自己的网卡ID(替换的具体操作为:单击记事本菜单栏上的“编辑”-“替换”,在“查找内容”里输入: 00-00-00-00-00-00,在“替换为”里输入你的网卡ID:XX-XX-XX-XX-XX-XX,然后点击“全部替换”,保存后关闭。 3)下一步; 在许可证协议中选择“我接受”; 不需要安装PTC License Server,直接安装Pro/ENGINEER & Pro/ENGINEER mechanica进入下一界面;选择目标文件夹,另如无需要,可不安装帮助文件(占硬盘);有模具设计的朋友需另外选择“选项”里的“Mold Component Catalog”和Pro/Plastic Advisor,否则部分功能无法使用 选择“公制”; 单击“添加”-“锁定的许可证文件(服务器未运行)”-找到前面保存的license.dat,确认,下一步。 添加快捷方式“桌面”,自定义“启动目录(经几次试装,启动目录必须为英文文件夹下)”后下一步; 安装可选实用工具,按默认选择,下一步,会提示安装无法完成,确认,下一步;安装;开始安装。 4)安装完成退出后,不要急着运行程序。

uip移植笔记

本笔记适用于uIP1.0。 移植平台介绍:MSP430F149+cs8900a+IAR 1、阅读The uIP Embedded TCP/IP Stack The uIP 1.0 Reference Manual. 2、建立一个文件夹,起名myport,将uip-1.0下的uIP和lib两个文件夹拷贝过去,然后再在myport下建立app文件夹。 3、将unix子文件夹下的clock-arch.c、clock-arch.h拷贝到myport下,这个文件实现协议栈所用的时钟,由430的定时器完成,有三个函数: clock_time_t clock_time(void) { return ticks; } void clock_init(void) { 定时器的初始化工作 } __interrupt void timer_interrupt(void)/*定时器中断函数*/ { ++ticks; }。 4、将unix子文件夹下的uip-conf.h拷贝到myport下,这个文件实现协议栈所用的配置,按照需要修改之。 5、写cs8900a的驱动函数,这里采用8位、查询模式,替换tapdev.c 或slipdev.c。 6、将unix子文件夹下的main.c函数拷贝到myport下,这个是主调度流程,按照需要修改。 7、建立自己的工程,将以上文件包含。 8、调试,改错。 其中,uip的缓冲区是以字节数组的形式产生,为了保证它的起始地址是偶数,必须指定地址。 UDP的初始化如下 void myudp_init(void) { uip_ipaddr_t ipaddr;//定义IP类型变量 uip_ipaddr(ipaddr, 210,29,104,88); //远程IP为210.29.104.88 if(myudp_conn != NULL) { uip_udp_remove(myudp_conn);//如果连接已经建立,则删除之 } myudp_conn = uip_udp_new(&ipaddr, HTONS(1000));//建立到远程ipaddr,端口为1000的连接 if(myudp_conn != NULL) {

Libnids学习笔记

Libnids学习笔记 一、Libnids概述 Libnids(Library Network Intrusion Detection System)是网络入侵检测开发的专业编程接口,实现了网络入侵检测系统的基本框架,提供了一些基本的功能。Libnids是基于Libpcap和Libnet而开发的,其主要功能包括捕获网络数据包、IP碎片重组、TCP数据流重组以及端口扫面攻击检测和异常数据包检测等。 二、Libnids安装 Libnids需要支持库Libpcap和Libnet,此外,编译过程还需要byacc、flex 和glib(2.2+)。在CentOS 6.5下安装Libnids的步骤: 1.安装byacc、flex和glib # yum install byacc # yum install flex # yum -y install glib2-devel 2.安装Libpcap开发包 # tar –xzvf libpcap-x.y.z.tar.gz # ./configure # make # make install 3.安装Libnet开发包 # tar –xzvf libnet-x.y.z.tar.gz # ./configure # make # make install 4.安装Libnids开发包 # tar –xzvf libnids.x.y.tar.gz # ./configure # make # make install

三、Libnids编程模型 在Linux下使用libnids开发应用程序,源文件中需要包含头文件nids.h,并且拥有libnids库libnids.a或libnids.so.x.x。程序的main函数通常采用以下结构:main() { 与libnids无关的程序私有过程 设置libnids参数(可选) 初始化libnids,if (!nids_init()) 失败处理 注册libnids回调函数 运行libnids,nids_run() } 四、Libnids编译 libnids 1.24版本下,使用到的开发包是libnids、libpcap、libnet、libgthread-2.0和libnsl,它们的库名分别为nids、pcap、net、gthread-2.0和nsl。 在Linux下使用gcc链接编译时,要注意先后顺序,越是底层库,位置越后,因此的编译命令如下: # gcc x.c -o x -lnids -lpcap -lnet -lgthread-2.0 -lnsl 五、Libnids状态 Libnids中TCP连接的状态主要有如下6种: #define NIDS_JUST_EST 1:表示TCP连接刚刚建立,在此状态下可以通过连接参数(IP地址、端口号等)决定是否对此TCP连接后来的数据进行分析,并且可以指定接收数据的类型(共四种,分别是给客户端、给服务器以及给二者的带外数据); #define NIDS_DATA 2:表示新的TCP数据已到达,数据存储在tcp_stream 的half_stream结构中; #define NIDS_CLOSE 3:表示TCP连接正常关闭; #define NIDS_RESET 4:表示TCP连接被重置关闭; #define NIDS_TIMED_OUT 5:表示由于超时TCP连接被关闭; #define NIDS_EXITING 6:表示Libnids正在退出,在此状态下可以最后一次使用存储在half_stream结构中的数据。

基于PROE的注塑模具设计(DOC)

基于UG的某型号插座注塑模具设计与方案优化 刘涛 (宝鸡文理学院,机电工程学院,陕西,宝鸡,721016) 摘要:在当下,模具工业已渗透到人们生活和生产的各个领域,并成为一门不可或缺的技术。因而在此针对某型号插座进行注塑模设计。首先,对制件进行工艺分析,提出一模四腔,嵌入式和平衡布置型腔的方案;其次,为便于调整冲模时的剪切速率及封闭时间,选择侧浇口进行浇注;而后,选择以最大截面为分型面和便于成型的侧抽芯;最后,为保证制件的质量,采用双型号的推杆对其进行脱模。经过仿真实验验证了该模具满足设计要求。 关键词:插座;注射模;侧抽芯 Design Of Socket Injection Mold And Project Optimization Based On UG Liu Tao (Baoji University Of Arts And Sciences, Mechanical and Electrical Engineering Institute,Shanxi,Baoji,721016) Abst ract:In the present,Mould industry has penetrated into every field of people's life and production,and become an indispensable technology.So the paper designed injection mold of the certain type socket.Firstly,the injection process of the certain type socket was analyzed,and proposed idea of one module and four cavities,insert structure and balances layout. Secondly, select the side gate to casting can make the die shear rate and closed time easy to adjust, And then,the parting surface and side core pulling was designed based on the principle of the largest cross-sectional area and easy to mold.Finally, designed double models of push rod to demould to guarantee the quality of the parts.Simulated test showed that the design can meet the requirements. Key words:socket, injection mold, side core pulling 引言 随着社会生产的迅猛发展,塑料已渗透到人们生活和生产的各个领域,并成

ProE超级安装方法

Pro/Engineering Wildfire4超级安装方法 Pro/E的超级安装功能是指C盘格式化,重新安装了windows;只要Pro/E以前没装在C盘,也就是说Pro/E的文件还在电脑里,那么重装Pro/E只要1分钟就行了,如:原来安装在D:\Program files\proeWildfire4.0\文件夹下,找到D:\Program files\proeWildfire4.0\bin下的ptcsetup.bat文件,双击它,proeWildfire4.0的超级安装就开始了,这个过程跟初次安装proe几乎完全一样,指定license文件、指定pro/help文件的路径及浏览器的路径、指定proe启动的默认工作目录等等,所有的安装参数都可以现在重新指定。安装完毕,在开始〉程序菜单中生成了proeWildfire4.0的图标,点击它,proeWildfire4.0可以启动了!也可以用在从已经安装好的电脑中把PROE复制到自己的电脑中。 一、从已经安装好的电脑中 把PROE的目录复制到自己 的电脑中;如从C:\Program files\proeWildfire4.0复制到 自己的电脑中D:\Program files\proeWildfire4.0。 二、把许可证文件 ptc_licfile.dat(有时会是另外一个名称如ptc_li.dat)也要复制 到自己的电脑中(最好放在D:\Program files\proeWildfire4.0下 面,这个文件以后都不能删除或移动,否则PROE不能打开)。 三、开始→运行→CMD→Ipconfig/all→查到本地连接的IP号 xx-xx-xx-xx-xx-xx,并记下。

PROE学习心得

Proe学习心得 经过一段时间对Proe软件的学习,不仅增强了我对Proe软件的操作技能,更重要的是让我体会到学习Proe的重要性。Proe作为三维图形绘制的的软件,它是三维建模软件的领头羊之一。Proe具有在工业设计和机械设计等方面的多项功能,还包括对大型装配体的管理、功能仿真、制造、产品数据管理等等。当然,学习Proe软件的重中之重是对Proe草绘的学习,我通过网络和老师那里了解到Proe草绘确实是非常重要的,可以说是Proe一切建模的基础,要说Proe的零件建模,灵魂在草绘也一点不过份。草绘是用户在Proe 软件上体现设计意图的第一步,很多人在日后的工作和软件应用上对设计意图把握的不足都是因为在开始的时候对草绘的理解不足所造成的。对于我们学机械专业的学生来说,学习Proe软件自然非常重要。 这学期是我首次接触计算机三维软件得学习,初次学习Proe我碰到了好多问题。上机操作,第一节课时,老师把Proe的一些简单功能模块作了介绍。然后,通过计算机示范了拉伸、旋转等功能的操作步骤。当时,我什么也不懂,更不用说解释其中的原理。感觉这个三维软件的学习有难度。同时老师推荐了林清安的辅导书籍。虽然第一节课,碰到了许多难题,但经过老师耐心指导和同学的的帮助,我解决了好多问题。第一节课对我留下了很深的影响,我要学好Proe 这个三维建模软件。 接下来的学习,我自己到图书馆接到一本适合初学者用的教材。在课余时间看这本书,有什么看不懂的,上课时询问老师,或者询问会操作的同学。渐渐的我从什么都不懂到能够实现镜像、阵列、混合、扫描等功能的操作,也知道了Proe等绘图软件的一些原理。例如,多种样条曲线,自由曲面等。在利用书籍等资源的基础上,我学到了许多三维图形的绘制方法。当遇见一个零件时,首先要对这个零件进行特征分析,要能想到有什么方法操作会简单些。其次,就是实施草绘绘图。最终会得到理想的三维模型。在学到,混合这部分时,由于我在业余时间听了些三维软件操作的一些讲座,所以很快就掌握了。在上机操作时,我们班的好多同学都在绘制“天圆地方”这个三维模型。底面正方形,同学都会画,而且没有问题。当绘制上面的圆形时,遇到了许多问题,由于圆形没有棱角,图

ucos操作系统在ARM上的移植

UC/OS-II 嵌入式系统在ARM 上的移植 UC/OS-II 操作系统是一款完全公开的源代码,它非常精简,整个操作系统的代码只有几千行,是专门针对于嵌入式开发而产生的一款代码。它有几个特点,分别是可移植性(Portable )、可固化(ROMable )、可裁剪(Scalable )、多任务、可确定性、任务栈、系统服务、中断管理、稳定性可靠性。 UC/OS-II 主要就是一个内核,由ANSIC 语言编写而成。负责任务管理和任务调度,没有文件系统和界面系统。它的代码是公开的,系统的实时性强、移植性好、可多任务。 UC/OS-II 作为基于优先级的抢占式多任务的实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步和内存管理的功能。它使得任务的独立性,不相互干涉,非常的准时和高效,且易于设计和扩展。 UO/OS-II 共有16个内核文件,11个与CPU 类型无关,就是说可以直接使用不需要修改。还有3个内核文件与CPU 有关系,要根据需要作出相应的改动。剩下的两个内核文件和具体的应用有关。如图所示UC/OS-II 的16个内核文件的层次。 μC/OS -II 内核文件 软件 硬件

多任务操作的核心是系统调度器,利用TCB来管理任务调度功能。它的主要功能是保存任务的当前态、优先级、等待事件、代码起始地址、初始堆栈指针等。程序的设计关键就是确定划分多任务的问题,以及任务优先级和任务通信。 优先级的意思是每个任务都是无限循环的,有运行态度、就绪态、休眠态、挂起态和中断五种状态。当有高一级优先级的任务就绪后,低优先级立即停止运行,转为挂起态或就绪态。这就是可剥夺型的内核。当中断一个高优先级任务,中断时 挂起,中断结束后任务继续运行,并立即剥夺低优先级的任务。 对于这种可剥夺型内核,CPU的使用时可以确定的,可优化任务级响应。在很多单片机或ARM板上很容易就可以移植UC/OS-II。当然本次设计使用的TQ2440,也可以完美的移植它。移植程序在网上都可以找得到,所以设计中就不做解释了。 本次设计实现的是串口协议和网口协议组合成的一个数据网关。其主要的流程图如下所示:

libpcap学习笔记

struct pcap_pkthdr { struct timeval ts; /* time stamp */时间戳 bpf_u_int32 caplen; /* length of portion present */在线抓到包的长度,无符号整形bpf_u_int32 len; /* length this packet (off wire) */离线包长度 }; pcap_pkthdr是.pcap文件中包的头部 1.入门使用篇 本篇讲述如何抓包 最简单的libpcap抓包程序只要有以下几句就可以了 char ebuf[PCAP_ERRBUF_SIZE]; pcap_t *pd = pcap_open_live("eth0", 68, 0, 1000, ebuf); 建立libpcap捕捉句柄,若出错,ebuf返回错误字串.ebuf可以为NULL(以后同) struct bpf_program fcode; pcap_compile(pd, &fcode, NULL, 1, 0); 添写过滤规则串fcode,可以为空(即第三个参数,格式在后面讲到) pcap_setfilter(pd, &fcode); 给 pd 设置上过滤规则 pcap_loop(pd, 10, eth_printer, NULL); 主循环,开始抓包,共抓10个(由第二个参数指定),抓到包后就进入函数 eth_printer pcap_close(pd); 结束 这个就是最简单的程序了,其中还有个不明, 在pcap_loop参数 eth_printer的类型是pcap_handler,pcap_handler定义如下:

proe的使用技巧

第3章习题 1.请实地进入Pro/E中操作主操作窗口的各部位组件。 答:略。 2.请说明设置中英文双语接口的过程。 答: (1)要设置中英文双语接口,一定要安装中文版。请先按附录A,增设 Windows环境变量lang=chs后,再安装Pro/E Wildfire中文版。 (2)将Pro/E的系统变量menu_translation设为both。 (3)将menu_translation设为both的设置,写到一个名为config.pro的文件中。 (4)完成后,我们试点一个含有菜单的选项,就可以发现差别了! 3.请设置您喜欢的系统颜色,并令其在每次进入Pro/E时,都可以自动设置。答:先设定所要的系统颜色。其效果只是暂时的,下次再进入Pro/E后,就会还原回系统的预设颜色了。如果希望每次进入Pro/E后,都能执行这组您所设定的系统颜色,是系统变量的名称是system_colors_file,而其值则是syscol.scl 文件的完整路径。 4.如何自定义一个模板文件,以及如何来妥善使用它? 答:Pro/E提供了两类模板文件,一个是“公制”类模板文件(如,mmns),另一类则是“英制”类模板文件(如,inbls),选公制的“mmns_part_solid”(即公制_零件_实体用)。还有一个是“空”模板,也就是完全不用模板。完全不用模板一样可以画图,只是当需要基准面或点或坐标系时,就要自己建。 如果觉得不方便,则一样可以在Config.pro文件中加入template_solidpart,template_sheetmetalpart,template_designasm,template_mfgcast, template_mfgmold,template_drawing 等系统环境设置,来指定要作为默認模板的模型文件。这样,以后就可以直接勾选该开关项,而直接使用合适的模板。 5.试述Pro/E的鼠标按键控制。 答:

PROE基本命令学习笔记

PROE基本命令学习笔记 PRO/E2001学习笔记 正确和错误的文件名 问题解决 文件中有空格空格处用下划线代替 非文字数字符号使用文字数字符号 文件名中有方括号去掉方括号 *内存 当在P中打开、引用或创建一个对象时,该对象就一直存在于内存当中,知道被删除或退出P。同样,当打开装配体时,和装配体关联的每一个零件也都存在于内存当中。 *工作目录 P是利用工作目录帮助用户管理文件。要变更当前的工作目录,可以选择文件?工作目录命令,然后选择想要的目录作为工作目录。 *打开对象 通过文件打开对话框可以检索到P对象。选择文件?打开命令或直接在工具栏象 模型显示 在零件、装配以及制造模块中,显示模型有4种方式,在工程图模块中,有3种显示方式。 线框:在P所有相关模块中,线框方式显示模型所有的边。在实际的模型绘制中,被隐藏的边也会也会变得可见。

隐藏线:在隐藏线方式下,实际模型绘制中被隐藏的边会以灰色表示。在工程图模块中,灰色线条表示隐藏线并被打印成隐藏线。 消除隐藏线:在这种方式下,实际模型绘制中被隐藏的线不会被显示。上色:在上色方式下,所有显示的实体和表面都会被上色,隐藏线不会显示。在工程图模块中,这个选项不能使用。 视图定向:在零件或装配模块下造型时,将模型定向在6个正交视图(正视图、俯视图、右视图、左视图、仰视图和后视图)中的一个对用户来说是很有利的。命名和保存视图可以通过动态浏览或者定向选项进行视图定向。创建草图:绘制草图是P的一项基本技巧。创建的几何特征,诸如拉伸或切除,需要用草图来定义特征的截面。 绘制草图的基本原则:草绘集中了尺寸标注、约束以及参照元素形成一个截面。截面分为两类:一类是可以用于直接创建特征的截面,另一类是在草图模块下创建的截面。 草绘显示 *撤消与恢复撤消草绘器操作图标将撤消上一次执行的草绘动作,而重做图标则用来恢复通过撤消选项撤消的操作。 *定向草绘平面与屏幕平行默认的绘制环境是显示与屏幕平行的。因为绘制环境可以使用CTRL+鼠标中键动态旋转,所以此图标可以把草绘平面恢复到默认的二维方向。 *显示尺寸在绘制环境中,切换尺寸显示的开/关图标控制约束符号的显示,约束符号显示可以用此选项开启和关闭。 *网格开关在绘制环境中,切换网格的开/关图标控制网格显示方式。在绘制截面时,网格常常会引起视觉方面的问题。

基于PROE的鼠标模具设计说明

基于PROE的鼠标模具设计-----------------------作者:

-----------------------日期:

摘要 Pro/Engineer(以下简称Pro/E)是一款三维建模软件,它是一套由设计至生产的机械自动化软件,是新一代的产品造型系统,利用参数化实体造型的方法,为更加高速、快捷的造型、生产提供了一种切实可行的办法,在工业设计和机械 设计等方面有很好的可操作性。Pro/E ngineer还提供了目前所能达到的最全面、集成最紧密的产品开发环境。 同时本课题还用到了Expert Moldbase Extension (以下简称EMX), 模具专家系统扩展,它是Pro/E软件的 模具设计外挂。它是Pro/e的一个自动分模工具,利用该模 具库,家用电器、玩具和汽车零件制造商们将可在模具开发及 制造方面有效地控制成本。

本课题《鼠标及其模具设计》就是基于Pro/E的产品开发设计,采用Pro/E软件对鼠标上盖制品及模具进行了三维造型,采用Pro/E的数值模拟技术和经验设计计算相结合的方法优化设计,同时仿真了塑料熔体在型腔的充模流动以及冷却分析过程。 关键字:Pro/E EMX 鼠标模具

Abstract Pro/Engineer (hereinafter referred to as Pro/E) is a 3D modeling software, it is a design to the production of mechanical automation software, a next generation of product modeling system, using parametric solid modeling approach, in order to strengthen its high speed and the shortcut of modeling, production provides a viable, in industrial design and mechanical design, and so have very good operability. Pro/Engineer also offers the most comprehensive and integrated together product development environment. This issue of the mouse and mould development is based on Pro/E's product development and design. At the same time this subject also used to the Expert Moldbase Extension (hereinafter referred to as the EMX), die expert system extensions, it is Pro/E software die design plug-in. It is the Pro/e a parting tool, use the stencil library, household appliances, toys,

PROE学习心得

Pro/ENGINEER使用注意事项 1.如果使用鼠标右键打开快捷菜单时,需要按下右键保持一段时间,约是0.5秒 2.Pro/ENGINEER的模板是什么: Pro/ENGINEER来说,模板文件就是用来规范画图环境的重要文件。它提供以下两种类型:模型模板和工程图模板。模型模板是标准的Pro/ENGINEER模型,它包含预先定义的特征、图层、参数、已命名的视图,以及其它属性。工程图模板则包括:创建工程图的项目说明的特殊工程图形文件,这些工程图的项目包括:视图、表格、格式、符号、注释、参数注释,以及尺寸等。 而本章主题则是模型模板。Pro/ENGINEER所提供模型模板,包括:默认基准平面、已命名的视图、默认图层、默认参数,以及默认单位,并可进一步自定义。 这些模板文件都是.prt格式的文件,它们被放在Pro/E安装目录下的templates目录中,可以将其打开,修改成所需的设置;或是以“空模板”加上所用需要的常用画图环境设置后,再建一个.prt模板文件保存在这个目录里来,以方便日后的使用。如果有规划的大修改,那么还可以将所有的模板文件保存到指定的目录,然后在设置start_model_dir系统变量,来指定用来保存所有自定义模板的目录。 3.config.pro文件是什么 在本节中,为了系统变量的设置,我们立刻用到了config.pro文件。实际上,它就是一个系统变量的自动运行批处理文件。它一定要放在Pro/E的启动目录里,同时文件名也一定要是“config.pro”。只要可以影响系统运行环境的设置,都可以通过这样的方法来设置相应的系统变量,并将其存到config.pro文件中。因此,Pro/E的各模板也提供很多的系统变量,来供用户取用。用于基础模块中的系统变量查询法已略。 config.pro也是一个文本文件,您可以通过编辑config.pro文件直接撰写或修改系统变量;也可以使用先设置系统变量然后保存的方法来逐一加入需要的系统变量。 4.在修改圆角时,选取边线时要注意。以鼠标选取两边的长短距离要尽量一致,画出来的 默认圆弧的大小才会比较平均(长短距离是指光标距所选两条直线交点的距离)。 5. 6.草绘倒圆角和特征倒圆角的取舍 这个角要在那里画,和您的图形设计与造型设计考虑有很大的关系。一般说来,变动编辑可能性大,造型复杂度高,或数量多且半径不一致的,我们多会用倒圆角特征来画;而造型单纯、变化机会不高者,就会采用草绘圆角的方法来处理。请特别注意这个应用技巧。(见本书12 章)

相关文档
最新文档