发明内容
鉴于上述问题,本发明提供一种的灯效控制方法和电子设备。
本发明的一个目的是要使得灯效线程能够按照所设定的灯效变化周期进行轮询,从而实现任意地改变灯效变化的速度。
本发明一个进一步的目的是通过灯效线程挂起的设置,减少CPU的占用率,以节省系统资源。
特别地,根据本发明实施例的一方面,提供了一种灯效控制方法,包括:
运行灯效线程;
使灯效线程按照指定周期轮询读取所设置的灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期;
根据所读取的灯效类型控制灯效的显示;
其中,对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期;并且
灯效参数是通过调用输入输出接口进行设置的。
进一步地,使灯效线程按照指定周期轮询读取所设置的灯效参数的步骤包括:
将灯效线程挂起;
在灯效线程挂起的时长达到指定周期时,将灯效线程恢复至就绪状态;
读取灯效参数。
进一步地,在灯效类型为静态灯效类型时,灯效参数包括静态灯效类型,其中静态灯效类型包括以下任一种:灯环常亮灯效、灯环进度条指示灯效;或
在灯效类型为动态灯效类型时,灯效参数包括动态灯效类型和灯效变化周期,其中动态灯效类型包括以下任一种:单灯旋转灯效、双灯旋转灯效、彩色灯旋转灯效、方位灯指示灯效、呼吸灯效。
进一步地,在灯效类型为静态灯效类型时,根据所读取的灯效类型控制灯效的显示包括:
根据所读取的静态灯效类型控制静态灯效的显示;并且
在根据所读取的静态灯效类型控制静态灯效的显示之后,灯效控制方法还包括:
暂停灯效线程;
当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,再次启动灯效线程。
进一步地,在暂停灯效线程的步骤之后,灯效控制方法还包括:
当检测到调用所述输入输出接口设置静态灯效类型的行为时,根据所设置的静态灯效类型控制灯效的显示。
进一步地,在运行灯效线程的步骤之前,灯效控制方法还包括:
驱动程序初始化,创建用于灯效控制的灯效线程;
根据灯效线程的初始化信息对灯效线程进行参数初始化。
进一步地,灯效线程的初始化信息包括预设的默认周期;
首次轮询的指定周期为预设的默认周期。
进一步地,灯效线程的初始化信息包括预设的默认灯效类型;
在根据所读取的灯效类型控制灯效的显示的步骤之前,灯效控制方法还包括:
根据默认灯效类型显示相应的默认灯效。
进一步地,灯效控制方法还包括:
在读取所设置的灯效参数的步骤之前,对互斥量进行加锁;
在读取所设置的灯效参数的步骤之后,解锁互斥量;
在设置灯效参数之前,对互斥量进行加锁;
在设置灯效参数之后,解锁互斥量。
根据本发明实施例的另一方面,还提供一种电子设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当计算机程序代码被处理器运行时,导致电子设备执行前文任一项的灯效控制方法。
本发明的灯效控制方法,通过运行灯效线程,使灯效线程按照指定周期轮询读取所设置的灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期,并根据所读取的灯效类型控制灯效的显示。由于灯效参数可以是通过调用输入输出接口进行设置的,且对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期,实现了直接根据所读取到的灯效变化周期控制灯效,从而实现了任意地改变灯效变化的速度。
进一步地,本发明的灯效控制方法,通过将灯效线程挂起,在灯效线程挂起的时长达到指定周期时,再将灯效线程恢复至就绪状态,读取灯效参数,实现了在指定周期内,灯效线程仅在读取灯效参数和根据所读取的灯效类型控制灯效的显示时占用CPU,在读取前始终处于挂起状态,减小了CPU的占用,从而节省了系统资源。
更进一步地,本发明的灯效控制方法,由于在灯效类型为静态灯效类型时,根据所读取的静态灯效类型控制静态灯效的显示,并且在根据所读取的静态灯效类型控制静态灯效的显示之后,暂停灯效线程,当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,再次启动灯效线程,避免了在将灯效设置为静态灯效后仍继续占用CPU,进一步节省了系统资源。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本发明的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提出一种的灯效控制方法。
图1示出了根据本发明一个实施例的灯效控制方法的示意图。该灯效控制方法一般性地可包括以下步骤S102至步骤S106。
步骤S102,运行灯效线程。
步骤S104,使灯效线程按照指定周期轮询读取所设置的灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期。
步骤S106,根据所读取的灯效类型控制灯效的显示。
在上述步骤S104中,对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期。若上一次轮询所读取到的灯效参数仅包括灯效类型,不包括灯效变化周期,则暂停灯效线程。若上一次轮询所读取到的灯效参数包括灯效类型和灯效变化周期,则按照上一次轮询所读取到的灯效变化周期轮询读取所设置的灯效参数,以改变灯效变化周期,从而调节灯效变化的速度。
另外,上述步骤S104中的灯效参数是通过调用输入输出接口进行设置的。也就是说,灯效参数的设置独立于灯效线程的运行,在运行灯效线程的所有阶段,均可以通过调用输入输出接口对灯效参数进行设置。在一些具体的实施例中,输入输出接口为上层应用与驱动程序的交互接口,通过该交互接口,上层应用可以对灯效参数进行设置,以供灯效线程读取。在一些更具体的实施例中,上层应用对灯效参数进行的设置可以为根据系统运行参数实时对灯效参数进行更新,以实现灯效的自动控制,也可以为由用户进行触控输入或语音输入等对灯效参数进行直接设置,以满足用户的个性化使用需求,本发明实施例不作限定。
使用上述方法,运行灯效线程,使灯效线程按照指定周期轮询读取所设置的灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期,并根据所读取的灯效类型控制灯效的显示。本发明的控制方法由于灯效参数可以是通过调用输入输出接口进行设置的,且对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期,实现了直接根据所读取到的灯效变化周期控制灯效,从而实现了任意地改变灯效变化的速度,保证了顺畅的灯效控制。
在一些实施例中,使灯效线程按照指定周期轮询读取所设置的灯效参数的步骤包括:将灯效线程挂起,在灯效线程挂起的时长达到指定周期时,将灯效线程恢复至就绪状态,读取灯效参数。也就是说,在灯效线程的运行过程中,在每一次轮询读取所设置的灯效参数前,灯效线程均处于挂起状态。灯效线程处于挂起状态时,不占用CPU等系统资源。
使用上述方法,将灯效线程挂起,在灯效线程挂起的时长达到指定周期时,再将灯效线程恢复至就绪状态,读取灯效参数,实现了在指定周期内,灯效线程仅在读取灯效参数和根据所读取的灯效类型控制灯效的显示时占用CPU,在读取前始终处于挂起状态,减小了CPU的占用,从而节省了系统资源。
在一些实施例中,灯效类型包括静态灯效类型和动态灯效类型。具体地,静态灯效类型包括以下任一种:灯环常亮灯效、灯环进度条指示灯效。动态灯效类型包括以下任一种:单灯旋转灯效、双灯旋转灯效、彩色灯旋转灯效、方位灯指示灯效、呼吸灯效。需要说明的是,灯效类型可以根据系统的实时运行参数自动进行更新设置,也可以根据用户需求进行个性化设置,本实施例不作限定。另外,与各种灯效类型相应的具体灯光效果均可以在系统内预先设置,或者从预设的灯效数据库进行获取,本实施例不作限定。
在上述实施例中,在灯效类型为静态灯效类型时,灯效参数包括静态灯效类型;或在灯效类型为动态灯效类型时,灯效参数包括动态灯效类型和灯效变化周期。也就是说,在调用输入输出接口对灯效参数进行设置时,若所设置的灯效类型为静态灯效类型,则所设置的灯效参数包括静态灯效类型。这种情况下,步骤S104中读取所设置的灯效参数仅能读取到该静态灯效类型,则先暂停灯效线程的运行。若所设置的灯效类型为动态灯效类型,所设置的灯效参数包括动态灯效类型和灯效变化周期。这种情况下,步骤S104中读取所设置的灯效参数可以读取到该动态灯效类型和灯效变化周期,则按照所读取到的灯效变化周期进行下一次轮询,从而改变了灯效变化周期,以调节灯效变化的速度。
在一些实施例中,在读取到的灯效类型为静态灯效类型时,步骤S106具体实施为根据所读取的静态灯效类型控制静态灯效的显示。然后,暂停灯效线程,当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,返回至步骤S102以再次启动灯效线程。也就是说,若读取到所设置的灯效类型为静态灯效类型,则在输出该静态灯效类型后,暂停灯效线程,即暂时跳出轮询,等待下一次调用输入输出接口对灯效参数进行设置的行为。调用输入输出接口对灯效参数进行设置的行为包括调用输入输出接口设置动态灯效类型和灯效变化周期的行为和调用输入输出接口设置静态灯效类型的行为。
在该实施例中,若调用输入输出接口对灯效参数进行设置的行为是调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,则再次运行灯效线程,并使灯效线程按照最近一次所读取到的灯效变化周期进行下一次轮询。若未检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为,则继续等待,将灯效线程始终保持在暂停状态,以减小对系统资源的占用。
使用上述方法,由于在灯效类型为静态灯效类型时,根据所读取的静态灯效类型控制静态灯效的显示,并且在根据所读取的静态灯效类型控制静态灯效的显示之后,暂停灯效线程,当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,再次启动灯效线程,避免了在将灯效设置为静态灯效后仍继续占用CPU,进一步节省了系统资源。
在一些实施例中,在暂停灯效线程的步骤之后,灯效控制方法还包括:当检测到调用所述输入输出接口设置静态灯效类型的行为时,根据所设置的静态灯效类型控制灯效的显示。也就是说,在调用输入输出接口对灯效参数进行设置的行为是调用所述输入输出接口设置静态灯效类型的行为时,可以不重启灯效线程,直接将与所设置的静态灯效类型相应的静态灯效显示出来。静态灯效类型可以包括灯环常亮灯效、灯环进度条指示灯效等多种静态灯效类型,在调用输入输出接口设置灯效参数时,可以根据用户需求设置多种静态灯效中的任意一种,也可以将一种静态灯效切换为另一种静态灯效。
使用上述方法,实现了直接将一种静态灯效切换为另一种静态灯效,避免了因重启灯效线程带来的对CPU的占用,更进一步地减小了CPU的占用率。
在一些实施例中,在运行灯效线程的步骤之前,灯效控制方法还包括:驱动程序初始化,创建用于灯效控制的灯效线程,根据灯效线程的初始化信息对灯效线程进行参数初始化。举例来说,在每一次系统启动后,先获取初始化信息对驱动程序进行参数初始化,再创建一个用于灯效控制的灯效线程,并同时获取灯效线程的初始化信息以灯效线程进行参数初始化,从而实现在系统启动后,实时对灯效进行控制。
在上述实施例中,灯效线程的初始化信息包括预设的默认周期。对于灯效线程的首次轮询,指定周期为该预设的默认周期。在灯效线程完成初始化后的轮询过程中,若读取到所设置的灯效参数中包含的灯效变化周期,则根据所读取到的灯效变化周期进行下一次轮询;若未读取到所设置的灯效参数,则根据按照预设的默认周期继续进行轮询。
另外,灯效线程的初始化信息还包括预设的默认灯效类型。在根据所读取的灯效类型控制灯效的显示的步骤之前,灯效控制方法还包括:根据默认灯效类型显示相应的默认灯效。也就是说,在首次轮询内,控制输出与默认灯效类型相应的默认灯效,直到读取到所设置的灯效参数中包含的灯效类型,再根据所设置的灯效类型控制灯效的显示。举例而言,在灯效线程完成初始化后,根据默认灯效类型输出默认灯效。具体地,默认灯效可以包括灯环低亮度常亮、灯环明暗闪烁或无灯光等多种灯效中的任一种。
在一些实施例中,灯效控制方法还包括:在读取所设置的灯效参数的步骤之前,对互斥量进行加锁,在读取所设置的灯效参数的步骤之后,解锁互斥量。至于互斥量的加锁和解锁操作,可以以现有的操作方式进行,本文中不另赘述。使用上述方法,确保了在灯效线程读取灯效类型和灯效变化周期等参数时不被打断,从而避免了多线程之间发生的冲突。
在一些实施例中,在设置灯效参数之前,对互斥量进行加锁,在设置灯效参数之后,解锁互斥量。使用上述方法,确保了灯效类型和灯效变化周期等参数的设置过程不被打断。
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本发明的灯效控制方法的实现过程。
图2示出了根据本发明一个具体实施例的灯效控制方法的流程图。该流程一般性地可包括:
步骤S202,驱动程序初始化,创建用于灯效控制的灯效线程。
步骤S204,根据灯效线程的初始化信息对灯效线程进行参数初始化。灯效线程的初始化信息包括预设的默认周期和预设的默认灯效类型。
步骤S206,运行灯效线程,根据默认灯效类型显示相应的默认灯效。
步骤S208,将灯效线程挂起。
步骤S210,在灯效线程挂起的时长达到指定周期时,将灯效线程恢复至就绪状态。需要说明的是,首次轮询的指定周期为预设的默认周期,对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期。
步骤S212,读取灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期。其中,灯效类型包括静态灯效类型和动态灯效类型。灯效参数是通过调用输入输出接口进行设置的。当读取到的灯效类型为动态灯效类型时,执行步骤S214,当读取到的灯效类型为静态灯效类型时,执行步骤S216。
步骤S214,当灯效类型为动态灯效类型时,根据所读取的动态灯效类型控制动态灯效的显示,回到步骤S208。
步骤S216,当灯效类型为静态灯效类型时,根据所读取的静态灯效类型控制静态灯效的显示。
步骤S218,暂停灯效线程。当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,执行步骤S220,当检测到调用输入输出接口设置静态灯效类型的行为时,执行步骤S222。
步骤S220,当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,唤醒灯效线程,回到步骤S208。
步骤S222,当检测到调用输入输出接口设置静态灯效类型的行为时,根据所设置的静态灯效类型控制灯效的显示。
需要说明的是,在上述步骤S218中,若未检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为也未检测到调用输入输出接口设置静态灯效类型的行为,则继续等待,将灯效线程始终保持在暂停状态。另外,在上述步骤S222中,在根据所设置的静态灯效类型控制灯效的显示的步骤之后,将灯效线程始终保持在暂停状态,并继续等待下一次调用输入输出接口对灯效参数进行设置的行为。调用输入输出接口对灯效参数进行设置的行为包括调用输入输出接口设置动态灯效类型和灯效变化周期的行为和调用输入输出接口设置静态灯效类型的行为。
使用上述方法,在驱动程序初始化后创建灯效线程,对灯效线程进行参数初始化后使灯效线程先按照默认周期轮询读取所设置的灯效参数,在读取到所设置的灯效变化周期后,再按照上一次轮读取到的灯效变化周期进行下一次轮询,并且每次轮询后均根据所读取的灯效类型控制灯效的显示。本发明的控制方法可以读取设置的灯效参数,实现了直接根据所读取到的灯效变化周期控制灯效,从而实现了任意地改变灯效变化的速度,保证了顺畅的灯效控制。
进一步地,由于本实施例的灯效线程对于每一次轮询,先将灯效线程挂起,在挂起时长达到指定周期后,再将灯效线程恢复至就绪状态来读取灯效参数,实现了在指定周期内,灯效线程仅在读取灯效参数和根据所读取的灯效类型控制灯效的显示时占用CPU,在读取前始终处于挂起状态,减小了CPU的占用,从而节省了系统资源。
更进一步地,由于本实施例的灯效线程在读取到静态灯效类型时,暂停灯效线程,进一步减小了CPU的占用,从而进一步节省了系统资源。
基于同一技术构思,本发明实施例还提供了一种电子设备100。图3示出了本发明一个实施例的电子设备的示意性框图。根据图3所示,该电子设备100包括:处理器110;以及存储有计算机程序代码121的存储器120。当该计算机程序代码121被处理器120运行时,导致该电子设备100执行上述任意一个实施例或其组合所述的灯效控制方法。
根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:
本发明实施例提出的灯效控制方法,由于在运行灯效线程后,使灯效线程按照指定周期轮询读取所设置的灯效参数,灯效参数包括灯效类型,或灯效类型和灯效变化周期,并根据所读取的灯效类型控制灯效的显示。本发明的控制方法由于灯效参数可以是通过调用输入输出接口进行设置的,且对于非首次轮询的每一次轮询,该次轮询的指定周期为上一次轮询所读取到的灯效变化周期,实现了直接根据所读取到的灯效变化周期控制灯效,从而实现了任意地改变灯效变化的速度。
进一步地,本发明的灯效控制方法,通过将灯效线程挂起,并在灯效线程挂起的时长达到指定周期时,再将灯效线程恢复至就绪状态来读取灯效参数,实现了在指定周期内,灯效线程仅在读取灯效参数和根据所读取的灯效类型控制灯效的显示时占用CPU,在读取前始终处于挂起状态,减小了CPU的占用,从而节省了系统资源。
进一步地,本发明的灯效控制方法,由于在灯效类型为静态灯效类型时,根据所读取的静态灯效类型控制静态灯效的显示,并且在根据所读取的静态灯效类型控制静态灯效的显示之后,暂停灯效线程,当检测到调用输入输出接口设置动态灯效类型和灯效变化周期的行为时,再次启动灯效线程,避免了在将灯效设置为静态灯效后仍继续占用CPU,进一步节省了系统资源。
所属领域的技术人员可以清楚地了解到,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。