串行端口多线程测试方法技术

技术编号:2868526 阅读:208 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种串行端口的多执行绪测试方法,用于对串行端口进行多执行绪测试,通过多执行绪以及分片机制,增加测试过程中对串行端口的压力,提高测试效率,本发明专利技术包括下列步骤:执行多个测试执行绪,并将每个测试执行绪分割成多个执行绪片段,从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪,在临界区执行当前执行绪的当前执行绪片段的测试,退出临界区,其它未测试完的执行绪继续根据临界区的互斥规则进行竞争。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种串行端口测试方法,特别是指一种使用多执行绪对串行端口进行测试的方法。
技术介绍
随着计算机使用范围越来越广泛,对计算机的各种硬设备进行检测的要求也越来越高。串行端口(COM PORT)作为PC中一个不可或缺的I/O(输入/输出)端口,担负着与外围或其它PC之间通讯的重要任务。由于串行端口自身的特点的限制,在其数据传输过程中,每一个数据帧都必须按位连续传输,中间无法中断;而且每一时刻串行端口的状态(如接脚状态,以及波特率、帧格式(Frame Format)等)也只能是唯一的,若多个执行绪(Multi Thread)同时存取串行端口就会产生不可预知的后果。因此,针对串行端口的测试的传统做法是以单执行绪串行的方式进行,其方法如下在操作系统的执行绪管理机制调度下,某一个测试执行绪进入处理器,并占用串行端口进行测试;当这个测试进程完成、且退出之后,操作系统才能将下一个进程调入处理器,并占用串行端口进行测试。这种单执行绪的测试方法,不但效率低下,而且对于多任务的系统如Windows 2000,如果当前测试执行绪测试完毕退出处理器后,在下一执行绪进入处理进入处理器并占用端口进行测试之前,串行端口就会处于闲置状态,这样就使得测试压力相应降低了,不利于进行大规模的串行端口测试。此时需要一种简单、高效,并可对串行端口增加测试压力的串行端口执行绪测试方法来解决这一问题。
技术实现思路
本专利技术为解决上述问题提出了一种串行端口多执行绪测试的方法,本专利技术的主要目的在于揭露一种可以增加测试过程中对串行端口的压力,提高测试效率的测试方法。为达上述目的,本专利技术所提的一种串行端口的多执行绪测试方法,包括下列步骤执行多个测试执行绪,并将该每个测试执行绪分割成多个执行绪片段;从该多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪;在临界区执行该当前执行绪的当前执行绪片段的测试;退出临界区,其它未测试完的执行绪继续根据临界区的互斥规则进行竞争。与传统的检测方法相比,本专利技术提供的方法中,虽然每个执行绪实际上并没有同时运行,但是每个执行绪片段每一次运行的时间相对较短,可以近似地认为各个执行绪是并发运行的。另外,当某个执行绪退出处理器,暂停运行时,其它的执行绪仍然有可能被运行。这样,无疑提高了测试的效率;同时,串行端口被闲置的可能性也相应降低,测试压力得以提高。在执行绪较多的情况下,这种效率提升尤为明显。附图说明图1是本专利技术的的测试的逻辑示意图;图2是本专利技术的的流程图;图3是本专利技术所提的执行该当前执行绪的测试的流程图;图4是本专利技术所提的在临界区内执行该当前测试执行绪的当前执行绪片段的流程图;图5是本专利技术所提的确定当前测试波特率的流程图;图6是本专利技术所提的确定当前测试执行绪在所有波特率下的测试情况的流程图。图中符号说明10 执行的待测试的执行绪20 执行的待测试的执行绪M 执行的待测试的执行绪10a~10n被分割后的执行绪片段20a~20n被分割后的执行绪片段Ma~Mn 被分割后的执行绪片段10a 进入临界执行的执行绪片段30 临界区步骤210 执行多个测试执行绪,并将该每个测试执行绪分割成多个执行绪片段步骤220 从多个测试执行绪中选择一个具有临界区存取权限的当前测试执行绪步骤230 在临界区内执行前测试执行绪的当前执行绪片段步骤240 退出临界区,并回到步骤220步骤310 该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入临界区步骤320 该执行绪片段占用串行端口并对该串行端口的帧格式(frame format)进行设置步骤330 确定当前测试波特率步骤340 根据该当前测试波特率,按照预先设定的字节数进行数据传输测试步骤350 释放对临界区的占用步骤360 确定当前测试执行绪在所有波特率下的测试情况步骤410 该当前执行绪中的当前执行绪片段按照临界区的互斥规则段进入临界区步骤420 该执行绪片段占用串行端口并对该串行端口的帧格式(frame format)进行设置步骤430 确定当前测试波特率步骤440根据该当前测试波特率,按照预先设定的字节数进行数据传输测试步骤450释放对临界区的占用步骤510该当前测试执行绪在该波特率下测试尚未完成时,将波特率设置为当前值步骤520该当前测试执行绪在该波特率下测试全部完成时,将波特率设置为未经测试的值步骤610该当前测试执行绪还有未经测试的波特率时,则该执行绪继续和其它待测试执行绪竞争临界区的存取权限步骤620当前测试执行绪完成所有波特率下的测试时,则结束该执行绪具体实施方式以下结合附图对本专利技术的流程进行说明图1是本专利技术的的测试逻辑示意图,其说明如下首先将待测试执行绪10、20、M分割成多个执行绪片段(10a、10b、......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn),然后从多个执行绪(10a、10b、10c、10d......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn)中选择一个具有临界区存取权限的当前测试执行绪10;再在临界区30内执行该当前测试执行绪10的当前执行绪片段10a;最后释放对临界区30的占用。所谓临界区就是指一段代码,操作系统对于临界区的实现就是利用特定结构,以及对应的算法,提供的对一段特殊代码的保护或者说上一种同步机制。从其物理意义上讲,与普通代码不同的是,这段代码受到操作系统的监控,一旦某个运行的执行绪进入这段代码,就不允许其它的执行绪共享这段代码,其它请求进入这段代码运行的执行绪就只能等候,直到临界区中的代码退出为止。在Windows 2000中及Windows NT中,临界区的建立是通过EnterCriticalSection()、∷LeaveCriticalSection()这一对API函数来实现的。这两个函数之间的代码,就是临界区代码。出于提高运行效率的考虑,临界区中的处理必须尽可能的少,因为若在临界区中进行过多的处理会带来“阻塞”,我们不能让其它的执行绪因被阻塞太长的时间而得不到处理。所以临界区内代码的长度应该适当,一个字节或多个字节均可,只要能够保证这段代码在临界区内高效的执行。应该注意的是,这两个函数必须成对出现执行前者进入临界区后,必须执行后者释放它,否则,执行绪将永远不能离开临界区。请参阅图2,图2是本专利技术的流程图,其流程如下首先执行多个测试执行绪10、20、M,并将该每个测试执行绪分割成多个执行绪片段10a~10n、20~20n、Ma~Mn(步骤210);然后根据临界区30的互斥规则,从多个测试执行绪(10a、10b、......10n)、(20a、20b、......20n)、(Ma、Mb、......Mn)中选择一个具有临界区30存取权限的测试执行绪10(步骤220);再在临界区30内执行该当前执行绪的当前执行绪片段10a的测试(步骤230);最后释放对临界区30的占用(步骤240)。在windows下执行多个测试执行绪,是通过一个API函数∷CreateThread()来实现的,具体的实现方法如下首先设置一个执行绪实现函数,然后通过执行CreateThread()函数,将实现函数的指针传递进去,这个执行绪就建立了。此时这个执本文档来自技高网...

【技术保护点】
一种串行端口多执行绪测试方法,其特征在于,该方法至少包括以下步骤:执行多个测试执行绪,并将每个测试执行绪分割成多个执行绪片段;从该多个测试执行绪中通过竞争选择一个具有临界区存取权限的当前测试执行绪;在临界区内执行该当 前执行绪的当前执行绪片段的测试;及退出临界区。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘文涵宋建福孟祥滨
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1