当前位置:文档之家› Win32 API应用程序框架结构简

Win32 API应用程序框架结构简

Win32 API应用程序框架结构简
Win32 API应用程序框架结构简

Win32 API应用程序框架结构(2)

1.3.3 头文件的类型

与传统的C程序一样,在程序的开始都会包含头文件,并在程序中会有对调用函数的申明。在每一个用C编写的Windows程序中,都会用到一个头文件WINDOWS.H。其实,WINDOWS.H只是一个包含文件,包含了其他的Windows头文件。当然,在这些被包含的头文件中也可能还包含着其他的Windows头文件。这些头文件中最重要的有如下几种。

●WINDEF.H:基本类型的定义。

●WINNT.H:支持Unicode的类型定义。

●WINGDI.H:图形设备接口的定义。

●WINUSER.H:用户接口的定义。

●WINBASE.H:内核函数的定义。

●WINSOCK.H和WINSOCK2.H:用于网络通信的套接字的定义。

在这些头文件中,定义了Windows提供的所有数据类型、常数标识符、函数原型和数据结构等,都是Windows文档中最重要的部分。在Visual C++的Include 子目录中可以找到所有的头文件。

1.3.4 函数和数据结构

在C语言中有一个入口函数main,在Windows应用程序中同样也有一个入口函数WinMain,它的原型在WINBASE.H中声明,如下所示:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance,

LPSTR lpCmdLine, int nShowCmd);

其中,第一个参数被称为“实例句柄”,该句柄惟一地标识了该程序,其他Windows 函数可以通过将该句柄作为参数来调用该程序;第二个参数只是为了与早期的版本相兼容,在32位Windows程序中,该概念已经不再被采用,所以总是设置为NULL;第三个参数用于运行程序的命令行,可以通过它将文件在程序启动时载入内存;第四个参数表示程序在运行时是以何种方式显示的(从正常、最大化和最小化中选一)。

在程序Hello中,除了用到WinMain函数外,还用到了以下的API函数。

●LoadIcon:为程序加载图标以供使用。

●LoadCursor:为程序加载鼠标指针以供使用。

●GetStockObject:获取图形对象。

●RegisterClass:为主程序的窗口注册窗口类。

●ShowWindow:在屏幕上显示窗口。

●UpdateWindow:命令窗口刷新自身。

●GetMessage:从消息队列中获取消息。

●TranslateMessage:转换某些键盘消息。

●DispatchMessage:将消息发送给窗口过程。

●BeginPaint:开始在窗口的客户区绘制。

●GetClientWindow:获得窗口客户区的尺寸。

●SetTextColor:设置文本的颜色。

●DrawText:显示文本串。

●EndPaint:结束绘制。

●InvalidateRect:强制刷新指定的区域,程序Hello刷新整个窗口的客户区。

●PostQuitMessage:在消息队列中插入一条“退出”消息。

●DefWindowProc:执行默认的消息处理。

这些函数在头文件WINDOWS.H中都有原型的申明,具体的信息可以查阅MSDN (Microsoft Developer Network)中SDK平台的部分函数说明。除了用到的这些API函数外,还使用了在Windows头文件中定义的4个数据类型:MSG(消息结构)、WNDCLASS(窗口类结构)、PAINTSTRUCT(绘图结构)和RECT(矩形结构)。

1. 消息结构

消息结构定义一个用于发送的消息,其中包含消息的具体信息,在程序接收到消息后,根据其中包含的信息做出相应的处理。其结构声明如下:

typedef struct tagMSG {

HWND hwnd; // 获得消息的窗口句柄

UINT message; // 消息标志

WPARAM wParam; // 消息的附加信息

LPARAM lParam; // 消息的附加信息

DWORD time; // 消息的发送时间

POINT pt; // 当消息发送时,鼠标所处的屏幕位置

} MSG, *PMSG;

2. 窗口类结构

窗口总是在窗口类的基础上创建的,窗口类用来标识处理窗口消息的窗口过程。在一个窗口类的基础上可以创建多个窗口的实例,所以在程序创建窗口之前,必须先调用函数RegisterClass注册一个窗口类。该函数中只带有一个参数,它是一个指向类型为WNDCLASS的结构指针。其结构声明如下:

typedef struct _WNDCLASS {

UINT style; // 窗口类的风格

WNDPROC lpfnWndProc; // 指向窗口过程的指针

int cbClsExtra; // 分派给窗口类的扩展的字节数

int cbWndExtra; // 分派给窗口实例的扩展的字节数

HINSTANCE hInstance; // 窗口的实例句柄

HICON hIcon; // 类图标的句柄

HCURSOR hCursor; // 类鼠标指针的句柄

HBRUSH hbrBackground; // 刷新背景所用的画刷的句柄

LPCTSTR lpszMenuName; // 窗口类包含的菜单的名称

LPCTSTR lpszClassName; // 窗口类名

} WNDCLASS, *PWNDCLASS;

现在,结合程序Hello依次来看WNDCLASS结构中的各个域。

●第一个域语句:ws.style = CS_HREDRAW | CS_VREDRAW

这条语句使用C的按位“或”操作符组合了两个“类风格”标识符。有关的标识符是在WINUSER.H中定义的,可以查看该文件中以CS为前缀的标识符定义集合。在本程序中,使用的这两个标识符的意义是当窗口水平方向尺寸(CS_HREDRAW)发生改变时和当窗口的垂直方向尺寸(CS_VREDRAW)发生改变时,窗口都要完全刷新。这一点在改变窗口的尺寸时,可以明显地看到。无论窗口如何变化,文本总是出现在窗口的中央(因为在客户区输出文本时,定义将其显示在窗口的中央,每一次窗口的刷新都要执行此操作)。

●第二个域语句:ws.lpfnWndProc = (WNDPROC)WndProc

这条语句的作用是将窗口类的窗口过程设置为WndProc,这是在本程序中定义的第二个函数,用来处理基于这个窗口类创建的所有窗口的全部消息。在类定义中,实际上使用的是一个指向函数的指针,通过该指针调用同名函数。

●第三和第四个域语句:wc.cbClsExtra = 0;和wc.cbWndExtra = 0

这两条语句用于为程序预留空间,程序可以根据需要来使用它们。在本程序中没有使用到,所以赋值为零。

●第五个域语句:wc.hInstance = hInstance

这条语句指定了程序的实例句柄,该句柄可以从WinMain函数的第一个参数处获得。

●第六个域语句:wc.hIcon = LoadIcon( NULL, IDI_APPLICATION )

这条语句用于为所有基于这个窗口类建立的窗口设置一个图标。图标是一个小的位图图像,将出现在Windows任务栏中和窗口的标题栏的左端。用户可以定义自己的图标加载到程序中,也可以使用系统提供的图标。在本程序中,为简单起见,使用系统提供的应用程序的标准图标(ID为IDI_APPLICATION),使用函数LoadIcon将图标加载到应用程序中。该函数返回一个图表句柄。

●第七个域语句:wc.hCursor = LoadCursor(NULL, IDC_ARROW)

这条语句表示窗口载入一个预定义命名为IDC_ARROW的鼠标光标(形状为箭头),并返回该光标的句柄。在Win32 API中定义了一系列的鼠标光标,具体内容可以参考MSDN文档中Platform SDK/Windows User Interface/LoadCursor等内容。当程序启动且鼠标的位置处于窗口的客户区时,鼠标变成箭头形状。另外,也可以自定义鼠标光标的形状。

●第八个域语句:wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1)

这条语句指定了基于这个窗口类所创建的窗口的背景颜色。在Windows API中,用某一种颜色覆盖背景一般都需要用到画刷(brush),以指定的颜色来填充一个区域。在本程序中,使用了比窗口颜色稍亮的颜色作为画刷的颜色。在Windows 中还定义了一些标准的画刷,称为“备用画刷”(stock brush)。利用GetStockObject函数可以调用一个备用画刷。例如,

hBrush=GetStockObject(WHITE_ BRUSH),其中的WHITE_BRUSH就是一个标准的画刷

Win32 API应用程序框架结构(3)

●第九个域语句:wc.lpszMenuName = lpszAppName

这条语句指定窗口类的菜单,其中,lpszAppName指向存储菜单名字符串的指针。在本程序中没有用到菜单,所以该字段被设置为NULL。

●第十个域语句:wc.lpszClassName = lpszAppName

最后一个域给出了窗口类的类名。在提供的程序中,类名和窗口类的菜单名相同。

3. 矩形结构

矩形结构相对简单,它定义了四个LONG域,前两个表示矩形左上点的横坐标和纵坐标(通常用X和Y表示)的值,后两个表示矩形右下点的X,Y值。其结构声明如下:

typedef struct _RECT {

LONG left; // 左上点的X坐标

LONG top; // 左上点的Y坐标

LONG right; // 右下点的X坐标

LONG bottom; // 右下点的Y坐标

} RECT, *PRECT;

有关绘图结构的具体内容将在讲解GDI(图形设备接口,Graph Device Interface)时重点介绍。下一小节将具体介绍Windows消息机制,整个Windows 是以消息(Message)作为传递信息的手段的消息机制可以说是Windows的灵魂。

1.3.5 消息机制

1. 消息循环

在调用了UpdateWindows之后,窗口就会出现在显示器上,此时Windows就为程序维护一个“消息队列”。当Windows侦测到程序的用户键盘和鼠标输入数据时,就将此输入事件转化为一个“消息”,并将此消息放到程序的消息队列中。

程序通过执行被称为“消息循环”的代码从消息队列中取出消息。实现循环的程序代码如下:

while(GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

其中,变量msg是类型为MSG的结构,在前一小节中已经介绍过这个结构的有关信息。消息循环首先从消息队列中取出一个消息,其方法如下所示:

GetMessage(&msg, NULL, 0, 0);

它将取到的消息赋给一个指向名为msg的MSG结构的指针。第二、第三和第四个参数分别设置为NULL或者0,表示程序将接收它创建的所有窗口的所有消息。只要从消息队列中取出的消息的message域不为WM_QUIT(其值为0x0012),GetMessage就返回一个非零的值。

然后,进行一些键盘消息转换(在讲解有关键盘输入的章节中进行详细讨论),其方法是:

TranslateMessage( &msg );

最后,消息又将被转回Windows,Windows会将消息发送给适当的窗口过程进行处理,即Windows调用窗口过程(在程序Hello中是WndProc函数),其方法是:

DispatchMessage(&msg);

当处理完消息后,窗口过程又将控制返回给Windows,此时,Windows仍处在函数DispatchMessage的调用中。当得到返回后,Windows结束DispatchMessage 函数的调用,重新开始调用GetMessage函数从消息队列中获取消息。

从以上可以看出,消息只是在窗口过程和Windows之间传递,程序并不会直接调用窗口过程。如果要从程序调用自己的窗口过程,就要用到SendMessage函数,这在后续的章节中会重点讨论。

并不是所有的消息都会进入消息队列,加入消息循环。一般来说,进队的消息基本上是用户输入的结果(包括鼠标输入和键盘输入)。另外,进队的消息还包括时钟消息(WM_TIMER)、刷新消息(WM_PAINT)和退出消息(WM_QUIT)等。不进队的消息一般来自调用特定的Windows函数。例如,调用CreateWindow时,将直接给窗口过程发送一个WM_CREATE的消息;调用ShowWindow时,将直接给窗口过程发送名为WM_SIZE和WM_SHOWWINDOW的消息。

消息的循环和处理十分复杂,但绝大部分的消息处理都由Windows完成,而且是有规律可循的。消息其实只是应用程序与Windows交互的媒介,存在于窗口过程和Windows之中。

2. 消息及消息处理

窗口过程接收的每一个消息都是用数值标识的,也就是传递给窗口过程msg

结构中的message参数。在Windows头文件WINUSER.H中,为每个消息参数定义以“WM”(Window Message)为前缀的标识符。当然,也可以在自己程序的头文件中定义自己的消息参数。

一般来说,Windows程序员都会选择使用switch和case的结构来确定窗口过程接收到的是什么消息。窗口过程在处理消息时,必须返回零,所有窗口过程不予处理的消息都应该被传给函数DefWindowProc处理。事实上, DefWindowProc 并不是惟一处理其他消息的函数,在接触多文档时,还会碰到用于相似处理内容的函数。从函数DefWindowProc返回的值必须由窗口过程返回,函数只是将消息进行加工,具体工作还是要由Windows来完成。

在程序中,WndProc函数只处理三种消息:WM_PAINT,WM_KEYDOWN和WM_DESTROY。窗口过程的总体结构如下:

switch(uMsg)

{

// 定义有关变量

case WM_PAINT :

// 处理WM_PAINT消息的过程

break;

case WM_KEYDOWN :

// 处理WM_KEYDOWN消息的过程

break;

case WM_DESTROY :

// 处理WM_DESTROY消息的过程

break;

default :

return(DefWindowProc(hWnd, uMsg, wParam, lParam));

}

return(0L);

在上面结构的定义中,利用“default :”来调用DefWindowProc函数为窗口过程不予处理的消息提供的默认的处理是必需的。因为在窗口过程中,有很多很重要的工作都要Windows来完成。如果不能将这些消息及时地发送给Windows,则窗口的创建和维护就不会成功。用户可以将此函数去掉后再编译运行,就会发现其问题所在。

(1)WM_PAINT消息

当客户区的一部分或者全部变为无效时,将由这个消息通知程序“刷新”该区域。在很多情况下,客户区会变得无效,下面介绍经常遇到的几种情况。

●在创建窗口时,客户区将变得无效。

此时,整个客户区都是无效的。在程序运行函数UpdateWindow时,将发送第一个WM_PAINT的消息,指示窗口过程在客户区域画一些东西。

●改变应用程序窗口的大小时,窗口的整个客户区将变得无效。

因为在定义窗口类的第一个域style时,曾经将标志设置为CS_HREDRAW和

CS_VREDRAW,这一设置将指示Windows在窗口改变大小后,使整个窗口无效。此时,又将发送一个WM_PAINT的消息。

●在移动窗口并发生窗口重叠时,窗口客户区将变得无效。

此时,Windows将不会保存本窗口中被另外一个窗口覆盖部分的客户区内容。此时,窗口客户区将变成无效,发送一个WM_PAINT的消息。

除了这些由程序接收到外部变化和自动刷新之外,还可以通过函数强制刷新客户区的一部分或者全部,将在下一个消息中介绍这种方法。

对消息WM_PAINT的处理,一般都从BeginPaint函数调用开始,其调用方法是:

hdc=BeginPaint(hWnd, &ps);

结束消息WM_PAINT的处理,一般通过调用EndPaint函数完成,其调用方法是:EndPaint(hWnd, &ps);

在这两个调用中,第一个参数是程序的窗口句柄,第二个参数是指向类型为PAINTSTRUCT结构的指针。在调用函数BeginPaint成功时,程序将调用在窗口类中定义的背景画刷来将整个客户区刷新,并返回一个“设备环境句柄(hdc)”。所谓设备环境,是指物理输出设备(如显示器)及其设备驱动程序。在窗口的客户区画任何东西(包括文本和图形)都需要用到设备环境句柄。当程序调用了函数EndPaint后,就使设备环境句柄不再有效

框架结构完整施工方案

牙浪乡卡岗村幼儿园教学用房 施 工 方 案 黄南州德川建筑工程有限公司编制日期:2017年7月28日

一、施工组织设计编制说明 1、承担本工程施工的指导思想: 确保结构安全、满足使用功能、消灭质量通病、建设精品工程;科学管理保工期、周密策划保安全、统筹协调顾大局。 2、本工程的施工组织设计依据: 工程招标文件,设计图纸、招标答疑、地址勘察报告,现行国家建筑安装工程施工《规范》、《规程》、《标准》。以及青岛市建设委员会颁发的有关建筑规程、安全、质量等有关文件进行编制。 3、施工现场平面布置的原则: 尽量使用现有场地,并满足施工生产需要;尽力减少周围区域的正常工作及生活的干扰,保持周围的环境卫生;确保施工其间所有相关人员、财产的安全;在保证工程质量、工期、安全的前提下降低资源内耗。 二、工程概况 1、工程概况 本工程位于牙浪乡卡岗村幼儿园内。主体结构体系为钢筋混凝土框架结构体系,采用独立基础。地上一层,无地下室,建筑总高度为3.9米,室内外高差为300mm,上部结构的嵌固部位为基础顶部。 2、施工现场特征:施工现场"三通一平"条件已经具备,施工电源由总配电箱引入施工点,水源由水塔引至施工现场生活用水及施工用水。 三、工程质量保证措施及目标 1、质量保证措施 1.1、严格遵守本公司的质量方针和目标,建立工程质量责任控制保证体系。树立以质量为核心的经营管理指导思想,健全以质量为主线的经营管理体系,运用全面质量管理办法,重点作好施工工序控制、工程质量评审、物资材料管理等工作。 1.2、建立各级质量责任制:工程项目经理是质量责任者,质检员负责工程质量,施工队长、施工员、技术员三者协助经理抓好质量工作,各工序承担工序质量责任,各工序质量控制人员严格把好质量关。做到:坚持没有质量计划和组织设计不安排施工;坚持没有校验达标工程不竣工交付使用;坚持没有质量签证不能决算施工任务或承包合同。 1.3、优化施工方案:采用先进的施工工艺,科学的按施工进度合理调配劳动力。对段道工序都要建立严格的质量检验系统,遵守监督上道工序、保证本道工序、服务下道工序的要求,实行样板引路、以样板间、样板段或样板工序指导施工。 1.4、建立完善的质量管理规章制度,并层层落实,责任到人,做到严格执行奖罚制度。建立工序交接检验制度,开展自检、互检、工序匀接,做到上道完成工序不合格,下道工序不进行的原

构造辅助函数证明微分中值定理及应用

构造辅助函数证明微分中值定理及应用 摘要:构造辅助函数是证明中值命题的一种重要途径。本文给出了几种辅助函数的构造方法:微分方程法,常数K值法,几何直观法,原函数法,行列式法;并且举出具体例子加以说明。 关键字:辅助函数,微分方程,微分中值定理 Constructing auxiliary function to prove differential median theorem and its copplications

Abstract: Constructing auxiliary function is the important method to prove median theorem. This paper gives several ways of constructing auxiliary function:Differential equation, Constant K, Geometry law, Primary function law, Determinant law;and Gives some specific examples to illustrate how to constructing. Key words: Auxiliary function; Differential equation; Differential median theorem 目录 一:引言 (4) 二:数学分析中三个中值定理 (4) 三:五种方法构造辅助函数 (6) 1:几何直观法 (6)

2:行列式法…………………………………………………………………… .第7页 3:原函数法 (8) 4:微分方程法 (10) 5:常数k值法 (13) 四:结论 (15) 参考文献 (15) 致谢 (16) 一:引言 微分中值定理是应用导数的局部性质研究函数在区间上的整体性质的基本工具,在高等数学课程中占有十分重要的地位,是微分学的理论基础,这部分内容理论性强,抽象程度高,所谓中值命题是指涉及函数(包括函数的一阶导数,二阶导数等)定义区间中值一些命

框架结构施工要点

框架结构施工要点 框架结构是目前应用较多的结构形式之一,具有建筑平面布置灵活,使用空间大,便于分隔,延性较好等特点。由于施工质量不到位或使用年限过久导致的承载能力下降不容忽视,往往会造成严重安全隐患。下面整理了框架结构注意要点,一起来看看吧。 框架结构布置要点 横向承重布置 房屋平面一般横向尺寸较短,纵向尺寸较长,横向刚度比纵向刚度弱。将框架结构横向布置时,可以在一定程度上改善房屋横向与纵向刚度相差较大的缺点,而且由于连系梁的截面高度一般比主梁小,窗户尺寸可以设计得大一些,室内采光、通风较好。因此,在多层框架结构中,常采用这种结构布置形式。 纵向承重布置

框架结构纵向承重方案中,楼面荷载由纵向梁传至柱,横梁高度一般较小,室内净高较大,而且便于关系沿纵向穿行。此外,当地基沿房屋纵向不够均匀时,纵向框架可在一定程度上调整这种不均匀性。纵向框架承重方案的最大缺点是房屋的横向抗侧移刚度小,因而工程中很少采用这种结构布置形式。 双向承重布置 框架结构双向承重方案因在纵横两个方向中都布置有框架,因此整体性和受力性能都很好。特别适合对房屋结构整体性要求较高和楼面荷载较大的情况下采用。 框架剪力墙结构施工准备 为确保框架剪力墙结构施工的顺利进行,在正式开工前,需要做好以下准备工作。 技术交底 在施工之前组织各参建方参加工程设计图纸会审,要求施工单位必须明晰工程设计图纸中的关键性问题,了解框架剪力墙结构工程施工流程;施工单位要根据工程建设要求,结合自身的施工资源编制切实可行的施工方案,要求施工人员了解工程总进度计划,知晓分项工程的施工质量要求,以及应采取的技术安全措施,并制定施工技术方案,确保技术方案的可行性和先进性。 材料准备 根据工程建设要求,确定材料需用规格、数量、性能、质量要求以及到场时间等事项,科学安排材料有序进场,并由专人负责对材料进行质检验收。

孙鑫深入详解MFC学习笔记

Windows编程 一、#define的几个注意点 ①#与##的用法; #xxx将后面的参数xxx字符串化 xxx##yyy,将两个参数连接 ②\的用法 一行结束使用,表示一行未结束。 二、函数调用约定_stdcall _stdcall是Pascal方式清理C方式压栈,通常用于Win32Api中,函数采用从右到左的压栈方式,堆栈由它自己清理。在win32应用程序里,宏APIENTRY,WINAPI,都表示_stdcall,非常常见。 相对应的_cdecl,堆栈由main()函数或者其他函数清理。 C和C++程序的缺省调用方式则为__cdecl,下图为VC++6.0的默认设置,因此在不显式写明调用约定的情况下,一般都是采用__cdecl方式,而在与Windows API打交道的场景下,通常都是显式的写明使用__stdcall,才能与Windows API保持一致。 另外,还要注意的是,如printf此类支持可变参数的函数,由于不知道调用者会传递多少个参数,也不知道会压多少个参数入栈,因此函数本身内部不可能清理堆栈,只能由调用者清理了。 三、防止头文件重复包含----预编译 在写好的类的首位加上预编译代码,例如: #ifndef xxx_h #define xxx_h Class xxx { ... }; #endif 四、HDC、CDC、CClientDC、CWindowDC HDC是平台SDK提供的全局类,与设备上下文相关 CDC则是类似于封装在CWnd中的一个HDC。 CClientDC:继承于CDC,构造函数完成获取DC,析构函数完成释放DC。 CWindowDC:继承于CDC,构造函数完成获取DC,析构函数完成释放DC,在整个窗口上绘图 CMetaFileDC:图元文件设备描述环境类 创建:CMetaFileDC dc; dc.Create(); 接下来用一般dc的绘图操作,绘图的内容均会保存至图元文件中; HMETAFILE m_hMetaFile=dc.Close();//图元文件赋予数据成员显示图元文件:用一般dc的PlayMetaFile(m_hMetaFile)显示图元文件 窗口销毁时删除图元文件 SDK函数::DeleteMetaFile(m_hMetaFile) 五、OnDraw函数、OnCreate函数 OnDraw函数:窗口重绘的时候被框架类FrameWnd调用,响应WM_PAINT消息。 OnCreate函数:窗口建立的时候调用的函数,响应WM_CREATE消息。

框架结构施工方案

模板施工方案 、工程概况: 开来?都市丰景一标段位于武汉市汉阳区四新片区,是武汉龙河置业有限公司投资兴建的高层住宅楼,总用地面积82000吊,地上40层,地下1 层,建筑高度为116.3m。 地下部分由车库、水泵房、配电房、风机房等各类辅助设备用房组成;本工程建筑耐火等级为:一级。 柱耐火极限为3.0 小时; 梁耐火极限为2.0 小时;楼板、疏散楼梯、屋顶承重构件耐火极限为1.5 小时; 楼梯间、电梯井的耐火极限为2.0 小时;房间隔墙耐火极限为2.0 小时。 本工程建筑抗震设防类别为丙类(幼儿园为乙类);抗震设防烈度六度,地下防水等级H级(设计抗渗等级P6),建筑室内标高士0.000相当于绝对高程为22.00 m;建筑物耐久年限:主体结构为二级耐久年限,正常使用限为50年。 本工程由地下室及1#、2#楼组成,均为全现浇钢筋混凝土框剪结构。本工程高度级别为A级(主楼),抗震类别为丙类,抗震设防烈度为6度。 设计基本地震速度为0.07g,设计地震分组为第一组,结构抗震等级:剪力墙抗震等级为三级,框架抗震等级为三级。 高层主楼基础,地下室平面范围内的基础及无上部结构处的地下室基础连成一体形1#、2#楼桩筏基础,裙房基础均采用筏板基础(无上部结构的裙楼)。 、施工准备: (一)作业条件 1 、模板设计:根据工程结构型式和特点及现场施工条件,对模板进行设计,确定模板平面布置,纵横龙骨规格、数量、排列尺寸,柱箍选用的型式和间 距,梁板支撑间距,梁术节点、主次梁节点大样。验算模板和支撑的强度、刚度及稳定性。绘制全套模板设计图(模板平面布置图、分块图、组装图、加固大样图、节点大样图、零件加工图和非定型零件的拼接加工图)。模板的数量应模板设计时按流水段划分,进行综合

几种构造辅助函数的方法及应用

几种构造辅助函数的方法及应用 许生虎 (西北师范大学数学系,甘肃 兰州 730070) 摘 要:在对数学命题的观察和分析基础上给出了构造辅助函数的方法,举例说明了寻求 辅助函数的几种方法及在解题中的作用。 关键词:辅助函数 弧弦差法 原函数法 几何直观法 微分方程法 1. 引言 在解题过程中,根据问题的条件与结论的特点,通过逆向分析、综合运用数学的基本概念和原理,经过深入思考、缜密的观察和广泛的联想,构造出一个与问题有关的辅助函数,通过对函数特征的考查达到解决问题的目的,这种解决问题的方法叫做构造辅助函数法。 构造函数方法在许多命题证明中的应用,使问题得以解决,如在微分中值定理、泰勒公式、中值点存在性、不等式等证明。但构造辅助函数方法的内涵十分丰富没有固定的模式和方法,构造过程充分体现了数学的发现、类比、逆向思维及归纳、猜想、分析与化归思想。但如何通过构造,构造怎样的辅助函数给出命题的证明,是很难理解的问题之一,本文通过一些典型例题归纳、分析和总结常见的构造辅助函数方法及应用。 2. 构造辅助函数的七中方法 2.1“逆向思维法” 例1: 设()x f 在[]1,0 上可微,且满足 ()()?=2 1 21dx x xf f ,证明在][1,0内至少有一点θ,

使()() θθθf f -='. 证明:由所证明的结论出发,结合已知条件,探寻恰当的辅助函数. 将()() θθθf f '变为()()0='?+θθθf f ,联想到()[]()()θθθθf f x xf x '?+='=,可考虑 辅助函数 ()()[].1,0,∈=x x xf x F 因为()()ξξf f =1 , 而对于()x F ,有()()ξξξf F =,()().11f F = 所以,()()1F F =ξ ,由罗尔定理知,至少存在一点()1,ξθ∈,使得()0='θF 即:()() θθθf f -='. 证毕 2.2 原函数法 在微分中值定理(尤其是罗尔定理)求解介值(或零点)问题时要证明的结论往往是某一个函数的导函数的零点,因此可通过不定积分反求出原函数作为辅助函数,用此法构造辅助函数的具体步骤如下: (1)将要证的结论中的;)(0x x 换或ξ (2)通过恒等变换,将结论化为易积分(或易消除导数符号)的形式; (3)用观察法或凑微分法求出原函数(必要时可在等式两端同乘以非零的积分因子),为简便起见,可将积分常数取为零;

框架结构主体施工方案

第一章框架结构主体施工方案 第一节施工工艺流程 框架结构层施工工艺流程: 抄平、放线→柱筋制绑(钢筋隐蔽)→支柱模板(模板补缝,复核)→支梁底模板(模板检查、校正、复核)→制绑梁筋(复核)→支梁侧模及板模(模板检查、校正、复核)→制绑板筋(检查、验收、签字)→浇灌柱梁板砼,取样(养护)→反复循环进行。 第二节模板工程 一、模板、支模架选材及支设方法 1、墙柱模 支撑架必须及梁架及楼板满堂架连成整体。 2、梁模 采用12厚木胶板,梁底模按3/1000起拱(当梁净跨大于4m 时)。当梁高≥700时,设对拉螺栓,其间距宜在0.5~0.7m。梁采用钢管支撑承重,其立杆间距800,对于大于800的梁,在梁底加设一根立杆支撑,支撑架横杆步距为1200~1500,并设扫地杆和剪刀撑。 3、楼板模板 楼板模板采用12厚木胶板,辅以50×80木枋,间距≤300。板承重架采用满堂钢管脚手架,立杆间距1000*1000。 4、楼梯模板 (1)模板选择:

底模采用木胶板,侧模采用木模。 a、楼梯模板施工前应根据实际层高放样,确定楼梯板底模高度和踏步平面、立面位置。 安装顺序:立平台梁模板→立平台板模板→钉托木,支搁栅→支牵杆、牵杆撑→支外侧模→钉踏及侧模→钉反三角木。 b、搭设竖向脚手架和水平连系杆。 c、搭设支底模的纵横向钢管,铺楼梯底模,模板采用12厚木模板。 d、等绑扎好楼梯钢筋后安装楼梯外帮侧板,钉好固定踏步侧板的挡木。 e、在侧板处用套板画出踏步位置线。 f、安装踏步立模,模板高度为楼梯踏步高度减去模板厚度,模板顶为踏步平面,将踏步立模和两边侧模固定。 g、在踏步模上每米固定三角木,每隔三个踏步用对拉螺栓φ14将楼梯底板和踏步模板拉紧固定,为周转使用,对拉螺栓套上管。 二、模板及其支架必须符合下列规定: 1、墙柱模支撑采用钢管及梁板支承架连成整体。 2、梁板:本工程现浇梁板面积较大,周转材料用量大,针对这一特点,为了缩短工期、加快周转材料周转,降低造价,梁板模采用快拆体系。 3、为保证结构几何尺寸和相对位置的准确性,模板各部分尺寸必须及设计相符。模板和支架必须具有足够的强度、刚度和稳定性。

CRichEditCtrl

CRichEditCtrl MFC Library Reference Using CRichEditCtrl(https://www.doczj.com/doc/624865088.html,/tie/7576199.html)rich edit控件是用户能够输入和编辑文本的窗口。文本能被指定字符和段落格式,并且也能包含嵌入式OLE对象。rich edit 控件在MFC中通过CRichEditCtrl类描绘。关于哪些你想知道更多?RichEdit控件概述 如果你在对话框中使用rich edit控件(不管你的程序是SDI,MDI,还是基本对话框),你必须在对话框显示之前调用AfxInitRichEdit一次。调用此函数的典型位置 在你的程序的InitInstance成员函数中。你不必每次显示对话框时调用它,仅仅第一次就可以了。如果你使用CRichEditView你不必调用 AfxInitRichEdit.Rich edit控件(CRichEditCtrl)为格式化文本提供程序接口。然而,一个程序必须实现任一用户接口组件,这个组件对于用户格式化操作可用是必要 的。那就是,Rich edit控件支持选定文本的字符或段落属性的改变。字符属性

的一些例子就是黑粗体,斜体,字体系列,和点大小。段落属性的例子如对齐,页边空白,和移字键 (英文原文:tab stops.表示在rich edit中按下tab键光标会移动一段距离)。然而,这是给你提供的用户接口,不管那是一个工具条按钮,菜单项,或是一个格式化字符对话框。也有函数对目 前选择查询richedit控件。使用这些函数显示当前属性设置,比如,设置一个选定标记在用户接口上,如果当前选择是黑粗体字符格式属性。参见CharacterFomatting和paragraph formatting查看更多字符段落格式化信息。rich edit控件支持几乎所有多行编辑控件( multiline edit controls)的操作和通知消息。因此,使用EDIT控件的应用程序很容易的变换为使用RICH EDIT控件。附加的消息和通知(notifications)能使程序访问richedit的其它特性。参看CEdit查看编辑控件消息。与rich edit控件有关的类 CRichEditView, CRichEditDoc, 和CRichEditCntrItem类提供在MFC的文档/视图结构环境内的RICH EDIT控件的功能。CRichEditView保持着文本和文本的格式化特性。CRichEditDoc保持着视图中OLE客户项的序列。CRichEditCntrItem提供对OLE客户项的container-side

三层框架结构模板施工方案

GDAQ21101 模板安全专项施工方案 工程名称: 工程地点: 总承包单位: (公章) 编制人:年月日 审核人:年月日 审批人:年月日 (企业技术负责人)

模板工程施工方案 一、编制说明和编制依据 1、编制说明 本施工方案是对《某某》工程施工组织设计的深化和补充,以便能直接指导现场施工。 2 、编制依据 本工程施工组织设计编制依据: 1)某某《施工组织设计》 2)某某工程《工程承包合同》 3)某某工程施工图 4)、本工程主要采用规范目录 A、《工程测量规范》 GB50026-2007 B、《工程测量基本术语标准》 GB/T50228-2011 C、《建筑施工扣件式钢管支模架安全技术规范》JGJ130-2011 D、《施工现场临时用电安全技术规范》 JGJ46-2005 E、《建筑机械使用安全技术规程》 JGJ33-2012 F、《建筑施工安全检查标准》 JGJ59-11 G、《建筑施工安全质量标准化达标实施手册)》 一、工程概况 工程名称:某某 结构类型:框架结构

建设单位:某某有限公司 设计单位:某某建筑设计院有限公司 监理单位:某某监理有限公司德庆分公司 施工单位:某某工程有限公司 工程地址: 本工程由有限公司投资兴建,该工程由建筑设计院有限公司设计。建筑规模:本工程的座为低层住宅,总建筑面积 m2,框架结构,地上为3层,建筑高度12.44m,地下一层,室内相对标高±0.000相当于测量图绝对标高19.8m。 三、施工准备 施工准备工作是工程顺利进行的的重要保证,为确保基础工程施工顺利进行,要做好以下准备工作: 1、熟悉施工规范及施工工艺。 2、仔细阅读施工图纸、图纸会审记录及设计变更。 3、对作业人员进行安全技术交底。 本工程每一道工序开工前,均需进行安全技术交底,安全技术交底是我公司技术管理的一个重要制度,是保证工程质量的重要因素,其目的是通过技术交底使参加施工的所有人员对工程施工要求做到心中有数,以便科学地组织施工和按合理的工序、工艺进行施工; 安全技术交底各专业均采用三级制,即项目部项目技术负责人→专业工长→各班组长。安全技术交底必须有书面文字及图表,级级交底签字,工程项目技术负责人向专业工长进行交底要求细致、齐全、完善,并要结合具体操作部位、关键部位的质量要求、操作要点及注意事项等进行详细的讲述交

《网络程序设计》复习题

1、什么叫套接字?套接字按通信性质可以分为哪两类? 2、理解线程的创建与使用方法,并能应用到程序设计中。 3、异构环境下的网络程序设计需要考虑哪些问题? 4、为什么在数据结构struct sockaddr_in中,成员变量sin_addr和sin_port需要转换为网络字节顺序,而sin_family不需要呢? 5、从网络编程的角度来简述和比较IP地址和端口的作用。 6、为什么网络编程时需要考虑字节顺序问题? 7、WinSock编程中需要哪些文件? 8、UDP程序的工作模型隐含着通信标识五元组的建立过程。这五元组在UDP的客户与服务端是由哪些函数分别确定的? 9、什么是阻塞与非阻塞通信?请解释两者的区别。 10、简述各种类型数据的发送与接收处理的方法。 11、简述基于UDP的客户机/服务器端socket编程流程。 12、什么是通信三元组和五元组?三元组和五元组每个元素在网络连接中起到什么作用? 13、为什么服务端在TCP通信过程中需要调用bind( )函数而客户端不需要?为什么客户机通常不需要绑定自己的端口号? 14、简述套接字Select模型原理,以及select模型的优势和不足。 15、简述阻塞模式服务器和客户端工作流程,以及阻塞模式套接字的优势和不足。 16、在实际应用中,很多TCP服务器程序在非正常退出时,如果立即重启服务器进程则会发生绑定服务器端口失败的错误,从而无法启动服务器进程,但等待一段时间后就可以了。为什么会发生这种情况呢?如何解决这个问题(或采取什么措施可以立即重启服务器进程)?(要求掌握setsockopt()函数的用法) 17、TCP程序的工作模型隐含着通信标识五元组的建立过程。这五元组在TCP的客户与服务端是由哪些函数分别确定的? 18、accept( )为什么要返回一个套接口?或者说,为什么要为每一个连接创建一个套接口来处理?UDP 服务器端为什么不需要多个套接口? 19、理解生产者-消费者模型,理解线程的同步与互斥方法(event和critical-section),并能应用到程序设计中。 20、采用阻塞式I/O模型时,套接字函数recv()的返回值有哪几种?分别对应什么情况? 21、closesocket()函数和shutdown()函数有何差别? 22、什么是TCP的三次握手机制?为什么要使用TCP的三次握手机制? 23、服务器端并发的两种模型及编程实现。 考试形式:闭卷 考试时间:120分钟 考试题型:选择题(2’×10=20’)、简答题(10’×6=60’)、程序设计题(20’)

框架结构施工组织方案

框架结构施工方案 技术准备 1:项目经理部组织人员建立测量组,检查验收红线桩,做好施工现场平面、高程控制桩的设置,以及自然地坪高程网络测量记录等测量准备工作。 2:组织项目经理部施工管理人员学习有关图集、图纸、施工规范以及技术文件。 3:公司主任工程师牵头,组织学习工程图纸、审查工作,做好图纸会审、设计交底工作。 4:翻样进行本工程钢筋、铁件、模板的翻样工作。 5:图纸会审内容,在开工前完善施工组织设计的调整编制工作。 6:各分部项目工艺卡,以及主要分项工程冬雨季施工措施。 7:品加工(门、窗及埋件等)加工、订货计划、明确进场时间。 现场准备 1:主要求的时间,组织及时进场,进一步按计划进行现场改造。 2:现场给定的水、电源,按施工现场平面布置图布置现场。 3:设计有计划地组织机械料具进场。 4:施工队伍进场施工。 5:部施工员实施定位放线,设置坐标控制网并埋设控制标桩。 6:场地做好排水组织。 7:配备消防器具,确保消防安全。 8:移动电话,连接天气预报通讯台。 施工程序 基础工程→主体结构(柱梁板)→屋面板→填充墙→屋面工程→楼地面工程→内墙粉刷→门窗工程→外墙粉刷→零星工程→室外工程。 注:其中水电、设备安装穿插施工。 主体结构施工方案

本工程为五层框架结构,由于层高较高,因此柱子砼需分层浇筑。其施工流程为:框架柱钢筋绑扎→支模→浇砼柱→柱(屋)面梁板支模→柱砼浇灌→楼(屋)梁板钢筋绑扎→楼(屋)面梁板砼浇灌→轴线标高垂直传递和复测。 脚手架工程 本工程外脚手架均用ф48钢管搭设而成。 本工程全高为17.4米,局部达到22.17米,所以用四根6米钢管对接,搭设正式外脚手前,必须认真处理其下部的地基,使之密实,并检查钢管、扣件的质保书是否符合要求;搭设时每一立杆的下部垫50mm厚,300mm宽,长度不得小于1.5m的木板。 脚手架内外杆的间距1m,排距1.5∽1.8m,步高1.8m,内设杆距墙面的距离为20∽30cm,大小横杆的两端伸出构架10∽20cm,落在屋面上的脚手架下端要加垫木。外脚手架必须随着施工层的升高而超高一层搭设,搭设好的脚手架应及时在其外侧满挂密目安全网,挂安全网时,须用不小于10#的镀锌9.1钢筋工程 钢筋制作: 钢材进场后必须按要求取样试验,送试验室进冷拉、冷弯试验。质量不合格、不检验的钢材严禁使用,钢材下料严格按图纸施工,要根据不同钢筋长短搭配,统筹排料,减少接头,如需钢筋代换,必需经设计院同意方可。 钢筋焊接: 钢筋焊接前首先进行可焊性试验,试验合格后方可成批焊接,并且按规定抽样送检,柱主筋采用电渣压力焊,梁筋采用闪光对焊,板筋采用电弧焊。 钢筋绑扎: 钢筋绑扎严格按规范要求施工,严禁漏扎,绑扎接头的搭接长度,接头的布置必须符合设计要求。为了保证梁、柱节点处箍筋安放质量,可按下列方法施工,当梁骨架钢筋在楼盖上绑扎时,将预先焊好的成品“套箍(按设计要求,几个箍筋按规范间距焊接而成)放入,以便当梁骨架沉入时能满足设计要求的间距施工。对135度/135度的箍筋施工,因其安放难度较大,制作时先做成135度/90度的箍筋,待其绑扎好后再用小扳手将90度弯钩扳成135度,所有板负弯筋必须用小马凳搁置,浇灌砼时,严禁破坏小马凳,确保负弯筋的位置正确。 钢筋保护层: 基础保护层为:有垫时保护层是40mm,无垫层时保护层是50 mm;柱梁的保护层均为25mm,板的保护层为15mm,在工程开工时,预先制作一部分与砼同标号的砂浆垫块,垫块厚分成25mm和15mm,中间预埋1个扎丝,以便柱梁钢筋施工时使用。

4:一个经典的多线程同步问题汇总

一个经典的多线程同步问题 程序描述: 主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep(50) -> 全局变量++ -> sleep(0) -> 输出参数和全局变量。 要求: 1.子线程输出的线程序号不能重复。 2.全局变量的输出必须递增。 下面画了个简单的示意图: 分析下这个问题的考察点,主要考察点有二个: 1.主线程创建子线程并传入一个指向变量地址的指针作参数,由于线程启动须要花费一定的时间,所以在子线程根据这个指针访问并保存数据前,主线程应等待子线程保存完毕后才能改动该参数并启动下一个线程。这涉及到主线程与子线程之间的同步。 2.子线程之间会互斥的改动和输出全局变量。要求全局变量的输出必须递增。这涉及到各子线程间的互斥。 下面列出这个程序的基本框架,可以在此代码基础上进行修改和验证。 //经典线程同步互斥问题 #include #include #include long g_nNum; //全局资源 unsigned int__stdcall Fun(void *pPM); //线程函数 const int THREAD_NUM = 10; //子线程个数 int main() { g_nNum = 0;

HANDLE handle[THREAD_NUM]; int i = 0; while (i < THREAD_NUM) { handle[i] = (HANDLE)_beginthreadex(NULL, 0, Fun, &i, 0, NULL); i++;//等子线程接收到参数时主线程可能改变了这个i的值} //保证子线程已全部运行结束 WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE); return 0; } unsigned int__stdcall Fun(void *pPM) { //由于创建线程是要一定的开销的,所以新线程并不能第一时间执行到这来int nThreadNum = *(int *)pPM; //子线程获取参数 Sleep(50);//some work should to do g_nNum++; //处理全局资源 Sleep(0);//some work should to do printf("线程编号为%d 全局资源值为%d\n", nThreadNum, g_nNum); return 0; } 运行结果:

框架结构模板工程施工方案

框架结构模板工程施工方案 目录 1工程概况 2编制依据 3施工流程的划分 4模板设计与安装 4.1基础梁模板 4.1.1基础梁模板 4.2柱模板 4.2.1主要技术参数 4.2.2柱模设计 4.3柱、梁节点模板设计 4.4顶板模板设计 4.5梁模板设计 4.6楼梯模设计 4.7门、窗、洞口模板设计 4.8顶板模板和梁板模板安装 4.9柱模板安装 4.10模板安装质量要求 4.11墙板、梁、顶板模板示意图

4.12模板拆除 5质量保证措施 5.1模板工程质量控制程序 5.2模板工程质量 6安全生产及文明施工保证措施 7成品保护 附1 材料投入计划表 附2 模板计算书 1工程概况 1、本工程为门源县高铁维稳中心业务用房建设项目工程,建筑面积约为1780 平方米。 建筑层数、高度:地上三层。 2、结构类型:钢筋混凝土框架结构。独基基础。 2编制依据 2.1 建设工程安全生产管理条例; 2.2 建筑施工扣件式钢管脚手架安全技术规范;

2.3 钢管扣件水平模板的支撑系统安全技术规程; 2.4 混凝土结构工程施工及验收规范; 2.5 建筑施工高处作业安全技术规范; 2.6 施工现场临时用电安全技术规范; 2.7 建筑施工安全检查标准; 2.8 PKPM相关软件; 2.9 本工程施工图纸。 3施工流程的划分 根据工程情况布局该工程设为一个区域组织施工,将其分为一个施工段即。 4模板设计与安装 根据本工程工期紧、造型繁杂,弧形窗上混凝土墙多、小跨度坡屋面、梁多楼板板面小及楼层少等特点;需一次性全部投入模板量,模板只周转一次造成施工成本增加等缺陷; 梁高大于600mm的需增加一道Φ12的对拉螺栓间距为1200MM,防止胀模。弧形窗上的混凝土墙按纵向450mm,竖向500MM的距离加设Φ12的对拉螺栓。 4.1基础承台、连梁 4.1.1基础承台模板 4.1.1.1本工程基础为独立基础棱台结构,模板采用12MM厚木胶板, 竖肋用50100 φ?的钢管。 ?木方,围檩采用双排48 3.5 4.2柱模板 4.2.1主要技术参数

中值定理构造辅助函数

微分中值定理证明中辅助函数的构造 1 原函数法 此法是将结论变形并向罗尔定理的结论靠拢,凑出适当的原函数作为辅助函数,主要思想分为四点:(1)将要证的结论中的ξ换成x ;(2)通过恒等变形将结论化为易消除导数符号的形式;(3)用观察法或积分法求出原函数(等式中不含导数符号),并取积分常数为零;(4)移项使等式一边为零,另一边即为所求辅助函数()F x . 例1:证明柯西中值定理. 分析:在柯西中值定理的结论 ()()'()()()'()f b f a f g b g a g ξξ-=-中令x ξ=,得()()'()()()'()f b f a f x g b g a g x -=-,先变形为()()'()'()()()f b f a g x f x g b g a -=-再两边同时积分得 ()()()()()() f b f a g x f x C g b g a -=+-,令0C =,有() ()()()0()()f b f a f x g x g b g a --=-故()()()()()()() f b f a F x f x g x g b g a -=--为所求辅助函数. 例2:若0a ,1a ,2a ,…,n a 是使得1200231 n a a a a n ++++=+…的实数.证明方程20120n n a a x a x a x ++++=…在(0,1)内至少有一实根. 证:由于2231120120()231n n n n a a a a a x a x a x dx a x x x x C n +++++=++++++?…… 并且这一积分结果与题设条件和要证明的结论有联系,所以设 231120()231 n n a a a F x a x x x x n +=+++++…(取0C =),则 1)()F x 在[0,1]上连续 2)()F x 在(0,1)内可导 3)(0)F =0, 120(1)0231 n a a a F a n =++++=+… 故()F x 满足罗尔定理的条件,由罗尔定理,存在(0,1)ξ∈使'()0F ξ=,即231120()'0231 n n x a a a a x x x x n ξ+=++++=+…亦即20120n n a a a a ξξξ++++=….

数据库常用函数

数据库常用函数

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份和还原 备份:exp dsscount/sa@dsscount owner=dsscount file=C:\dsscount_data_backup\dsscount.dmp log=C:\dsscount_data_backup\outputa.log 还原:imp dsscount/sa@dsscount file=C:\dsscount_data_backup\dsscount.dmp full=y ignore=y log=C:\dsscount_data_backup\dsscount.log statistics=none 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) CREATE TABLE ceshi(id INT not null identity(1,1) PRIMARY KEY,NAME VARCHAR(50),age INT) id为主键,不为空,自增长 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围

CSerialPort类解析

CserialPort类的功能及成员函数介绍 CserialPort类是免费提供的串口类,Codeguru是一个非常不错的源代码网站CserialPort类支持线连接(非MODEM)的串口编程操作。 CserialPort类是基于多线程的,其工作流程如下:首先设置好串口参数,再开启串口检测工作线程,串口检测工作线程检测到串口接收到的数据、流控制事件或其他串口事件后,就以消息方式通知主程序,激发消息处理函数来进行数据处理,这是对接受数据而言的,发送数据可直接向串口发送。 介绍几个经常用到的函数: 1、串口初始化函数InitPort 这个函数是用来初始化串口的,即设置串口的通信参数:需要打开的串口号、波特率、奇偶校验方式、数据位、停止位,这里还可以用来进行事件的设定。如果串口初始化成功,就返回TRUE,若串口被其他设备占用、不存在或存在其他股占,就返回FALSE,编程者可以在这儿提示串口操作是否成功如果在当前主串口调用这个函数,那么pPortOwner可用this指针表示,串口号在函数中做了限制,只能用1,2,3和4四个串口号,而事实上在编程时可能用到更多串口号,可以通过通过注释掉本函数中“assert(portur>0&&portnr<5)”语句取消对串口号的限制。 if (m_ComPort[0].InitPort(this,1,9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512)) //portnr=1(2),baud=9600,parity='N',databits=8,stopsbits=1,

//dwCommEvents=EV_RXCHAR|EV_RXFLAG,nBufferSize=512 { m_ComPort[0].StartMonitoring(); //启动串口监视线程 SetTimer(1,1000,NULL); //设置定时器,1秒后发送数据} e lse { CString str; str.Format("COM1 没有发现,或被其它设备占用"); AfxMessageBox(str); } 2、启动串口通信监测线程函数StartMonitoring() 串口初始化成功后,就可以调用BOOL StartMonitoring()来启动串口检测线程,线程启动成功,返回TRUE。 BOOL CSerialPort::StartMonitoring() { if (!(m_Thread = AfxBeginThread(CommThread, this))) return FALSE; TRACE("Thread started\n"); return TRUE; } 注意这个函数一旦调用,就会建立一个线程,这个线程一直不会结束,调用StopMonitoring ()只是将这个线程挂起。 3、暂停或停止监测线程函数StopMonitoring() 该函数暂停或停止串口检测,要注意的是,调用该函数后,串口资源仍然被占用 // // Suspend the comm thread // BOOL CSerialPort::StopMonitoring() { TRACE("Thread suspended\n"); m_Thread->SuspendThread(); return TRUE; } 4、关闭串口函数ClosePort() 该函数功能是关闭串口,释放串口资源,调用该函数后,如果要继续使用串口,还需要调用InitPort()函数。 这里有一个问题,在以前的版本中,如果调用了StartMonitoring函数,关闭串口后,再打开就会出现问题,及网上所说的关闭死锁问题。找了大量资料后,

16种常用数据分析方法66337

一、描述统计 描述性统计是指运用制表和分类,图形以及计筠概括性数据来描述数据的集中趋势、离散趋势、偏度、峰度。 1、缺失值填充:常用方法:剔除法、均值法、最小邻居法、比率回归法、决策树法。 2、正态性检验:很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。 二、假设检验 1、参数检验 参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验。 1)U验使用条件:当样本含量n较大时,样本值符合正态分布 2)T检验使用条件:当样本含量n较小时,样本值符合正态分布 A 单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别; B 配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似; C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。 2、非参数检验 非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。 适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。

A 虽然是连续数据,但总体分布形态未知或者非正态; B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下; 主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。 三、信度分析 检査测量的可信度,例如调查问卷的真实性。 分类: 1、外在信度:不同时间测量时量表的一致性程度,常用方法重测信度 2、内在信度;每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如 何,常用方法分半信度。 四、列联表分析 用于分析离散变量或定型变量之间是否存在相关。 对于二维表,可进行卡方检验,对于三维表,可作Mentel-Hanszel分层分析。列联表分析还包括配对计数资料的卡方检验、行列均为顺序变量的相关检验。 五、相关分析 研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。 1、单相关:两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量; 2、复相关:三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以上的自变量和因变量相关; 3、偏相关:在某一现象与多种现象相关的场合,当假定其他变量不变时,其中两个变量之间的相关关系称为偏相关。 六、方差分析

相关主题
文本预览
相关文档 最新文档