VB6-Ch06

合集下载

VB6中访问Web Service的探讨

VB6中访问Web Service的探讨
摘要 : 于S 基 OA框 架原 理 , 论 在 VB 讨 6中如 何 对 发 布 的服 务进 行 访 问 , 而 给 出一 种 快 速 实现 V 6开发 的 系统 扩 展 的 模 式 。 进 B
关 键 词 :OA框 架 ; ml t 议 ; O 组 件 ; bS ri ;op S X Ht p协 C M We evc Sa e
a dIfr t nE gn in e g eP toe m l g, h n d b i0 70 ) n nomai n  ̄r g Ch n d erl o i u Col e C e g e He e, 6 00 e
Ab ta t sr c :On te b ss0 OA rme r i cpe fh w t ii s rie ee sd i 6 h sp o iigarpi x a so ft es se t h a i fS fa wo kpr ilso o ovst evc srlae nVB ,tu rvdn a d e p n in o h y tm o n
维普资讯
科技信息
0计 算机与信息拉术0
S IN E IF R T O C E C N O MA I N
20 06年
第6 期
V 6 B 中访问 We ev e bSri. c 的讨
关 颖 , 费雅洁 ’ 李 晓辉
(、 1沈阳工程学院信息工程系 辽宁 沈阳 1 0 3 ; 、 1 62 承德石油高等专科学校计算机与信息工程系 河北 承德 0 7 0 ) 1 6 0 0
t eDic sin o stngW e e vc n VB6 h s u so fVii i b S r iei
GUA n 1 F I ・il L a - u2 N Yig . E j , I o h i Ya e Xl

数据手册_HR6P60HL_Datasheet_C V2.2

数据手册_HR6P60HL_Datasheet_C V2.2

关于芯片的开发环境
海尔 MCU 芯片具有完整的软/硬件开发环境,并受知识产权保护。选择上海海尔集成电路有限公司或其指 定的第三方公司的汇编器、编译器、编程器、硬件仿真器开发环境,必须遵循与芯片相关的规定和说明。
注:在产品开发时,如遇到不清楚的地方,请用下述联系方式与上海海尔集成电路有限公司联系。
V2.2 版权所有©上海海尔集成电路有限公司
关于芯片的 ESD 防护措施
海尔 MCU 芯片具有满足工业级 ESD 标准保护电路。 建议用户根据芯片存储/应用的环境采取适当静电防护 措施。应注意应用环境的湿度;建议避免使用容易产生静电的绝缘体;存放和运输应在抗静电容器、抗静 电屏蔽袋或导电材料容器中;包括工作台在内的所有测试和测量工具必须保证接地;操作者应该佩戴静电 消除手腕环手套,不能用手直接接触芯片等。
HR6P60HL 数据手册
海尔 MCU 芯片使用注意事项
关于芯片的上/下电 海尔 MCU 芯片具有独立电源管脚。当 MCU 芯片应用在多电源供电系统时,应先对 MCU 芯片上电,再 对系统其他部件上电;反之,下电时,先对系统其他部件下电,再对 MCU 芯片下电。若操作顺序相反则
可能导致芯片内部元件过压或过流,从而导致芯片故障或元件退化。具体可参照芯Hale Waihona Puke 的数据手册说明。关于芯片的时钟
海尔 MCU 芯片具有内部和外部时钟源。内部时钟源会随着温度、电压变化而偏移,可能会影响时钟源精 度;外部时钟源采用陶瓷、晶体振荡器电路时,建议使能起振延时;使用 RC 振荡电路时,需考虑电容、 电阻匹配; 采用外部有源晶振或时钟输入时, 需考虑输入高/低电平电压。 具体可参照芯片的数据手册说明。
3. 2
第 4 章 4. 1 4. 2 4. 3 4. 4 4. 5

HC-06用户手册V2.0_160301

HC-06用户手册V2.0_160301

HC-06 蓝牙串口通信模块 用户手册 V2.0Rev 22.0~2013/4/1 2013/4/1~2016/2/22 2016/2/26~ Linvor1.5 Linvor1.8 V2.0DRAWN BY : Ling Xin MODEL : HC-05(主从一体)CHECKED BY : Eric Huang APPD. BY :SimonMok描述:BC04 外置 8M Flash 模块蓝牙模块HC-05、HC-06、HC-08无线模块HC-11、HC-12UART (默认) 9600 参数架 HC-USB-PPIN (默认) 1234 MODE (默认)从机带底板模块USB 转TTL 接口HC-05-USB 、HC-06-USB HC-11-USB新版模块带有蓝牙指示灯(靠近模块第1脚)。

模块的22脚LED_CON是指示灯控制脚,该脚接地,蓝牙指示灯关闭;该脚悬空,蓝牙指示灯亮。

如果要调整灯的亮度,可以在该脚接一个1K~47K的电阻到模块的31脚LED2,电阻越小,灯越亮。

贴片炉温参考建议首次大批量贴片生产的厂家,先过炉20~30片模块,检查炉温是否合适建议贴片锅炉炉温不得超过参考图温度,二次贴片降低5度左右,夏天可以再适当降低温度供电电压3.1~4.2V 工作电流不大于50mA(以实测为准) 尺寸大小 27mm*13mm*2mm存储温度:-40℃ 至+85 ℃,工作温度:-25℃ 至+75℃ 数字 2.4GHz 无线收发射内置 2.4GHz 天线, 用户无需调试天线蓝牙 2.0 带 EDR, 2Mbps-3Mbps 空中波特率 CSR BC04 蓝牙芯片技术支持Android、WINXP、WIN7数据收发通过UART串口收发HC-06封装下载:安卓串口助手APP下载:PC串口助手下载:注:蓝牙模块的PIN2:UART-RXD不带上拉,如果单片机TXD无上拉能力的话需要在模块的UART-RXD脚上接个上拉电阻,这个很容易被用户忽略。

注射用维生素B6工艺验证方案0.2

注射用维生素B6工艺验证方案0.2

验证报告编号:2305·429-00注射用维生素B6工艺验证方案起草人:日期:年月日审核人:日期:年月日批准人:日期:年月日×××药业有限公司注射用维生素B6(0.2g规格)生产工艺验证方案目录2.验证目的3.验证范围4. 验证小组成员及职责范围4.1 验证小组成员4.2 验证小组成员职责范围5.验证进度计划6.粉针主要生产设备一览表7.生产洁净区的划分及工艺流程8.生产和检验标准文件的引用9.产品生产工艺过程综合指标确认10.验证内容11. 验证条件监控12.拟订验证周期13. 验证结果评价与结论14.验证会签1 概述:本公司生产的注射用维生素B6,其规格为0.2/瓶。

为了证明在执行SP-MF-000-000-00注射用维生素B6生产工艺规程的情况下,能稳定地生产出符合质量标准的产品。

在这之前验证小组已对空调净化系统、纯化水和注射用水系统,以及在线设备分别进行了验证合格,同时对生产线也进行了验证合格,所以本方案主要就该产品生产工艺规程及其生产过程和最终产品质量等进行验证并作出评价。

2目的:为了证明在执行SP-MF-000-000-00注射用维生素B6生产工艺规程的情况下,连续生产三批,最终产品稳定性、可靠性并符合标准要求。

3 范围: 本验证方案适用于冻干车间的厂房、设施、设备、工艺条件下注射用维生素B6(0.2g规格)的生产,当上述条件发生改变时,应重新验证。

4 验证小组成员及职责范围:4.1验证小组成员:4.2.1制造部:负责起草验证方案和有关规程,按批准的验证方案起草验证方案,组织培训考核人员,组织实施验证并同时收集验证资料,会签验证报告。

4.2.2 质量部:检验方法验证、取样、检验、结果评价,结果评价方案,验证文件的文件管理,对供应商的确认。

QA:负责悬浮粒子、沉降菌主要工序温度、相对湿度及压差检查、及设备、设施的无菌、原辅料、内外包材、中间产品、成品取样。

用VB6_0实现PC机与智能仪表的远距离串行通信

用VB6_0实现PC机与智能仪表的远距离串行通信

用 VB6. 0 实现 PC 机与智能仪表的远距离串行通信Ξ
周耿烈1 ,ห้องสมุดไป่ตู้红梅2 ,刘瑞玲1
(1. 兰州工业高等专科学校 计算机工程系 ,甘肃 兰州 730050 ; 2. 甘肃煤矿安全监察局 信息调度中心 ,甘肃 兰州 730000)
摘要 : 利用带有 RS - 485 总线接口的智能仪表与计算机的通信接口 ,应用 VB6. 0 ActiveX 控件的
从接收缓冲区读取数据格式 ,类型 VARIANT ,设置为 0 时表示字符串格式 ,设置为 1 时表示 一进制格式
Input Output InputLen Rthreshold Sthreshold CommEvent
3. 2 编程实现
设置从缓冲区中读取数据 ,类型 Long 向发送缓冲区中写入数据 ,类型 Long 设置或返回 Input 每次读取的字节数 ,类型 Short 设置返回要接收的字符数 ,类型 Short 设置并返回发送缓冲区中允许的最少字符数 ,类型 Short 返回通信过程中产生的错误信息及事件 ,类型 Short
© 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved.
第 1 期 周耿烈 ,等 :用 VB6. 0 实现 PC 机与智能仪表的远距离串行通信 · 7 ·
指令 (向仪表写数据) 、读指令 (从仪表读数据) 、键盘命令 (向仪表写入键盘代码 ,等同键盘操作) ;第 3 项为
参数代码 ,该参数在键盘命令中表示键值 ,在读指令中置零 ,其值为 00 - 11 (其意义略) ;第 4 项为数据项 ,
若为读命令或键盘命令则为 4 字节“0”,若为写命令 ,则为 4 字节浮点数 (先发低字节) ;第 5 项为校验和 ,

哈理工CH6系列数显仪word版本

哈理工CH6系列数显仪word版本

2线制变送器电流信号的接
接线端子图
A-S规格80×160尺寸的仪表(mm)
外形尺寸
开孔尺寸接线端子图
B-F规格96×96尺寸的仪表(mm)
外形尺寸
开孔尺寸接线端子图
C-H规格96×48尺寸的仪表(mm)
外形尺寸
开孔尺寸接线端子图
C-S规格48×96尺寸的仪表(mm)
外形尺寸
开孔尺寸接线端子图
D-F规格72×72尺寸的仪表(mm)
外形尺寸
开孔尺寸接线端子图
E-F规格48×48尺寸的仪表(mm)
外形尺寸
注:
组参数之前的参数是否密码控制可以通过设置
键调出当前参数的原设定值,闪烁位为修正位
通过键移动修改位,键增值、
键存入修改好的参数,自动转到下一参数。

若为本组最后键后将转到本组第
重复②

键进入修改状态,在,,
密码在仪表上电时或
不松开,顺序进入各参数组,仪表键调出当前参数的原设定值,闪烁位为修改位
键移动修改位,键增值,
~
以下列出了测量及显示的相关的参数,设置不正确,可能使仪表显示不正

种:补偿前温度+
注:
影响,该温度可能会高于室温。

在实际应用中,补偿导线接到输入端子,。

VB6_0在PC机与单片机串行通信中的应用

VB6_0在PC机与单片机串行通信中的应用

中国校外教育计算机教学08/2010VB6.0在PC 机与单片机串行通信中的应用田玉1张文友2蔚明2赵雅楠2(1.河北移动承德分公司;2.承德广播电视大学)摘要!在开发微机控制及数据采集系统中,要实现PC 机与单片机中的串行通信,经常用到的是RS232接口。

我们普通PC 机后面的COM 端口即RS232接口。

VB6.0提供了M SC OMM 通信控件,只需编写少量的程序代码,即可在W i ndow s 环境下轻松实现串口的数据交换。

本文以笔者曾研制的压力测定系统为例简单介绍通过VB 实现计算机串口通信的方法。

关键词!串口通信RS232VB6.0随着计算机技术的迅速发展及其在各领域的广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。

微机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用微机。

而单片机具有价格低,功能强,抗干扰能力好,以及面向控制等特点,所以下位机采用单片机来构成主从式多机工作模式。

一、VB6.0实现串行通信方法VB 提供的通信控件M sco mm 32.ocx ,使用前只需从Pro j ect 菜单下的Co mponents 中选择M i crosoft Co mm C ontro l6.0把M sco mm32.ocx 控件调入工具框中即可使用。

利用该控件可对串行通信的数据发送和接收进行设置,还可对串口状态及串行通信的信息格式和协议进行设置。

在通信过程中可以通过触发On C o mm 事件来追踪、处理通信和错误事件的发生。

由于每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。

硬件连接:(1)当单片机以RS232接口为端子连接时,单片机与计算机的连接如下图:(2)当仪表以RS485接口(其它接口如422等类同)为端子连接时,单片机与计算机的连接如下图:2.M S CO MM 控件简介为支持串行通信的实现,VB6.0中M scomm 控件提供了众多的串行通信属性,但首先必须要熟悉的几个属性主要包括:C o mmPor:t 设置并返回通讯端口号。

利用VBA简化录井资料处理过程的两个实例

利用VBA简化录井资料处理过程的两个实例

Visual Basic for Application (简称V BA)是内置于O f f ic e系列产品中的一套开发平台,与O f f ic e产品高度集成。

V BA 是非常流行的应用程序开发语言V i s u a l Basic (VB)的子集,具有V B语言的大多数特征和易用性,可以利用简单的语法和规则,通过简易快速的编程手法来实现软件的高级功能,将一些重复的输入和操作过程进行简化,以提高工作效率。

而且V BA可以直接应用Office 套装软件的各项功能,如Excel具有打印、文件处理和文本编辑功能;具有大量可供选择的内置函数;且可连接到多种格式的数据库,等等。

1 岩屑描述代码转换如图所示,在目前新生代软件录入的资料数据库中,岩屑描述记录中岩性和颜色是用代码来表示的,对不熟悉代码的人来说不易利用(如图1)。

把这样的内容转换成汉字表述是经常要进行的操作。

因此,利用宏对平时经常要进行的操作进行合理的录制,并与代码的含义结合,编制了一个包含可以对颜色、岩性、含油级别栏从代码到汉字的转换的宏。

在打开包含这个宏的一个空工作表后,选中岩屑描述记录要转换的列,运行宏(图2),即可自动转换为(图3)所示的汉字表示。

下面我们来分析一下这个宏的代码(图4):Sub颜色代码转换()‘宏1 Macro‘Lenovo Us er 记录的宏 2008-5-14'S e l e c t i o n .R e p l a c e W h a t :=”0”, R e p l a c e m e n t :=”白色”, L o o k A t :=x l W h o l e , S e a r c h O r d e r :=x l B y C o l u m n s , M a t c h C a s e :=F a l s e , MatchBy te:=False _……S e l e c t i o n.R e p l a c e W h a t:=”-9.8”,R e p l a c e m e n t :=”浅棕黑色”,L o o k A t :=x l W h o l e , S e a r c h O r d e r :=x l B y C o l u m n s ,利用VBA简化录井资料处理过程的两个实例冯蓓华 巩文林(中油测井青海事业部地质评价中心 甘肃敦煌 736202)摘 要:当前在录井资料处理过程中,使用最多的软件仍然是微软Office组件中的Excel、Word和Access,其中经常要进行的大量机械和重复性的信息、数据处理工作,为了提高工作效率,我们可以利用Office自带的Visual Basic for Application (简称VBA)来实现操作自动化,为录井技术人员节约时间和精力,为更出色的完成地质录井工作提供保障。

VB6-Ch04

VB6-Ch04
18
屬性預設值
Cancel (取消)d1 Command1
Name (名稱)
Value (預設屬性)
False
4.2:指令按鈕(Command Button)
屬性功能 Visible (顯示/隱藏) 屬性值 True:將指令按鈕顯示。 False:將指令按鈕隱藏。(如此一來就按不到了,不過 卻可以使用程式來觸發Click事件) 屬性預設值 True
– 上機實作 • Step1:設定表單大小(長寬)。 • Step2:更改專案名稱。 • Step3:設定表單屬性。 • Step4:撰寫事件程序程式碼。 • Step5:執行程式。按下工具列的
12
開始快捷鈕。
【實作範例4-2】
– 【實作範例4-2】: • 仿照實作範例4-1,撰寫下列程式,看看AutoRedraw屬性值設為False時, 表單會出現什麼變化。 – 上機實作 • Step1:將專案名稱設為『p4_02』。 • Step2:將表單屬性設定如下表。
屬性預設值 &H80000012& 4635 [圖示]
Left(左邊界限)
Name(名稱) Picture(圖案) Visible (顯現/隱藏) Width(寬度) WindowState (視窗狀態)
表單左上角與螢幕左邊的距離(單位為Twip)。
表單物件的名稱。 設定表單內放置圖形檔名及路徑。 設定表單是否顯現在螢幕上。 設定表單的水平寬度(單位為Twip)。 表單執行的初始狀態。 0-一般:同表單設計階段大小。 1-最小化:將表單縮為工作列中的圖示。 2-最大化:將表單放至最大佔滿整個螢幕。
5
屬性預設值 1 -立體
False
&H8000000F&

Allwinner Camera模块开发说明文档说明书

Allwinner Camera模块开发说明文档说明书
ACamlelrCwao模ni块nf开in发de说e明rn文ti档al
第 1 页 共 54 页Biblioteka 文档履历版本号 日期
制/修订人 制/修订记录
V1.0
2013-03-17
曾令莹
建立初始版本
V1.1
2013-04-28
曾令莹
补充 device 调试的说明
曾令莹
补充 sensor 器件驱动的格式说明和编写要求,补充 cam_detect 模块,
n 2.4.2.3. CCI_Client 调试节点使用方法 ...........................................................................16
3. 模块体系结构描述.................................................................................................................... 18 4. 模块开发 demo.......................................................................................................................... 19
l 2.3. 源码结构介绍...................................................................................................................5
2.4. 模块配置介绍................................................................................................................... 7

基于VB6.0的异步电机设计程序

基于VB6.0的异步电机设计程序

基于VB6.0的异步电机设计程序中文摘要由于电子计算机的普及及计算技术的逐渐发展,传统的电机设计人工算法步骤日益显得繁琐。

在这种背景下,电机设计的计算机辅助设计应运而生。

计算机辅助设计是利用一些计算机程序,将设计中的步骤全部程序化。

这种设计和传统手算比起来,既可以大大提高效率,又可以大大提高精度,因而目前得到了广泛的应用。

VB6.0由于其强大的功能和可视化的使用界面而广受欢迎。

本设计使用Visual Basic 6.0作为设计语言。

使用计算机设计处理设计中的图表及循环将非常方便。

设计中有用户输入和输出界面,将使人机交流变得非常简洁。

本设计最后附有设计程序。

关键词:电机设计计算机辅助设计 VB6.0The Program of Motor Design Designed by VBAbstractAs the popularity of computer and computing technology evolved, the traditional motor design seems increasingly cumbersome manual steps of the algorithm. In this context, the electrical design of computer-aided design came into being.Computer-aided design is the use of computer programs, all the steps in the design procedures. Compared to traditional hand-counted, this design is both efficiency and accuracy , which is currently widely applied.VB6.0 , popular with its powerful features and visual user interface .The design uses Visual Basic 6.0 as a design language. Designed to handle computer graphics and design cycle will be very convenient. Design a user interface input and output, will become very simple man-machine communication. Finally, the design add the design process to the last.Key WordS: motor design computer-assistant design VB6.0目录中文摘要 (I)A BSTRACT (II)目录 (III)绪论我国电机制造业的近况及趋势 (1)0.1我国电机制造业发展概述 (1)0.2我国电机行业和发达国家的差距 (1)第一章电机设计中的计算机辅助设计 (3)1.1电机设计的任务及设计时给定的数据 (3)1.2电机设计过程及内容简介 (3)1.3计算机辅助设计在电机设计中的应用 (4)1.4电机的计算机辅助设计步骤 (4)第二章三相异步电动机简介 (6)2.1感应电机的结构 (6)2.2异步电机的运行状态 (7)2.3异步电机的额定值 (8)第三章VB6.0 简介 (9)3.1VB简介 (9)3.2VB主要功能特点 (9)第四章电机计算机辅助设计常用方法 (12)4.1辅助设计的分类 (12)4.2辅助设计的一般步骤 (12)4.3曲线和图表的数学处理方法之一——插值法 (13)4.4曲线和图表的数学处理方法之二——公式法 (14)4.5计算机辅助设计中常用的数值计算方法 (15)4.6设计分析程序 (15)4.7设计综合程序 (17)第五章异步电机设计具体步骤 (18)5.1电机CAD校核设计程序界面设计 (18)5.2电机CAD校核程序设计 (28)总结 (44)感谢 (45)主要参考文献(资料) (46)0 我国电机制造业的近况及趋势0.1我国电机制造业发展概述我国的电机制造业主要是从新中国建立之后才发展起来的。

[VB] chp06 选择控件

[VB] chp06 选择控件

第六章选择控件程序中,如果允许使用者自行选择某些选项,例如图6-1所示,我们希望在标签内的「欢迎光临」可以由使用者自行选择其字体,字体包括粗体字、斜体字与闪烁字,但闪烁字暂不能使用,而粗体字、斜体字可以选其中一项也可二项都选,这种选项方式可使用「复选框」 (CheckBox) 工具来设计。

另外在位置部分有靠左、置中与靠右,这三种选项我们只能由其中选择一个,这种选项方式可使用「选项钮」 (Option Button) 工具来设计。

为了这些选项群组能区隔则可使用「框架」 (Frame)。

图6-1 选择控件图标6-1 复选框「复选框」 (Check Box) 工具是在多个选项中选取一个、选取一个以上的选项或是都不选取。

6-1-1 安排复选框控件1. 在工具箱选取复选框工具。

2. 将指针移至窗体中任意位置,指针呈「十」字形,按住鼠标左键并拖曳,拉出适当的大小后再放开左键,如图6-2所示:选项钮复选框框架图6-2 安排复选框控件3. 利用属性窗口,设定选项钮的属性。

6-1-2 复选框控件常用的属性Appearance:设定复选框的外观Normal ButtonText:标题名称,预设名称为Check1,Check2。

Image:设定复选框由指定图形显示。

Enabled:复选框是否可被核取( 默认值True )True:复选框可以核取False:复选框不能被核取Checked:当被按下的钮属性变为True。

True:复选框已被选取False:复选框末被选取CheckAlign:选项按钮内的位置( 默认值MiddleLeft )。

ThreeState:设定该复选框是否支持三态,一般都为二态也就是勾选或不勾选,而三态除勾选或不勾选外还多一个不定状态,默认值为False。

设计一程序利用复选框来设定字体,显示粗体字、斜体字与加底线效果。

题目说明1.程序启动后窗体上有一卷标「欢迎光临」与三个核对方块分别为粗体字、斜体字与加底线,如图6-3所示。

3GPP 5G基站(BS)R16版本一致性测试英文原版(3GPP TS 38.141-1)

3GPP 5G基站(BS)R16版本一致性测试英文原版(3GPP TS 38.141-1)

4.2.2
BS type 1-H.................................................................................................................................................. 26
4.3
Base station classes............................................................................................................................................27
1 Scope.......................................................................................................................................................13
All rights reserved. UMTS™ is a Trade Mark of ETSI registered for the benefit of its members 3GPP™ is a Trade Mark of ETSI registered for the benefit of its Members and of the 3GPP Organizational Partners LTE™ is a Trade Mark of ETSI registered for the benefit of its Members and of the 3GPP Organizational Partners GSM® and the GSM logo are registered and owned by the GSM Association

用VB6_0实现PC机对多台流量计远程数据采集与监控

用VB6_0实现PC机对多台流量计远程数据采集与监控

用VB6.0实现PC机对多台流量计远程数据采集与监控节能法律、法规节能先关表格下载节能宣传栏节能相关技术标准相关部门文件栏目树形导航| 首页 | 行业信息 | 公司信息 | 部门信息 | 生产管理 | 技术资料 | 员工沟通| 网上学习 | 帮助导航 ||技术设备部首页|设备管理|计量管理|节能管理|部门动态|法规制度|技术交流|设备之窗|您现在的位置:珠海供水 >> 技术交流 >> 技术设备部正文用户登录新用户注册 [图文]用VB6.0实现PC机对多台流量计远程数据采集与监控【字体:小大】用VB6.0实现PC机对多台流量计远程数据采集与监控作者:喻维纲技术设备部来源:湘潭钢铁公司自动化部点击数:18 更新时间:2005-10-28摘要:利用VB6.0 ActiveX控件的MSComm通信控件,实现了Windows9X下单台PC机与多台智能流量计的串行通讯,达到了对分散设备的集中控制和计量数据的采集和自动上报功能。

关键词:PC机;流量计;智能仪表;RS485;串口;事件驱动Collecting and controlling the Long-distance Data of Flowrates byUsing Personal Computer Base on VB6.0Xiang Tan Steel Automatic DepartmentYu Wei GangAbstract: This paper describes one personal computer series-communicating with many intellectual-flowrates under Windows9X by using MSComm controls of VB6.0 ActiveX’ing to centralized controlling scattered measure Equipment and Automatic data collecting and switching.Key word: Personal computer; floweret; intellectual meter; SerialcommunicationRS485; incident driving一、引言在工业生产中,能源、动力介质的测量设备分布在现场的各个区域,给设备的监控和数据的统计带来诸多不便,随着智能仪表技术的不断发展,其通讯技术也在不断加强,当今的流量测量仪表大多带有RS-485通讯接口,完全可以运用现场总线方式实现多台测量仪表的集中监控与数据采集。

植物组织培养室及培养用具的消毒与灭菌(3学时)

植物组织培养室及培养用具的消毒与灭菌(3学时)

实验一植物组织培养室及培养用具的消毒与灭菌(3学时)一、目的要求1、通过实验,培养学生良好的卫生观念,确立组织培养的无菌意识;2、掌握组织培养室的消毒及灭菌方法。

3、掌握培养用具的干热灭菌的一般操作技术。

二、仪器与用具1、用具:喷雾器、工作服、口罩、手套等;2、药品:2%新洁尔灭,高锰酸钾,甲醛,70%酒精。

三、方法步骤(一)植物组织培养室的灭菌1、地面、墙壁和工作台的灭菌:用2%新洁尔灭喷雾。

(1)配方:取新洁尔灭原液20ml,加水980ml,配成2%新洁尔灭溶液。

(2)方法:将配好的2%新洁尔灭溶液倒入喷雾器内,进行均匀喷雾。

(3)注意事项:①墙壁、角落、地面喷雾要均匀,不要遗漏;②注意安全,在喷房顶时,要特别小心,防止药液雾滴掉入眼睛。

2、无菌室和培养室的灭菌:用甲醛和高锰酸钾熏蒸,1年中熏蒸1-2次。

(1)配方:每立方米空间用甲醛10ml加高锰酸钾5g的配比液熏蒸。

(2)方法:首先房子要密封。

然后在房子中间放一口缸或大烧杯,将称好的高锰酸钾放入缸内,再把已称量的甲醛溶液慢慢倒入缸内,完毕,人迅速离开,并关上门,密封3天。

(3)注意事项:①操作前要戴好口罩及手套;②倒入甲醛时要小心,因为甲醛遇到高锰酸钾会迅速沸腾,并产生大量烟雾。

操作时人要迅速避开烟雾;③3天后,打开房间,搬走费液缸;一周后,方可进入操作。

3、在已经熏蒸过的房间内,用70%酒精纱布擦洗培养架、工作台。

4、用紫外灯照射20—30min。

5、使用前,再用70%酒精喷雾,使空间灰尘落下。

(二)培养基的灭菌——高压蒸汽灭菌(湿热灭菌法)(1)洗涤:把组织培养基用的培养皿、三角瓶、试管等玻璃器皿进行彻底清洗。

自然晾干或烘箱干燥。

(2)包扎:用牛皮纸、报纸、纱布或锡箔纸把玻璃器皿和金属器械分别包扎好。

(3)装水:在高压灭菌锅内装入一定量的水(水要淹没电热丝)。

(切忌干烧!)(4)装物品:在灭菌锅内放入含培养基的培养瓶或三角瓶、装蒸馏水的玻璃瓶,以及包扎好的玻璃器皿和金属器械等。

序列号集锦

序列号集锦
注册码
Name:TEAM TBE Code:6111-1516-68DC-9DCA
软件名称
完美卸载XP(Windows黄金拍档) 10.0 注册码 更新时间 2005-4-25
注册码
用户名:倪雷杰 注册码:E7574E7676B24AF3-573E0B39D58A54A0-E7574E7676B24AF3
注册码
Name: 001Warren R Smith
Key : 000016-5VDDXZ-7XPVKM-52TDCB-DX2E6F-NXEB70-YNTFM0-B KN4W6-9EF884-4GCHCN
软件名称
Broken Cross Disk Manager V3.71 注册码 更新时间 2005-4-11
注册码
Name:emporu Serial: 3XQFFG5YUAKACJYR2S8J6KFMUD0PKMY4
软件名称
Power CD to MP3 Maker V1.00 汉化版注册码 更新时间 2005-4-21
注册码
注册名:WTTI79-DH39DKJ 注册码:329745674
注册码
注册名:West King 注册码:CI2-A5A48-39284-14AD4-12036-54A1C-134422A
软件名称
Selteco Menu Maker V4.0.3 汉化注册版 更新时间 2005-4-21
注册码
s/n: 037007-110765926
软件名称
注册码
Code: 1A23-0609-9030-2380-1241-2966
软件名称
美萍VOD视频点播系统 v8.2注册码 更新时间 2005-4-20

VB6 逆向工程

VB6 逆向工程

VISUAL BASIC REVERSED-A decompiling approachAuthor:AndreaGeddonAbstractKeywords:Reverse Code Engineering,Visual Basic,VB,DecompilingFrameworks are getting more and more popular today,Visual Basic is one of them.Personally i hate frameworks, and also most reversers do.So,why this tutorial?We can consider both the light and the dark side of the problem: frameworks usually put a lot of code in the compiled programs,so it becomes hard tofind the way among all that jungle.But they also use sets of pre-built objects,so theese objects are always the same and can be recognized, helping the reverser to understand the code itself.In a VB PE you have a lot of information inside the exe,so you can easily extract all the information you need about all components of the program.To analyze a VB application I used this program that was written by a friend of mine(thank you_d31m0s_!).It’s a sort of name/serial crackme, but we are not interested in serialfishing,we are interested in how it works and how the vb knows how to build the app itself.I asked my friend to write it adding some event handling(colors,on over,etc)and a simple algorithm to check serial.He also wrote the proggy using more sourcefiles and making various subs(some null sub too). We also have the source of all,but we will check them later.Let’s make some introduction now!————————————1INTRODUCTIONBefore VB5the VB programs were not truly traduced in assembler,they were coded in Pseudo Code(hehe you all remember those hating pcode exe!),and the VB virtual machine had the task of interpreting the pseudo code and execute it.Those programs were linked to vbrun100,vbrun200,vbrun300,vbrun400dlls(depending on the version);well thing are a little different because there were variations between16bit or32bit modules(pcode were mostrly16bit apps),but this is not what we are looking for.Today we have version5and6of VB,they use MSVBVM50.dll and MSVBVM60.dll,and now VB exes are really compiled and traduced in asm.As you all know you can’t use usual breakpoints like”GetWindowTextA”when debugging VB programs,infact you should use the apis exported from the VBVM dll(e.g.for a serial i would use__vbaStrCmp,or rtcMsgBox),if you want to use theese apis in softice you just have to load the VB dll(in winice.dat or via symbol loader).This will help you debug VB applications.2ANALISYSLet’s start disassembling the proggy.I am using Ida,i advice you to use it too,but you can use other disassemblers if you want.First of all lets have a general look,so we can have a general idea.You can easily see the following: 00401000...IAT(First Thunk ok apis)004010F0...some data004011A5...transfer area(declspec(dllimport)style)0040130E...lots of data004023EC...local transfer area(for internal event handlers)0040242C...other data00402E44...code00403D06...other dataOk we have a general idea of the mapping of the program.Notice that all read only data is in the.text section, the data before and after the code contains names of imported functions(IT originalfirst thunks),however now we begin analisys.We start from entry point.What we see is:00401310push offset RT_MainStruct00401315call ThunRTMainif you debug this,you execute the call and the program runs.The analisys here is very simple:the entry point simply consists of:ThunRTMain(&RT_MainStruct);this function is the main function of the VBVM(the Thunder Runtime Engine)and has one parameter,the pointer to a complex structure that describes all the application.It is clear that all the data,all the callbacks and so on are described by this structure,so we can extract a lot of information.We just have to check this big structure!Let’s go!00401970RT_MainStruct db’VB5!’;signature00401974db1Ch;00401975aVb6it_dll db’#VB6IT.DLL’,0;italian language00401980dd000401984dd2Ah00401988dd00040198C dd000401990dd0A0000h00401994dd410h00401998dd409h0040199C dd0004019A0dd offset ProjectStruct004019A4dd30F016h004019A8dd0FFFFFF00h004019AC dd8004019B0dd1004019B4dd2004019B8dd0E9h004019BC dd offset DialogsStruct004019C0dd offset ExternStruct004019C4dd offset ProjectInfo004019C8dd78h004019CC dd7Eh004019D0dd84h004019D4dd85h004019D8dd0004019DC dd0004019E0dd0004019E4dd0thefirstfield is the signature of the struct itself.Note that the program has been written with VB6.0,but the signature is”VB5!”,probably they didnt change it for cross compatibility?Or just forgot it?Who knows! However we can see various infos,the”VB6IT.dll”that should be the module to load the language(the app has been written with italian version of vb).What should really abtract your attention are the four pointers (ProjectStruct,DialogsStruct,ExternStruct,ProjectInfo).I gave them a name because i know their function, you should see just four addresse in the dasm.However we will analyse theese structs tofind infos we need.0040131C ProjectInfo dd0;DATA XREF:004019C4o00401320dd30h00401324dd40h00401328dd00040132C dd0EACF9A13h00401330dd4F93898Bh00401334dd0DF0C5493h00401338dd159AAEEDh0040133C dd000401340dd10000h00401344a020430progetto db0,0,’020430Progetto1’,000401356aC000db’-C000-’0040135C dd0;here we can see various numbers,in particular there is the project name as lastfield.If we go and search in thesource of the app,we can see in the.vbp the following lineReference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#D:\WINNT\System32\STDOLE2.TLB#OLE Automation so we can think all the data bytes represent the type of project,modules contained etc etc.This isn’t very useful,so we go on.We go back to main struct and see another sub structure:004018F8ExternStruct dd6;flag004018FC dd offset InsideImport;import datait is a bit harder tofigure out what this structure is.This handles other imported functions,they can be insideor outside virtual machine module.Theflag indicates the type of import(6=inside,7=outside).If you lookat InsideImport you willfind:00402B64InsideImport dd offset Descr00402B68dd offset ThunkDescr will point to four dwords that seem to be the same in all vb apps.Thunk will contain a pointer to an areawhere addresses(of some code of the virtual machine)are stored.I analysed an other vb app,its ExternStructis://snippet from another vb app00401A5C ExternStruct dd7;outside00401A60dd offset ImportData00401A64dd6;inside00401A68dd offset InsideImport//end snippet from another vb appas you can see in that app there was an external function,infact the app used ShellExecute to open the internet browser and link to a site.The ImportData is as follows://snippet from another vb app00402DA4ImportData dd offset aShell32;modulename00402DA8dd offset aShellexecutea;apiname00402DAC align800402DB0dd offset IAT_Data//end snippet from another vb appwhere you can see you have the pointers to the name of the module and the name of the api to import.The IAT_Datafields points to thunking data(hInstance of module and api address).This data is also used from the primitive DLL_Import of VB,used to thunk to outside apis.Back to our app,we check the DialogsStruct pointer: 00401A00DialogsStruct[0]dd50h;sizeof struct00401A04dd356022C6h00401A08dd400E3F28h00401A0C dd495240B8h00401A10dd0C9491BB6h00401A14dd000401A18dd000401A1C dd000401A20dd000401A24dd000401A28dd310h00401A2C dd000401A30dd000401A34dd000401A38dd000401A3C dd000401A40dd596h00401A44dd000401A48dd offset MainDialog00401A4C dd4Ch00401A50DialogsStruct[1]dd50h;sizeofstruct00401A54dd78CBBB9Fh00401A58dd401EB563h00401A5C dd0DB80B296h00401A60dd7EFFD31Ah00401A64dd000401A68dd000401A6C dd000401A70dd000401A74dd300401A78dd100h00401A7C dd000401A80dd000401A84dd000401A88dd000401A8C dd000401A90dd1A3h00401A94dd000401A98dd offset AboutDialog00401A9C dd9Chwe have an array of dialog descriptors.Each descriptor has various data values,in particular has in the19thfield a pointer to a struct were the resource info are stored.Theese structure have variable size,because it depends on the data contained by the resources.Lets go and see MainDialog;i will not paste all the data but only the important things.004013C2aForm1db5,0,’Form1’,0004013CC aLeimcrackme db0Bh,0,’Leimcrackme’,0004013E2IconData db6,3,0,0,6Ch,74h,0,0,0FEh...004016FA dw2Dh;clientleft004016FE dw14Ah;clienttop00401702dw1248h;clientwidth00401706dw0B7Ch;clientheight00401715aText2db5,0,’Text2’,000401731aText1db5,0,’Text1’,00040174D aCommand2db8,0,’Command2’,00040175A aCheck db7,0,’&Check!’,000401777aCommand1db8,0,’Command1’,000401784aAbout db6,0,’&About’,0004017A2aLabel2db6,0,’Label2’,0004017AD aSerial db7,0,’Serial:’,0004017D1aLabel2_0db6,0,’Label2’,0004017DC aName db5,0,’Name:’,0004017FC aLabel1db6,0,’Label1’,000401807aWhoeverTriesTh db’’,0,’Whoever tries...you can see all the components of the crackme,their data,etc etc.IconData is the raw data of the icon of the main dialog.If we look at the source we have:Begin VB.Form Form1BorderStyle=3’Fixed DialogCaption="Leimcrackme"ClientHeight=2940ClientLeft=45ClientTop=330ClientWidth=4680Icon="andre.frx":0000LinkTopic="Form1"you can see the icon data is encoded in the.frxfile,which usually have big data.So the Iconfield links to andre.frxfile and0000is the offset of the starting data.Infact also the last label is linked as follows:Caption=$"andre.frx":030Ainfact in the frxfile after the raw icon data there is at offset30Ah the string of that label.Of course in the compiled app all the infos(.frm and.frx)are built in the dialog sutrcture.In the same way you can see the infos about the second dialog(AboutDialog).Now we go and check the most important structure:00401AA0ProjectStruct dd1F4h;signature?00401AA4dd offset Tree00401AA8dd000401AAC dd offset StartOfCode00401AB0dd offset EdnOfCode00401AB4dd1238h00401AB8dd offset DataVar100401ABC dd offset vbaExceptHandler00401AC0dd offset StartOfData00401AC4dd84h dup(0)00401CD4dd offset ExternStruct00401CD8dd1Let’s see thefields:there is a pointer to the exetern imports,we already covered this structure.There are StartOfCode and EndOfCode vars,they indicate where the executable code starts and where it ends.The code is delimited by two signatures(E9E9E9E9h starting,9E9E9E9E ending)and some0xCC padding.There is also afield that is the pointer to the base per-thread exception handler,that is__vbaExceptHandler(but of course the code will install others handerls).There are the pointers to StartOfData and another pointer that points to StartOfData+8,it seems theese values are common for all applications.In the84h dup(0)space you can probablyfind infos about path of the project etc,usually you see here some unicode strings,nothing interesting. The remainingfield,Tree,is a descriptor of code modules as they were in the source(and as they are oranized in the compiled exe).So we are going to check this struct;it is a bit complex,so pay attention:00402434Tree dd000402438dd offset VB_Func0040243C dd offset TreeData00402440dd0FFFFFFFFh00402444dd000402448dd offset UnkVar10040244C dd1F1CB8D4h00402450dd42793AE6h00402454dd51A97A97h00402458dd41E1033h0040245C dd4000Ah00402460dd40004h00402464dd offset ModulesList;ptr to ModulesList[0]00402468dd00040246C dd000402470dd000402474dd offset aProgetto1_0;"Progetto1"00402478dd409h0040247C dd410h00402480dd000402484dd2VB_Func is a pointer to a location that isfilled at runtime with some address of the vbvm,there are otherfields such as the project name and an unknown var,but the interesting things are TreeData and ModuleList.Let’s see TreeData:00402DE0TreeData dd000402DE4dd offset Tree;back pointer00402DE8dd0FFFFFFFFh00402DEC dd000402DF0dd offset FormList00402DF4dd000402DF8dd000402DFC dd000402E00dd0FFFFFFFFh00402E04dd000402E08dd offset ProjectInfo200402E0C dd offset RawData100402E10dd offset R_UnkVar100402E14dd offset ProjectInfo200402E18dd offset RawData200402E1C dd offset R_UnkVar200402E20dd offset ProjectInfo200402E24dd offset RawData300402E28dd offset R_UnkVar300402E2C dd offset ProjectInfo200402E30dd offset RawData400402E34dd offset R_UnkVar400402E38dd000402E3C dd offset RawData500402E40dd offset R_UnkVar5what we got here?A back pointer to tree struct,some raw data and ather infos about the project(you can see at projectInfo2some data and usually you willfind the string’C:\Programmi\Microsoft Visual Studio\VB98\VB6.OLB’), the important pointer is FormList.Let’s see:00402D18FormList dd offset Form[0];form100402D1C dd0FFFFFFFFh;module100402D20dd0FFFFFFFFh;module200402D24dd offset Form[1];form2infact if we see the.vbw file we find:Form1=186,224,986,702,,207,76,652,524,CModule1=236,214,1036,662,Module2=166,196,966,644,Form2=100,283,900,731,,173,118,973,566,Cso the FormList simply points to a list of tied dialogs to the forms/modules of the project.Note that modules correspond to.basfiles,forms to.frmfiles(which include.frx for raw resources).Let’s go on:00402D60Form[0]dd000402D64dd offset FormDescriptor[0]00402D68dd0FFFFFFFFh00402D6C dd000402D70dd000402D74dd000402D78dd offset FlagList00402D7C dd000402D80dd offset UnkData00402D84dd offset UnkData00402D88dd offset UnkData00402D8C dd000402D90dd000402D94dd000402D98dd58h00402D9C dd4i will not paste Form[1]because its identical to Form[0].We see some pointers to some data(mostly they point to null values),and then a pointer to FormDescriptor.Here we stop for now,we have to go back to check Tree.ModulesList structure(from there we will reach again FormDescriptor structs):00402488ModulesList[0]dd offset FormDescriptor[0]0040248C dd0FFFFFFFFh00402490dd offset Flags_000402494dd000402498dd00040249C dd0004024A0dd offset aForm1_0;"Form1"004024A4dd5004024A8dd offset OptionalData1004024AC dd0FFFFh004024B0dd18083h;Flags_1004024B4dd0004024B8ModulesList[1]dd offset ModuleDescriptor[0]004024BC dd0FFFFFFFFh004024C0dd offset Flags_1004024C4dd0004024C8dd offset unk_modvar1004024CC dd0004024D0dd offset aModule1;"Module1"004024D4dd7004024D8dd0004024DC dd0FFFFh004024E0dd18001h004024E4dd0004024E8ModulesList[2]dd offset ModuleDescriptor[1]004024EC dd0FFFFFFFFh004024F0dd offset Flags_1004024F4dd0004024F8dd offset unk_modvar2004024FC dd000402500dd offset aModule2;"Module2"00402504dd300402508dd00040250C dd0FFFFh00402510dd18001h00402514dd000402518ModulesList[3]dd offset FormDescriptor[1]0040251C dd0FFFFFFFFh00402520dd offset Flags_200402524dd000402528dd00040252C dd000402530dd offset aForm2;"Form2"00402534dd200402538dd offset OptionalData20040253C dd0FFFFh00402540dd18083h00402544dd0voil.We can easily see names and order of the forms/modules of the project.Note that thefirstfield is a descriptor for the Module/Form,they are different descriptors,so they have a different structure.We can go and see ModuleDescriptors:00401938ModuleDescriptor[0]dd10001h0040193C dd offset Tree;back pointer00401940dd000401944dd0FFFFFFFFh00401948dd0FFFFFFFFh0040194C dd000401950dd offset ModulesList[1];back pointer00401954dd offset MD0_UnkVar00401958dd00040195C dd7D63150h00401960dd000401964dd000401968dd00040196C dd offset RT_MainStruct;ptr to following addressnothing of interest here.The other module descriptor is like this so i won’t paste it.Let’s see form descriptors: 00401F48FormDescriptor[0]dd100401F4C dd offset Tree;back pointer00401F50dd000401F54dd offset Form[0];back pointer00401F58dd0FFFFFFFFh00401F5C dd000401F60dd offset ModulesList;back pointer00401F64dd offset DataVar100401F68dd000401F6C dd7D98E18h00401F70dd000401F74dd000401F78dd000401F7C dd offset FD0_Raw100401F80dd100401F84dd offset FD0_Raw200401F88dd000401F8C dd offset FD0_Raw100401F90dd100401F94dd offset FD0_ControlsList00401F98dd000401F9C dd offset FD_Raw300401FA0dd7;number of controls in list00401FA4dd offset FD0_ControlsList00401FA8dd1B70005h00401FAC dd6C0068h00401FB0dd offset FD0_Dispatcher00401FB4dd offset FD0_UnkVar100401FB8dd000401FBC dd1324FChwe see some unknown vars and some back pointers,what we care of is FD0_COntrolsList and FD0_Dispatcher. We see there are7controls in the list,so let’s see the list:00401FC8FD0_ControlsList[0]dd180040h;control type00401FCC dd34h;ID100401FD0dd offset RawData100401FD4dd30005h;ID200401FD8dd000401FDC dd000401FE0dd offset LocalDispatcher[0]00401FE4dd7DC1BF0h00401FE8dd offset aText2_0;"Text2"00401FEC dd30005h00401FF0FD0_ControlsList[1]dd180040h;control type00401FF4dd38h;ID100401FF8dd offset RawData100401FFC dd30004h;ID200402000dd000402004dd000402008dd offset LocalDispatcher[1]0040200C dd7DC1BF0h00402010dd offset aText1_0;"Text1"00402014dd30004hetc...we have all the components of the dialog,which is fundamental in event tracking.You can see names for the controls,some strange values(ID1and ID2,semms like they are internally used as resource id)and LocalDis-patcher.This is the point of all!LocalDispatcher infact points to a structure that contains all event handlers of the controls!Let’s see LocalDispatcher[0]:004020F4LocalDispatcher[0]dd0004020F8dd offset FD0_ControlsList[0]004020FC dd offset FormDescriptor[0]00402100dd offset i_EVENT_SINK_QueryInterface00402104dd offset i_EVENT_SINK_AddRef00402108dd offset i_EVENT_SINK_Release0040210C dd18h dup(0)thefirstfield is always zero.The second is a backpointer to the parent structure in the controls list,the third is a backpointer to parent FormDescriptor structure.After wefind some basic handlers which are present in all controls,then we have no other handlers.This is the dispatcher of a”label”control,so it has no other handlers!So we can choose another control in the list:00402040ControlsList[3]dd110040h00402044dd40h00402048dd offset RawData30040204C dd30002h00402050dd000402054dd000402058dd offset LocalDispatcher[3]0040205C dd7DC1C10h00402060dd offset aCommand1_0;"Command1"00402064dd30002has before we go and see the LocalDispatcher[3]:00402278LocalDispatcher[3]dd00040227C dd offset ControlsList_3_00402280dd offset FormDescriptor_0_00402284dd offset i_EVENT_SINK_QueryInterface00402288dd offset i_EVENT_SINK_AddRef0040228C dd offset i_EVENT_SINK_Release00402290dd offset onClickAbout00402294dd10h dup(0)voil,what we were searching for!We have the onClickAbout pointer,that points to:004023FD onClickAbout:004023FD sub dword ptr[esp+4],3Fh00402405onClickAbout1:00402405jmp onClickAboutRoutinethat is a transfer area(internal function dispatcher)for local event handlers.So now we know what routine is executed when”About”button is pressed.The problem is,how did I know that it is a onClick handler?It could be a onOver,onMove etc etc?To answer this question let’s see the Label1dispatcher,we know that it has a onOver handler,we can see it at runtime(and we know it is label1from line004017FC remember?)00402330LocalDispatcher[5]dd000402334dd offset ControlsList[5]00402338dd offset FormDescriptor[0]0040233C dd offset i_EVENT_SINK_QueryInterface00402340dd offset i_EVENT_SINK_AddRef00402344dd offset i_EVENT_SINK_Release00402348dd00040234C dd000402350dd000402354dd000402358dd00040235C dd000402360dd000402364dd000402368dd00040236C dd offset onOverLabel100402370dd8dup(0)we see the common handler and backpointers,then far away the onOver handler pointer.So my idea is that everyfield of the LocalDispatch structure is a pointer to a given event handler(00402348would be onClick etc), in addition the LocalDIspatch structure seems to be not exactly the same for all control types,so if you want to map all controls handlers you should write an app which uses all possible handlers and see where they are placed in this struct.Now we can go back to FormDescriptor[0]and check the last pointer,that was FD0Dispatcher,it points to004020E0FD0_Dispatcher dd offset onClickAboutPre1004020E4dd offset onClickAbout1004020E8dd offset onClickCheck1004020EC dd offset OnOverForm1004020F0dd offset onOverLabel11a simple list to all import transfers addresses(they point directly to the jumps,the pointers in local dispatchers instead point to previous line!).As for this form,we can go in ModulesList[3]and check FormDescriptor[1],we willfind the controls list and associated event handlers.In particular,in this form there is a moving button,if we check the LocalDispatcher of this button we see: 00401E70FD1_LocalDispatcher[1]dd000401E74dd offset FD1_ControlsList[1]00401E78dd offset FormDescriptor_1_00401E7C dd offset i_EVENT_SINK_QueryInterface00401E80dd offset i_EVENT_SINK_AddRef00401E84dd offset i_EVENT_SINK_Release00401E88dd offset onClickOk00401E8C dd000401E90dd000401E94dd000401E98dd000401E9C dd000401EA0dd000401EA4dd000401EA8dd000401EAC dd offset onOverOk00401EB0dd7dup(0)the other controls in the list just have default handlers.We have mapped all the resource and relative event handlers just by examining data structures(and using a bit of zen!).Now we can work on the code.Let’s say we want tofind a correct serial for a given name.We know that the routine called when the Check button is pressed is at address00402FD0,so we start from there:-standard function initialization00402FD0push ebp;allocate private stackframe00402FD1mov ebp,esp00402FD3sub esp,0Ch00402FD6push offset vbaExceptHandler;installing default seh00402FDB mov eax,large fs:000402FE1push eax00402FE2mov large fs:0,esp00402FE9sub esp,74h00402FEC push ebx;save registers area00402FED push esi00402FEE push edi-loading destructors00402FEF mov[ebp-0Ch],esp00402FF2mov dword ptr[pDestruct],offset Destructors_2-allocating dynamic resource00402FF9mov esi,[ebp+8]00402FFC mov eax,esi00402FFE and eax,100403001mov[ebp-4],eax00403004and esi,0FFFFFFFEh00403007push esi00403008mov[ebp+8],esi0040300B mov ecx,[esi]0040300D call dword ptr[ecx+4];Zombie_AddRefthe parent object(the form)is passed as parameter(ebp+8,sorry i forgot to resolve ebp based frame function in ida!)and the COM tecnology uses AddRef to increment reference count of the object(instantiation).For those of you that don’t know this,COM objects are responsible for their lifetime,the resources they use are allocated until the reference count is¿0,when it reaches0the objects enter zombie state and can be deallocated to free resources(well,things are a little more complex,see COM object management documentation to know more on this topic).-background color changing00403010xor eax,eax00403012lea edx,[ebp-24h]00403015mov ebx,80020004h0040301A mov edi,0Ah0040301F mov[ebp-24h],eax;zero vars00403022push edx00403023mov[ebp-34h],eax00403026mov[ebp-44h],eax00403029mov[ebp-1Ch],ebx0040302C mov[ebp-24h],edi0040302F call ds:rtcRandomNext;get random fp values00403035fstp dword ptr[COlor_R]00403038lea eax,[ebp-34h]0040303B mov[ebp-2Ch],ebx0040303E push eax0040303F mov[ebp-34h],edi00403042call ds:rtcRandomNext00403048fstp dword ptr[Color_G]0040304B lea ecx,[ebp-44h]0040304E mov[ebp-3Ch],ebx00403051mov ebx,[esi]00403053push ecx00403054mov[ebp-44h],edi00403057call ds:rtcRandomNext;color_B not stored,used directly eax0040305D fmul ds:_0255;multiply each rand fpu*25500403063mov edi,ds:__vbaR8IntI200403069fnstsw ax0040306B test al,0Dh0040306D jnz loc_40312F;fpexception00403073call edi;__vbaR8IntI2;cast from_fpu real8bytes_to_integer2bytes_ 00403075fld dword ptr[ebp-7Ch]00403078fmul ds:_02550040307E push eax0040307F fnstsw ax00403081test al,0Dh00403083jnz loc_40312F;fpexception00403089call edi;__vbaR8IntI20040308B fld dword ptr[ebp-78h]0040308E fmul ds:_025500403094push eax00403095fnstsw ax00403097test al,0Dh00403099jnz loc_40312F;fpexception0040309F call edi;__vbaR8IntI2004030A1push eax004030A2call ds:rtcRgb004030A8push eax;rgb resulting from previous calculus 004030A9push esi;form object instance004030AA call dword ptr[ebx+64h];MSVBVM_UnkFunc2(Set back form color) 004030AD test eax,eax004030AF fnclex004030B1jge short loc_4030C2;taken004030B3push64h004030B5push offset dword_402590004030BA push esi004030BB push eax004030BC call ds:__vbaHresultCheckObj004030C2lea edx,[ebp-44h]004030C5lea eax,[ebp-34h]004030C8push edx004030C9lea ecx,[ebp-24h]004030CC push eax004030CD push ecx004030CE push3;number of objects004030D0call ds:__vbaFreeVarList;free vars used in previous rtcRandomNext -name/serial check004030D6add esp,10h004030D9call VoidCheck004030DE test ax,ax004030E1jnz short loc_4030E8004030E3call SerialValidation004030E8mov dword ptr[ebp-4],0004030EF Destr_2_0:004030EF wait004030F0push offset loc_403110004030F5jmp short EndRoutineSerialValidation is the routine that checks the serial,so we will check it(see later).VoidCheck is the routine that checks if textfields are void,if so display the error message then exit.-destructors and ending stuff004030F7Destr_2_1:;called in case of error004030F7lea edx,[ebp-44h]004030FA lea eax,[ebp-34h]004030FD push edx004030FE lea ecx,[ebp-24h]00403101push eax00403102push ecx00403103push3;number of vars to free00403105call ds:__vbaFreeVarList0040310B add esp,10h0040310E retn0040310F EndRoutine0040310F retn;goes to0040311000403110mov eax,[ebp+8];ptr to form object00403113push eax00403114mov edx,[eax]00403116call dword ptr[edx+8];Zombie_Release(decrease reference count00403119mov eax,[ebp-4];for form object)0040311C mov ecx,[ebp-14h]0040311F pop edi;save registers area00403120pop esi00403121mov large fs:0,ecx;restore exception handler00403128pop ebx00403129mov esp,ebp;delete private stackframe0040312B pop ebp0040312C retn40040312F jmp loc_4011AC;__vbaFPExceptionare you beginning to feel the VB framework?It’s really easy as you can see,the structure of the code is always the same.Again let’s see all the code,so you can understand how easy is code analisys: SerialValidation004032C0push ebp;allocate private stackframe004032C1mov ebp,esp004032C3sub esp,8004032C6push offset vbaExceptHandler;allocate exception handler 004032CB mov eax,large fs:0004032D1push eax004032D2mov large fs:0,esp004032D9sub esp,158h004032DF push ebx;registers save area004032E0push esi004032E1push edi-destructors allocation and initialization004032E2mov[ebp+var_8],esp004032E5mov[ebp+var_4],offset Destructors_5004032EC mov eax,Form1Instance004032F1xor edi,edi004032F3cmp eax,edi;is form1instanced?004032F5mov[ebp+var_20],edi;zero vars004032F8mov[ebp+var_30],edi004032FB mov[ebp+var_40],edi004032FE mov[ebp+var_50],edi00403301mov[ebp+var_54],edi00403304mov[ebp+var_58],edi00403307mov[ebp+var_5C],edi0040330A mov[ebp+var_6C],edi0040330D mov[ebp+var_7C],edi00403310mov[ebp+var_8C],edi00403316mov[ebp+var_9C],edi0040331C mov[ebp+var_AC],edi00403322mov[ebp+var_BC],edi00403328mov[ebp+var_CC],edi0040332E mov[ebp+var_DC],edi00403334mov[ebp+var_EC],edi0040333A mov[ebp+var_FC],edi00403340mov[ebp+var_10C],edi00403346mov[ebp+var_11C],edi0040334C mov[ebp+var_13C],edi00403352mov[ebp+var_14C],edi00403358mov[ebp+var_15C],edi0040335E jnz short loc_403375;jump if form1istanced 00403360push offset Form1Instance00403365push offset FormDescriptor_0_0040336A call ds:__vbaNew2;if not instanced the form wuold 00403370mov eax,Form1Instance;have been created here-copy vars from form instance to local vars00403375mov ecx,[eax]00403377push eax;form object instance。

西洋参化学成分及药理活性研究进展_王蕾

西洋参化学成分及药理活性研究进展_王蕾

( 中国农业科院特产研究所,吉林 吉林 132109)
摘要: 目前西洋参皂苷类成分已分离鉴定出 49 种, 其中: 达玛烷型皂苷 32 种( 新近发现的人参皂苷 F1) , 齐墩果酸型皂苷 3 种, 奥克梯隆醇型皂苷 2 种, 其它类皂苷成分 12 种( 新近发现的人参皂苷 Rg6 和 Rg8) ; 西洋参中还含有脂肪酸类、聚炔类、糖类、氨 基酸类、甾醇类、黄酮类、无机元素类及挥发油类等活性成分。西洋参除传统的药理活性外, 最新药理实验证明, 西洋参果特别具
魏春雁等〔36〕从西洋参叶中分离 2 种黄酮单体 。孟 祥 颖 等 [37]首 次 发 现 根 和 果 中 黄 酮 的 存 在 。 1.9 其它成分
有人 先 后 对 西 洋 参 不 同 部 位 的 10~24 种 无 机 元 素进行了含量测定。此外, 还有 VA、VB、VB2、VB6 以及酶、 活性多酚类, 如咖啡酸和氯原酸等成分。
这类化合物具有挥发性, 有很强的抗白血病细胞 (L1210) 的细胞毒活性。Fujimoto Yasuo 等[27]从西洋参根 中分离出 3 种新的细胞毒聚乙炔:10- 甲氧 - 1- 烯 - 4 , 6- 二炔 - 3 ,9- 二醇;十七烷 - 1- 烯 - 9 ,10- 环氧 - 4 ,6-
第3期
1.2 糖类 Hikno Y 等从西洋参 中分离出 5 种具有降 血糖活
性 的 多 糖— ——Karusan A、B、C、D 和 E[17]; Chenliying 等 (1992) 从茎叶中分离出 1 种酸性杂多糖和 1 种中性多 糖, 分别为 panaxans L- 1(PL- 1)和 panaxans N(PN)[18,19]。 单糖类有葡萄糖、果糖和山梨糖; 低聚糖类有人参三 糖 、麦 芽 糖 和 蔗 糖 , 总 含 量 为 22.9%~34.7%; 总 糖( 包 括 淀 粉 、 果 胶 、 单 糖 和 低 聚 糖) 含 量 为 65.27% ~ 73.98%。 1.3 氨基酸类
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 『循序』結構非常直覺而簡單,也就是『程式碼被執行的順序為由上 而下,一個敘述接著一個敘述依序執行』。
結構: 範例:
14
6.3:結構化程式語言與程式設計 :
『選擇』結構
– 『選擇』結構則是代表程式在執行時,會依據條件(運算式的結果) 適當地改變程式執行的順序。 當滿足條件時,會執行某一敘述區塊(通常是接續的敘述區塊), 若條件不滿足時,則執行另一敘述區塊。 – 選擇結構可以分為三種: 單一選擇 雙向選擇 多向選擇
【範例】: Not (10>9) 結果為False(假) 【範例】: (10>9) And ("U"="u") 結果為False(假) 【範例】: (10>9) Or ("U"="u") 結果為True(真) 【範例】: (10>9) Xor ("U"="u") 結果為True(真) 【範例】: X=20 : Y=10 (X>Y) Xor (X<Y) 結果為True(真) 【範例】: 身高為150~160之運算式 → (height>=150) And (height<=160)
15
6.3:結構化程式語言與程式設計 :
– 單一選擇結構 單一選擇結構只能註明條件成立時,要執行的敘述區塊。 當條件不成立時將不會執行該區塊內的敘述,並且也不會執行任 何敘述而逕自前往執行選擇結構之後的敘述。而當條件成立時, 會先執行區塊內的敘述然後才前往執行選擇結構之後的敘述。
單一選擇結構: 範例:
23
6.4:Visual Basic的選擇敘述 : 的選擇敘述
7
6.2:演算法 :
『演算法』(Algorithm)
– 『解決某一特定問題而發展的一系列具有次序性且明確之步驟』。
在設計程式來解決問題之前,應該先思考解決問題的步驟,此時不一定要 直接將思考所得到的結論轉換為程式,也可以先將思考的過程以『演算法』 來加以呈現。演算法必須滿足下列五個特性:
– 輸入: 可以包含零個以上的輸入資料。 – 輸出: 至少有一個以上的輸出資料。 – 明確性: 每個步驟必須明確,不可模擬兩可。 – 有限性: 演算法必須在有限個步驟內停止並解決問題。 – 有效性: 每一個步驟都可以由人透過紙和筆來執行,並且必須能夠在有限的時間內 加以完成。
– 虛擬語言(Pseudo-Language)是演算法的描述語言,常見的虛擬語言有 SPARKS、Pidgin-ALGOL、Pascal-like等等,這些虛擬語言與實際的程式語 言通常很類似,但卻比較不在意語法的細節,因此甚至可以用一般的簡單敘 述來描述演算法的步驟。
11
流程圖與演算法範例
– 求1+3+5+...+N 流程圖: 演算法:
22
6.4:Visual Basic的選擇敘述 : 的選擇敘述
單一選擇敘述(If … Then … 敘述)
– If…Then…敘述的功用 當某個條件運算式(或稱判斷式)成立時,就去做某件事(或某些事),當 條件運算式不成立時,就不會做這些事,下面是一個生活實例。
If 下雨 Then 打傘
– 在Visual Basic中,寫上述的實例程式也是同樣的道理,只不過將『下雨』使 用運算式來表達。把『打傘』用程式敘述來表達。例如:If A>1 Then B=100 當A>1時,將B的變數值指定為100。 – 如果要做的事不只一件的時候,則可構成敘述區塊,以下是一個生活實例。 – 同樣地,該範例也符合Visual If 感冒了 Then Basic的語法,在從Then到 多喝水 End If之內所有事情就是 多休息 當If之後的條件運算式邏輯 成立時所要做的事情。 End If
4
6.1:運算式與布林資料型態 :
【範例】: 5.5 > 3.2 【範例】: 5.5 < 3.2 【範例】: A=4:B=3 A<B 【範例】: "j" > "q" 結果為True(真) 結果為False(假) 結果為False(假) 結果為False(假)
– 【字串大小之比較】: 字串大小的比較將以ASCII碼之數值來比較大小 例如:j的ASCII碼為6AH,q的ASCII碼為71H。 所以"q"比"j"大。 字串的比較首先會以第一個字元的ASCII碼來比較,若相等,則以 第二個字元的ASCII碼來比較,依序往後面的字元比較,直到分出 大小為止。
第六章 選擇結構
(應用:核取方塊、選項按鈕、框架) 應用:核取方塊、選項按鈕、框架)
1
章節預覽
理論
– – – – 6.1 運算式與布林資料型態 6.2 演算法 6.3 結構化程式語言與程式設計 6.10 Visual Basic的母件與子件
實作
– – – – – – – 6.4 Visual Basic的選擇敘述 6.5 巢狀式選擇敘述 6.6 多向選擇敘述與函數 6.7 核取方塊控制項 6.8 選項按鈕控制項 6.9 框架控制項 6.11 本章整合應用實例
2
6.1:運算式與布林資料型態 :
選擇結構依靠的是布林資料型態的變數值
– 因為布林資料型態只能提供真(True)或假(False)兩種變數值,因 此十分適合做為選擇結構的條件。
布林資料型態除了可以使用單一變數來表示,條件運算式的 結果也都是布林資料。
– 例如:A>B。 當A大於B時,代表(A>B)運算式結果為真(True), 當A小於等於B時,代表(A>B)運算式結果為假(False)。
16
6.3:結構化程式語言與程式設計 :
– 雙向選擇結構: 雙向選擇結構則能夠指定條件成立時要執行的敘述區塊,也能指 定條件不成立時要執行的敘述區塊。敘述區塊執行完畢將會繼續 執行選擇結構之後的敘述。
雙向選擇結構: 範例:
17
6.3:結構化程式語言與程式設計 :
– 多向選擇結構: 多向選擇結構可以設定條件值為各類狀況時要執行的敘述區塊, 甚至還可以指定不符合所列之各類狀況時要執行的區塊。敘述區 塊執行完畢將會繼續執行選擇結構之後的敘述。
– 前測式重覆結構: 先測試條件,若條件為真,才執行敘述區塊(即迴圈內敘述),當敘述區 塊執行完畢後,會再回到測試條件重新測試條件,若條件仍舊成立,則再 一次執行敘述區塊。如此反覆『測試』、『執行敘述區塊』。直到條件不 成立時才會離開迴圈。因此,在執行敘述區塊時,應該要有改變測試值的 機會,否則將造成無窮迴圈(迴圈永不停止)。
12
6.3:結構化程式語言與程式設計 :
結構化程式語言最大的特色即為不允許使用『無條件式跳躍 指令』(Goto)。除此之外,更詳細地來說,一個程式語言 足以稱為結構化程式語言,必須具有下列特性:
– 只允許使用三種基本的邏輯結構:循序、選擇和重覆。(不允許或不 建議使用Goto) – 使用上而下(Top-down)的程式設計技巧。 – 具模組獨立性。
9
6.2:演算法 :
流程圖(Flowchart)
– 『流程圖』使用簡單的圖形符號表達處理問題的步驟,每一個圖形所 代表的作業功能不太相同,並且使用箭頭來表示作業的流程。 流程圖之製作通常佔用較大的紙上面積,因此較適合用於處理簡單的 問題或某個子問題的細部邏輯。常用的流程圖符號如下表所列:
符號 符號名稱 起始/結束符號 處理符號 輸入/輸出符號 功能 流程圖的起點或終點 代表處理問題的步驟 表示該步驟為資料輸 入或資料輸出
多向選擇結構: 範例:
18
6.3:結構化程式語言與程式設計 :
『重覆』結構
– 使用『重覆』結構時,電腦會重複執行某一段敘述區塊,直到某個條 件成立或不成立時,重覆動作才會停止。通常我們將『重覆』結構稱 之為『迴圈』(loop) 。 – 重覆結構可以分為兩種: 前測式 後測式
19
6.3:結構化程式語言與程式設計 :
10
範例
6.2:演算法 :
符號 符號名稱 決策符號 連結符號 跨頁連結符號 流程方向 功能 根據符號內的條件,決 定下一步驟。 當流程圖過大時,做為 兩塊流程圖之連接點 當流程圖過大時,做為 兩頁流程圖之連接點 工作流程之方向 範例
演算法虛擬語言(Algorithm Pseudo-Language)
輸入(Input):輸入一個正奇數N 輸出(Output):輸出Sum,Sum= 1 + 3 + 5 + … + N 【解決問題的步驟】: Step 1:輸入一個正奇數N Step 2:令Sum ← 0 Step 3:令i← 1 Step 4:若iMod 2 = 1則執行Step5,否則跳至Step 6。 Step 5:令Sum ← Sum +i Step 6:令i←i+ 1 Step 7:若i≦N,則跳回到Step 4執行,否則執行Step 8。 Step 8:輸出Sum Step 9:結束程式執行
運算式種類分為關係運算式與邏輯運算式兩種。
3
6.1:運算式與布林資料型態 :
關係運算式
– 『關係運算式』是用來提供字串或數值比較的功能。經過運算比較之 後,結果將為True(真)或False(假)。 Visual Basic提供關係運算子如下表所列:
關係運算子 = <> > < >= <= 意義 相等 不相等 大於 小於 大於或等於 小於或等於 Visual Basic關係運算式 X=Y X<>Y X>Y X<Y X>=Y X<=Y 數學表示式 X=Y X≠Y X>Y X<Y X≧Y X≦Y
前測式重覆結構:
範例:
20
6.3:結構化程式語言與程式設計 :
– 後測式重覆結構: 先執行迴圈內的敘述區塊一次,然後再測試條件,若條件為真,則重覆執行迴圈內 敘述區塊,當敘述區塊執行完畢後,重回到測試條件重新測試條件,若條件仍舊成 立,則再一次執行敘述區塊。如此反覆『測試』、『執行敘述區塊』。直到條件不 成立時才會離開迴圈。因此,迴圈內的敘述區塊至少會被執行一次。至於實際被執 行多少次,則必須視條件值而定。
相关文档
最新文档