iFix定时器控件使用心得

合集下载

高手之路——iFix学习秘籍

高手之路——iFix学习秘籍

.《高手之路——iFix学习秘籍》这里不教你使用ifix,只教你如何学习ifix,是一篇学习指南性的文章。

很多学习ifix 的朋友,尤其是初学者,总是摸不着门路,不知该如何学习才好,我根据自身的学习体会和辅导他人的经验,对宏观的学习路径进行了简单总结,希望对朋友们有所帮助。

想要成为ifix 的高手,要学的东西实在是不少,对其不了解的朋友,看一看,对于你想达到的水平都需要学习什么内容,心里有个底。

我要讲内容的分为七部分(或说七个层次),多了点儿,其实核心也就是三部分内容。

后面就都是辅助修炼,用以达到高高手的层次。

第一步要做的:基础知识是一切的基础,如果你不具备任何自动化知识也从未使用过任何组态软件,那么你需要了解组态软件的基本概念,什么叫组态软件,它能做什么、它是怎样工作的——也就是工作机制(具体请参考相关资料,如154教程),然后再开始进一步学习。

如果你对组态平台有一定的经验,那么你起步会很容易,因为各组态系统的基本功能和用法是非常近似的,仔细阅读ifix电子书或154教程,就可以很快掌握这些基本组态功能的实现方法。

在学习过程中,如果遇到某些和编程相关的地方,可以简单了解然后跳过。

第二步要做的:ifix除了基本的图形组态功能以外,还提供了强大的、基于VBA平台的脚本功能。

所以,如果你想让你的组态画面,具备除基本组态以外的更高级的功能,那么你就必须熟练掌握VBA编程,建议通过学习VB6.0来获得这种能力,因为VBA可以理解为VB6的子集(需要注意,更高的VB版本如和VB2005并不适合)。

买一本《VB6+从入门到精通》一类的书就基本够用了。

通过学习,应达到这样的结果——理解VB编程语言的基本概念,具备编程的基本能力和技巧。

其中有一个重要的概念,必须尽可能的透彻理解和熟练掌握,那就是“面向对象编程”,如果这一点没有做到,最好不要进行下一步学习。

第三步要做的:学会了VB并不等于学会ifix编程,首先,VB和VBA是有差异的,VBA的功能稍弱,应该在应用过程中注意到并体会这些差异(例如VBA窗体中不支持控件数组、常用控件的特性也有不少差异,VBA使用的是MSForms2.0的控件)。

iFIX技术总结

iFIX技术总结

iFix技术总结1.iFIX运行1.安装iFIX,以及所有补丁;2.点击桌面上的快捷方式iFIX4.0- Proficy iFIX便可进入iFIX系统。

2.系统配置点击【开始】菜单-【所有程序】-【Proficy HMI SCADA – iFIX4.0】-【系统配置】,进入“系统配置”界面;或者进入iFIX系统后,点击工具栏的图标,也可进入“系统配置”界面。

然后通过菜单中的【文件】-【新建】,新建一个SCU,依次进行以下配置。

2.1. 本地启动1.点击【配置】-【本地启动】,进入配置页面;2.配置服务器,主用SCADA的本地节点名修改为SCADA1,备用SCADA的节点名为SCADA2,逻辑节点名均为SCADA;3.配置客户端,本地节点名与逻辑节点名相同,都为FIX+IP地址。

例如,该客户端的IP地址为172.16.2.236,节点名就是FIX236;4.其他项均为默认配置。

2.2. 路径配置1.点击【配置】-【路径】,进入配置页面;2.修改“工程项目”的地址为D:\IFIXPRJ,点击【修改工程项目】按钮,系统弹出对话框,如下图所示;3.点击【是】,退出对话框后,再点击【确定】按钮,弹出对话框,如下图所示;4.点击【创建全部】,系统提示如下图所示:5.点击【继续】,配置完成。

2.3. SCADA1.点击【配置】-【SCADA】,进入配置页面;2.点击“I/O驱动器名称”框右面的选择按钮,弹出所有可用的驱动器名称,依次增加OPC、SIM、SM2,配置完成。

如下图所示:2.4. 网络配置只有SCADA(服务器)需要进行网络配置,Client(客户端)不需要进行网络配置。

点击【配置】-【网络配置】进入配置页面。

2.4.1.SCADA冗余配置1.以SCADA1为例,进入网络配置页面,“网络”选项选择“TCP/IP”,如下图所示:2.在“远程节点名”项中输入“SCADA”,点击【添加】按钮,将“SCADA”添加到“配置远程节点:”项下面的框中,然后点击【配置】按钮,进入远程节点配置页面;3.选择“启用逻辑节点名”,在“主节点”项中输入“SCADA1”,在“备节点”中输入“SCADA2”,如下图所示:4.点击【确定】按钮,返回“网络配置”页面,可看到SCADA节点已经配置成冗余节点,点击【确定】按钮,添加成功;5.此外,还需要在hosts(C:\WINDOWS\system32\drivers\etc)文件中做相应的配置。

《iFix定时器控件使用心得》

《iFix定时器控件使用心得》
这究竟是怎么回事呢?其实这是StartTime属性在起作用,StartTime属性的默认值是0:00:00,表示从午夜0点0分0秒开始,在这种情况下,如果设置为10秒钟的间隔,定时器被触发的时间将是每一分钟的0秒、10秒、20秒……50秒,如果从某一分钟的18秒启动了定时器,那么定时器第一次被触发的时间将会是20秒,也就是说,从启动到第一次触发之间仅有2秒钟的延时,如果你从15秒启动,会得到5秒钟的延时,这就是为什么你会觉得第一次的延时是“随机”的。
Private Sub Timer1_OnTimeOut(ByVal lTimerId As Long)
If Timer1.Property1 < 20 Then
Timer1.Property1 = Timer1.Property1 + 1
Exit Sub
方式一:
用如下代码启动:Timer1. TimerEnabled=True
Timer1. StartTimer
用如下代码停止:Timer1. TimerEnabled=False
方式2:
在画面或调度的Initializes事件中加入:Timer1. TimerEnabled=True
如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。如果只将TimerEnabled设为True,但是不调用StartTimer方法,定时器是不会开始工作的。如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。也就是说有两种控制定时器启/停的方式:

定时器实验的心得体会

定时器实验的心得体会

定时器实验的心得体会在定时器实验中,我通过实际操作和观察,深刻认识到了定时器的重要性和应用价值。

在这个过程中,我不仅学到了关于定时器的基本原理和工作方式,还掌握了使用定时器进行时间控制和计时的技巧。

以下是我在定时器实验中的心得体会。

定时器实验是计算机科学与技术专业中一项非常基础且重要的实践内容。

通过这个实验,我了解到定时器可以用于各种领域,如电子设备、自动化控制系统等。

在实验过程中,我首先了解了定时器的基本原理,它是一种能够产生固定时间间隔的电子元件。

在实验中,我学会了如何设置定时器的参数,包括预定计时时间和选择计时模式。

我使用了如计时器模式、定时器/计数器模式等来实现不同的功能。

通过调整这些参数,我可以灵活地控制定时器的工作方式,满足不同的需求。

在实际操作中,我发现正确的设置和使用定时器非常重要。

如果参数设定不当,定时器的计时结果可能不准确,甚至无法正常工作。

因此,在实验过程中,我非常注重仔细阅读实验指导书和相关资料,确保每一步操作都正确无误。

这样做可以避免不必要的麻烦和错误。

在实验过程中,我还注意到定时器的精确性和稳定性对实际应用非常重要。

因为定时器的主要功能是控制和计时,所以对时间的准确性要求比较高。

我发现一些额外因素,如温度、电压等,都可以对定时器的精确性产生影响。

因此,在实验中,我会尽量保持实验环境的稳定,以确保定时器的准确性。

通过这次实验,我不仅仅了解到定时器的基本原理和使用技巧,还深刻认识到定时器对各个领域的重要性。

定时器的精确计时和时间控制功能在电子设备、通信系统等方面都有广泛的应用。

对于我作为一名计算机科学与技术专业的学生来说,掌握定时器的原理和使用方法,对我的学习和未来的工作都具有极大的帮助。

总结起来,定时器实验是一次非常有价值的实践活动。

通过这个实验,我不仅增加了对定时器的理解和认识,还提升了实际操作和问题解决的能力。

我相信,在今后的学习和工作中,定时器这个重要的电子元件将继续发挥它的作用,并为各种应用领域带来更多的便利和创新。

定时器实验的心得体会

定时器实验的心得体会

定时器实验的心得体会定时器是一种常见的电子元器件,广泛应用于各种电子设备和控制系统中。

通过对定时器进行实验,我深刻认识到了它的重要性和灵活性。

在此分享一下我在定时器实验中的心得体会。

一、实验目的及原理定时器实验的目的是通过搭建电路以及设置参数,使定时器按照预设的时间间隔产生输出信号。

我们常用的定时器有555定时器和计时器,其工作原理可简要概括为:根据输入脉冲和外部电路的组合,定时器内部的电子元件通过一系列的逻辑运算和计数操作,最终产生输出信号。

二、实验准备在进行定时器实验之前,首先需要准备一些实验设备和材料。

包括定时器芯片、电源、电路板、电子元件等。

同时还需了解和掌握定时器的工作原理及参数设置。

三、实验过程1. 连接电路将定时器芯片与电源、电路板以及所需的其他元件连接起来。

在连接电路时需注意各元件的正负极连接,可根据实验手册或相关资料进行正确的线路连接。

2. 设置参数根据实验要求,合理设置定时器的参数。

参数包括时间间隔、输入脉冲频率、计数方式等。

可以通过旋钮、按键或其他方式进行参数的设置和调整。

3. 运行实验正常连接电路并设置好参数后,启动定时器进行实验。

观察实验过程中定时器的输出状态,如LED灯的亮灭或者其他外部装置的运行情况。

记录实验结果并进行数据分析。

四、实验心得在进行定时器实验的过程中,我得出了一些心得体会。

1. 参数设置的灵活性定时器的参数设置非常灵活,可根据不同的需求进行调整。

通过合理设置参数,可以实现各种时间间隔的控制,满足不同场景和应用的需求。

2. 实验结果的稳定性经过多次实验观察发现,定时器的输出结果非常稳定可靠。

在合适的电路和环境条件下,定时器可以精确地按照设定的时间间隔产生输出信号,为后续的电子系统控制提供准确数据。

3. 实验设计的重要性在实验过程中,设计合适的电路原理图和接线方式非常重要。

良好的实验设计有助于保证实验的顺利进行以及实验结果的准确性。

4. 实验过程的细致观察定时器实验过程中需要进行细致观察和记录,包括参数调整、输入脉冲频率的变化以及输出信号的变化等。

IFIX使用总结

IFIX使用总结

目录一、软件安装 (3)1、安装步骤 (3)2、第三方软件安装 (3)二、IFIX基本知识 (4)1)SCADA配置 (5)2)路径配置 (5)3)、I/O驱动配置 (6)4)、报警配置 (7)5)、任务配置 (11)6)、安全配置 (11)7)、数据库配置 (15)8)、人机界面 (18)9)、历史库定义 (18)10)、任务控制 (20)11)、如何更改画面高度 (22)12)、标签组使用 (22)三、如何实现IFIX的MBE仿真 (23)1)、首先在ifix上位机软件上安装好MBE驱动 (24)2)、添加配置好通道和数据块IP填电脑IP (25)3)、设置I/O地址范围,不可超出范围,下图模拟量地址有26个 (26)4)、打开modscan32 (27)5)、“connection”→“connect”出现下图 (28)6)、“connect using”选择“TCP/IP”,“IP Address”填入电脑IP,“Service Port” 与modsim32里设置一样。

然后OK (29)7)、打开modsim32 (29)8)、建立连接: (30)9)、“connection”→“connect”→“modbus/TCP Svr” (30)10)、然后2个软件的:Device Id、Address、MODBUS point Type、Length、必须一样,这样通讯建立! (31)四、常见问题 (32)1)、怎么实现登陆 (32)2)、关于安全,在配置安全以后,重装IFIX时会出现严重错误 (32)3)、VB中语句Private conData As ADODB.Connection运行提示用户定义类型未定义,是怎么回事? (33)4)、如何打开以前的工程 (33)五:常用脚本 (33)1)、按钮二次确认 (33)2)、脉冲输出示例 (34)说明:里面IFIX用MBE驱动为例,现在只是根据自己在使用IFIX中遇到问题总结!共同进步!IFXI使用总结一、软件安装1、安装步骤【说明】在安装过程中,弹出的设置窗口选择默认设置,以下列出需注意的地方。

ifix技巧

ifix技巧

IFIX技巧(之一)1、从后台调度中访问或修改全局变量的代码描述:在iFIX中使用调度要后台运行的时候需要启动FixBackgroundServer程序,而该程序实际上是启动了独立于Workspace的进程,所以在后台调度中不能直接访问全局变量。

下面的例子代码描述了怎样访问的方法:" First get a pointer to the Application object in the WorkspaceDim WrkSpcApp As ObjectSet WrkSpcApp = GetObject("", "Workspace.Application")" Get a pointer to the Variable object called Variable1 in the User globalsDim TargetVar As ObjectSet TargetVar = WrkSpcApp.Documents("User").Page.FindObject("Variable1")" Set the current value in the variable object to a 1TargetVar.CurrentValue = 12、脉冲输出示例Dim PauseTime, StartCloseDigitalPoint "Fix32.FIX.DDD.F_CV"PauseTime = 0.8 " 设置暂停时间。

Start = Timer " 设置开始暂停的时刻。

Do While Timer < Start + PauseTimeDoEvents " 将控制让给其他程序。

LoopOpenDigitalPoint "Fix32.FIX.DDD.F_CV"3、显示通讯状态Is there a way to view communication status of the driver without using Mission Control? ResolutionUsing a digital input block reading a hardware register, the A_cualm field will be utilized. Chain the DI block to an event action block to a digital output tag using the SIM driver. In the event action block use the following script:IF the A_cualm =comThen set DO =1Else set the DO=0A data link can be made to the Sim block. The value of this block will determine the status of the communcation.4、用VBA脚本打开和关闭调度为了打开和关闭调度,必须用下列方法:打开一个名字为“ddd”的调度:Application.Documents.Open "C:\Dynamics\pdb\ddd.evs"关闭一个名字为“ddd”的调度:Application.Documents("ddd").Close注意:关闭调度时不用扩展名 .evs 。

定时器实验的心得体会

定时器实验的心得体会

定时器实验的心得体会在学习电子技术的过程中,进行定时器实验是一项非常重要且有趣的实践活动。

通过这次实验,我不仅对定时器的工作原理有了更深入的理解,还提高了自己的动手能力和解决问题的能力。

实验开始前,我对定时器的概念仅仅停留在理论层面,知道它是一种能够按照设定的时间间隔产生定时信号的器件,但对于如何实际应用和调试却一无所知。

怀着既期待又紧张的心情,我走进了实验室。

实验所使用的器材包括电路板、定时器芯片、电阻、电容、示波器等。

看着这些陌生而又熟悉的器件,我心里暗暗给自己打气,一定要顺利完成实验。

首先,根据实验指导书,我开始连接电路。

这可不是一件简单的事情,每一根导线都要连接到正确的位置,否则整个电路就无法正常工作。

在连接的过程中,我小心翼翼,生怕出现差错。

然而,尽管我已经十分谨慎,还是出现了几次连接错误,导致电路短路或者无法工作。

每当遇到这种情况,我都会静下心来,仔细检查每一个连接点,找出问题所在并进行修正。

电路连接完成后,接下来就是对定时器进行参数设置。

通过调节电阻和电容的值,可以改变定时器的定时时间。

这需要我们对相关的计算公式有清晰的理解,并且能够根据实验要求准确计算出所需的电阻和电容值。

在这个过程中,我深刻体会到了理论知识与实际操作相结合的重要性。

如果只是死记硬背公式,而不懂得如何运用,那么在实验中就会遇到很多困难。

设置好参数后,我迫不及待地打开电源,想要看看定时器是否能够正常工作。

然而,结果却并不如我所愿,示波器上显示的波形并不是预期的定时信号。

这让我感到有些沮丧,但我并没有放弃。

我开始仔细检查电路连接和参数设置,一遍又一遍地核对,最终发现是一个电阻的阻值选错了。

更换了正确的电阻后,再次打开电源,示波器上终于显示出了完美的定时信号,那一刻,我心中充满了成就感。

在整个实验过程中,我遇到的最大困难就是对定时时间的精确控制。

由于电阻和电容的精度问题,实际的定时时间与理论计算值总是存在一定的偏差。

为了减小这种偏差,我尝试了多种不同的电阻和电容组合,并且不断地调整参数,经过多次尝试和改进,终于能够将定时时间控制在误差允许的范围内。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iFix定时器控件使用心得
iFix的定时器控件,经常会把初学者搞得头晕脑涨,我说说自己的心得,供大家参考。

该控件是基于调度功能的,所以有一些用法和其它编程平台(如VB)里的定时器不太一样。

一、定时器的启动/停止
如果在编辑时TimerEnabled设为True,则运行时定时器会自动启动。

如果在编辑时TimerEnabled设为False,则运行时需要先将TimerEnabled设为True,然后调用StartTimer方法。

如果只将TimerEnabled设为True,但是不调用StartTimer 方法,定时器是不会开始工作的。

如果要停止定时器,可以调用StopTimer方法,也可以直接将TimerEnabled设为False。

也就是说有两种控制定时器启/停的方式:
方式一:
用如下代码启动:Timer1. TimerEnabled=True
Timer1. StartTimer
用如下代码停止:Timer1. TimerEnabled=False
方式2:
在画面或调度的Initializes事件中加入:Timer1. TimerEnabled=True
用如下代码启动:Timer1. StartTimer
用如下代码停止:Timer1. StopTimer
二、以“连续”方式使用
以“连续”方式使用时,你会发现这样的现象,例如你希望一个画面被打开10秒钟后自动关闭,你会将定时器的Interval 属性设为10000,事实上却是,画面不到10秒就会被关闭,而且每次的延时时间还不是固定的,似乎是随机的,有时几乎是10秒,有时还不到1秒。

这个举例中,定时器仅运行了1次(因为画面已经被关闭了),如果定时器一直运行下去,你还会发现,除了第一次的延时是“随机”的,从第二次开始,延时都是准确的。

这究竟是怎么回事呢?其实这是StartTime属性在起作用,StartTime属性的默认值是0:00:00,表示从午夜0点0分0秒开始,在这种情况下,如果设置为10秒钟的间隔,定时器被触发的时间将是每一分钟的0秒、10秒、20秒……50秒,如果从某一分钟的18秒启动了定时器,那么定时器第一次被触发的时间将会是20秒,也就是说,从启动到第一次触发之间仅有2秒钟的延时,如果你从15秒启动,会得到5秒钟的延时,这就是为什么你会觉得第一次的延时是“随机”的。

好的,既然知道了原因,自然也就有了解决的方法,那就是在每一次调用StartTimer方法之前,将StartTime属性设为当前时间,即Timer1. StartTime = Now就搞定了。

例如在8:15:23秒启动,间隔10秒,第一次触发将会是在8:15:33秒的时候。

那是不是所有以“连续”方式使用时,这样作就都OK了呢?不是。

这个方法是否有效(也就是得到精确的延时),要看你所希望的延时时间有多长,如果延时是10秒或更长,那没问题,这样是唯一正确且简便的方法。

但如果你设置的延时间隔比较小,如3秒以内,甚至是毫秒级的,那么这个方法就会产生比较严重的误差。

因为StartTime属性的时间精度只达到秒级,也就是说,实际的运行效果还是会有一定的误差,当然,这个误差最大不会超过1秒,所以一般来说对于5秒以上的延时设置,这个误差可以忽略。

但如果延时设置是2秒,然后产生了接近1秒的误差,这就成问题了,误差率将近50%啊!如何解决此类问题呢?有办法,只是稍复杂一点。

例如,我们希望做到这样一个效果——有一个按钮对象(名为cmd1),当用鼠标点击这个按钮时,按钮消失不见,2秒钟之后又出现。

也就是说在点击的时候把按钮的Visible属性设为False,并且启动一个定时器控件,2秒之后在定时器的OnTimeOut事件代码中,再把cmd1的Visible属性设为True。

如何比较精确地实现这2秒的时间间隔呢?具体做法是:将定时器的Interval属性设为100毫秒,定义一个模块级变
量intTimes,定时器每触发1次,这个变量的值就增加1,定时器被触发20次后,变量的值为20,总时间正好是2秒。

代码如下:
Private Sub Timer1_OnTimeOut(ByV al lTimerId As Long)
If intTimes < 20 Then
intTimes = intTimes + 1
Exit Sub
End If
Timer1.StopTimer
intTimes = 0
cmd1.Visible = True
End Sub
这样,就很好的解决了时间精度的问题(误差在100毫秒以内)。

但是这样做还有一点小的瑕疵,尽管变量intTimes 只有一个地方使用,依然必须在通用区进行定义,代码的内敛性太差,移植不方便。

但这个问题也可以解决。

定时器控
件有一些特殊的属性:Property1~ Property10,这些属性你可以用来存放任何值。

我们就要利用这些属性,一个就够,我们就选Property1。

首先,在编辑时将Property1 设为0,然后在OnTimeOut事件中加入如下代码:
Private Sub Timer1_OnTimeOut(ByV al lTimerId As Long)
If Timer1.Property1 < 20 Then
Timer1.Property1 = Timer1.Property1 + 1
Exit Sub
End If
Timer1.StopTimer
Timer1.Property1 = 0
cmd1.Visible = True
End Sub
三、堵塞问题
就是在连续运行方式下,OnTimeOut事件中的代码中,一定要小心使用循环结构,需要循环的话,尽量使用For循环。

如果必须要使用Do…Loop,首先要绝对避免任何死循环的可能,即使不会发生死循环,也一定要保证循环次数是可以预见的并且总循环时间一定要小于定时器的间隔时间,比如有个朋友发生过这样的问题,他在一个画面中使用了一个COMM控件,用于和设备进行串口通讯,他在一个定时器中编写脚本,运行时,有时会频繁的出现假死状态,我在电话中帮他解决问题,经过反复询问,最后发现罪魁祸首就是循环。

他在发出一个读取指令后,用一个Do…Loop不停的检测是否返回了所需要的数据,如果有则结束循环,但有些时候通讯状态不是很好,数据返回比较慢,甚至是严重超时,结
果循环就无限期的进行下去,CPU被占满,系统假死,他改用别的方法后,问题解决。

如果时间间隔设置的比较短,即使代码中没有循环结构,有些操作也会导致运行时间超过定时器的间隔时间,如果这个超时是可接受的正常情况,那么就要注意另一个问题,那就是定时器的QueueEvents属性。

它决定了当定时器某一次触发的脚本还没有执行完毕,下一次触发时间就到时了,这种性况下,新的事件是排队等候,还是被丢弃掉。

默认值是False,如果希望它们“一个都不能少”,那么就要把这个属性改为True。

但你必须保证这种超时只是偶然发生,否则,这个队就会也排越长,直到崩溃。

四、挂起问题
还有一个要注意的问题,如果你在前台(工作台)画面中使用了连续方式的定时器,那么你一定要知道,当你显示了一个有模式的窗体或者使用MsgBox函数时,工作台中的任何脚本都会被挂起(也就是停止运行),同样,定时器也不会再继续触发,直到窗体或消息框被关闭。

比如你像前面提到的那个老兄,在画面利用定时器进行通讯,那么,当显示有模式窗体或消息框时,通讯工作就会被停止,直到窗体或消息框被关闭。

所以如果需要通讯的话,最好编写一个独立的EXE程序比较好。

再比如,你要每小时整点的时候进行一次抄表工作,定时器的时间间隔为1小时。

那么如果8点整的时候,你已经有一个消息框显示后未被关闭,这次抄表就会缺失。

此类工作应该在后台调度中进行。

最后再提一个小事,默认情况下间隔时间的单位是毫秒,3秒钟就写作3000,但如果3小时怎么写呢?10800000?太夸张了。

其实可以用“时:分:秒”的格式,3小时写作3:00:00,超过1秒的时间间隔都可以用这种格式。

但是只能在属性窗口中这样写,新建定时器的对话框中不行。

以上是我在工作中使用定时器的一些心得,仓促写下,如果有错漏之处请告诉我,我尽快修正,以免误人。

定时器的其他用法,由于我使用的较少,就不乱说了。

相关文档
最新文档