发明内容
鉴于上述现有技术的不足之处,本发明的目的在于提供一种模块电视的串口测试方法和系统,通过在功能卡端实现工厂串口数据路由的方式,将模块电视功能卡端和显示屏端的工厂测试统一到一个流程,简化了测试步骤,缩短了生产测试时间;节约了串口连接设备资源。
为了达到上述目的,本发明采取了以下技术方案:
一种模块电视的串口测试方法,所述方法包括:
A、模块电视的功能卡端预先从显示屏端获取数据路由表;
B、所述功能卡端通过测试串口接收测试数据包,并将所述测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端执行还是显示屏端执行;
当测试数据包仅需功能卡端执行时,功能卡端执行测试;
当测试数据包仅需显示屏端执行时,功能卡端将测试数据包发送到显示屏端,由显示屏端执行测试;
当测试数据包需功能卡端和显示屏端都执行时,功能卡端执行测试并将测试数据包发送到显示屏端,由显示屏端执行测试;
C、显示屏端接收到测试数据包后,执行测试。
所述的模块电视的串口测试方法中,所述步骤B具体包括:
B1、功能卡端的中间件层从测试串口接收测试数据包并发送给功能卡端的硬件抽象层;
B2、所述硬件抽象层将测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端执行还是显示屏端执行;
在测试数据包仅需功能卡端执行时,将功能卡端需执行的结果返回给中间件层;中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试;
在测试数据包仅需显示屏端执行时,将测试数据包发送到显示屏端,由显示屏端执行测试;
在测试数据包需功能卡端和显示屏端都执行时,将功能卡端需执行的结果返回给中间件层,并将测试数据包发送到显示屏端;中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试;显示屏端接收到测试数据包后执行测试。
所述的模块电视的串口测试方法中,所述步骤B2具体包括:
B21、所述硬件抽象层提取所述测试数据包的命令提示符的第一字节和测试数据包的param字段的第一字节;
B22、将测试数据包的命令提示符的第一字节与数据路由表中的命令提示符进行匹配,在所述第一字节与数据路由表中的命令提示符不匹配时,进入步骤B26;在所述第一字节与数据路由表中的命令提示符匹配时,进入步骤B23;
B23、查看数据路由表的param字段,在数据路由表的param字段是第一字符时,进入步骤B24;在数据路由表的param字段不是第一字符时,进入步骤B25;
B24、根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试;
B25、将测试数据包的param字段与数据路由表的param字段进行匹配;在测试数据包和数据路由表的param字段匹配时,返回步骤B24;在测试数据包和数据路由表的param字段不匹配时,进入步骤B26;
B26、将功能卡端需执行的结果返回给中间件层;中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试。
所述的模块电视的串口测试方法中,所述功能卡端的测试执行模块执行测试后,将测试结果返回给测试串口。
所述的模块电视的串口测试方法中,所述步骤A具体包括:功能卡端的硬件抽象层在开机初始化时,从显示屏端获取压缩过的数据路由表数据,根据所述数据路由表数据,建立数据路由表。
一种模块电视的串口测试系统,包括:
模块电视的功能卡端,用于预先从显示屏端获取数据路由表;通过测试串口接收测试数据包,并将所述测试数据包与数据路由表进行匹配,判断测试数据包需功能卡端执行还是显示屏端执行;在测试数据包仅需功能卡端执行时,执行测试;在测试数据包仅需显示屏端执行时,将测试数据包发送到显示屏端;在测试数据包需功能卡端和显示屏端都执行时,执行测试并将测试数据包发送到显示屏端;
模块电视的显示屏端,用于在功能卡端获取数据路由表时,发送数据路由表给功能卡端,在接收到功能卡端发出的测试数据包时,执行测试。
所述的模块电视的串口测试系统中,所述功能卡端包括:
中间件层,用于从测试串口接收测试数据包并发送给硬件抽象层;在接收到功能卡端需执行的结果时,通知功能卡端的测试执行模块执行测试;
硬件抽象层,用于预先从显示屏端获取数据路由表;将测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端执行还是显示屏端执行;在测试数据包仅需功能卡端执行时,将功能卡端需执行的结果返回给中间件层;在测试数据包仅需显示屏端执行时,将测试数据包发送到显示屏端;在测试数据包需功能卡端和显示屏端都执行时,将功能卡端需执行的结果返回给中间件层,并将测试数据包发送到显示屏端。
所述的模块电视的串口测试系统中,所述硬件抽象层包括路由模块,所述路由模块用于提取所述测试数据包的命令提示符的第一字节和测试数据包的param字段的第一字节;将测试数据包的命令提示符的第一字节与数据路由表中的命令提示符进行匹配,在所述第一字节与数据路由表中的命令提示符不匹配时,将功能卡端需执行的结果返回给中间件层;在所述第一字节与数据路由表中的命令提示符匹配时,查看数据路由表的param字段;在数据路由表的param字段是第一字符时,根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试;在数据路由表的param字段不是第一字符时,将测试数据包的param字段与数据路由表的param字段进行匹配;在测试数据包和数据路由表的param字段匹配时,根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试;在测试数据包和数据路由表的param字段不匹配时,将功能卡端需执行的结果返回给中间件层。
所述的模块电视的串口测试系统中,所述测试执行模块,用于执行测试并将测试结果返回给测试串口。
所述的模块电视的串口测试系统中,所述硬件抽象层还包括数据传输模块,所述数据传输模块用于在开机初始化时,从显示屏端获取压缩过的数据路由表数据,根据所述数据路由表数据,建立数据路由表;在测试数据包需显示屏端执行时,将测试数据包发送到显示屏端。
相较于现有技术,本发明提供的模块电视的串口测试方法和系统,通过功能卡端接收全部的测试数据包,并将测试数据包与显示屏端的数据路由表匹配,识别测试数据包需功能卡端执行还是显示屏端执行,在仅需要功能卡端执行时直接执行测试;在仅需要显示屏端执行时,将测试数据包发送给显示屏端,由显示屏端执行测试;在测试数据包需功能卡端和显示屏端都执行时,功能卡端执行测试并将测试数据包发送到显示屏端,显示屏端执行测试。由此,将模块电视功能卡端和显示屏端的测试统一到一个流程,只需将测试数据包发送给功能卡端即可,无需手工操作,实现了模块电视的自动测试,简化了测试步骤,缩短了生产测试时间;节约了串口连接设备资源;避免人为区分测试命令而引起的误操作。
具体实施方式
本发明提供一种模块电视的串口测试方法和系统。为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供的模块电视的串口测试方法,包括模块电视,所述模块电视包括功能卡端和显示屏端,所述功能卡端主要实现模块电视的各种功能,通常为智能电视系统。所述显示屏端主要显示图像及播放声音,负责音视频的输出,通常为单片机系统。请参阅图1,所述测试方法包括如下步骤:
S10、模块电视的功能卡端预先从显示屏端获取数据路由表。具体的,所述功能卡端包括硬件抽象层(HAL,Hardware Abstraction Layer)。所述功能卡端的硬件抽象层在开机初始化时,从显示屏端获取压缩过的数据路由表数据,根据所述数据路由表数据,建立数据路由表并保存。
S20、所述功能卡端通过测试串口接收测试数据包,并将测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端执行还是显示屏端执行;
当测试数据包仅需功能卡端执行时,功能卡端执行测试;
当测试数据包仅需显示屏端执行时,功能卡端将测试数据包发送到显示屏端,由显示屏端执行测试;
当测试数据包需功能卡端和显示屏端都执行时,功能卡端执行测试并将测试数据包发送到显示屏端,由显示屏端执行测试。所述测试串口连接外部的自动调试设备。
所述自动调试设备是测试模块电视的设备,用于将串口测试命令(测试数据包)发送到功能卡端测试串口。并且实施接收测试结果并显示出来。本测试方法中,自动调试设备只需连接功能卡端即可完成整个模块电视的测试,较现有技术节省了一半的测试资源。
由此可知,本发明提供的测试方法,自动调试设备只需连接功能卡端即可完成整个模块电视的测试,较现有技术节省了一半的测试资源。而且,将模块电视功能卡端和显示屏端的测试统一到一个流程,只需将测试数据包发送给功能卡端即可,无需手工操作,实现了模块电视的自动测试,简化了测试步骤,缩短了生产测试时间,提高了测试效率,最终降低了生产成本;节约了串口连接设备资源;避免人为区分测试命令而引起的误操作。
进一步的,所述功能卡端包括中间件层、硬件抽象层和测试执行模块,所述模块电视的串口测试方法中,所述步骤S20具体包括:
S210、功能卡端的中间件层从测试串口接收测试数据包并发送给功能卡端的硬件抽象层。
S220、所述硬件抽象层将测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端执行还是显示屏端执行(即,判断所述测试数据包的流向);
在测试数据包仅需功能卡端执行时,将功能卡端需执行的结果返回给中间件层;中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试;
在测试数据包仅需显示屏端执行时,将测试数据包发送到显示屏端,由显示屏端执行测试;
在测试数据包需功能卡端和显示屏端都执行时,将功能卡端需执行的结果返回给中间件层,并将测试数据包发送到显示屏端;中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试;显示屏端接收到测试数据包后执行测试。
进一步的,所述功能卡端的测试执行模块执行测试后,将测试结果返回给测试串口,通过测试串口返回给自动调试设备。
整个测试方法的时序如图2所示,模块电视在开机后,功能卡端的硬件抽象层从显示屏端获取数据路由表,显示屏端将数据路由表返回给硬件抽象层。在自动调试设备发送测试数据包给功能卡端的中间件层后,中间件层将测试数据包传递给硬件抽象层的路由模块,路由模块匹配测试数据包与数据路由表;所述硬件抽象层在测试需显示屏端执行时,发送测试数据包给显示屏端,显示屏端执行测试,测试完成后通过硬件抽象层将测试结果返回给自动调试设备;所述硬件抽象层在测试需功能卡端执行时,将这一结果返回给中间件层,中间件层通知功能卡端测试,功能卡端测试完成后,由中间件层返回测试结构给自动调试设备。
其中,所述硬件抽象层返回给中间件层的结果为一返回值,该返回值具体由硬件抽象层的路由模块返回,该返回值为一组十六进制码,所述返回值有以下三种:
(1)0x0000;表示测试仅功能卡端需要执行,路由模块返回给中间件层功能卡端需要执行测试。功能卡端执行测试,在测试完毕后,所述中间件层将测试结果通过测试串口返回给自动调试设备。
(2)0xFA00;表示测试仅显示屏端需要执行,路由模块发送完整的测试数据包给显示屏端,并返回给中间件层功能卡端不需要执行。显示屏端执行测试,在测试完毕后,所述硬件抽象层将测试结果通过测试串口返回给自动调试设备。
(3)0xFA01;表示功能卡端和显示屏端都需要执行测试,路由模块发送完整的测试数据包给显示屏端,并返回给中间件层功能卡端需要执行测试。功能卡端和显示屏端执行完毕后,所述中间件层将功能卡端的测试结果通过测试串口返回给自动调试设备,所述硬件抽象层将显示屏端的测试结果通过测试串口返回给自动调试设备。
本发明提供的测试方法中,所述测试数据包包括Head字段、Len字段、CMD字段、param字段和CRC字段,其具体含义如下:
Head字段:包头固定为0xAA;
Len字段:代表测试数据包的长度;表一中Len为0x06,表示测试数据包的长度为6字节;
CMD字段(命令提示符):命令id;
param字段:命令参数,可能有多个字节;表一中,由于测试数据包的长度为6字节,除param字段外其他部分的总长度固定不变,为5字节,故param的长度为6-5=1字节;
CRC字段:crc校验码。
所述测试数据包的格式如下表一所示(其中各个组成部分的代码依测试需要进行设置):
表一。
所述数据路由表包括Head字段、Flag字段、param字段和CMD字段,其具体含义如下:
Head字段:包头固定为0xFA;
Flag字段:为0x00时表示仅显示屏端执行测试,为0x01时表示显示屏端和卡端都执行测试。此字段和Head字段将作为匹配结果返回给中间件层;
param字段:为0xFF时,表示测试数据包的param字段第一个字节为任何值都由显示屏端执行测试,这样,匹配时,无需遍历测试数据包的param字段,缩短了匹配的时间;如果不是0xFF,则此测试数据包的param字段第一个字节必须为此Param时,才由显示屏端执行测试;
CMD字段(命令提示符):测试数据包的CMD字段为此CMD时才由显示屏端执行。
所述数据路由表的格式如下表二所示:
表二。
因为一个测试数据包的CMD字段和param字段的第一个字节组合之后,可以唯一标识一个测试数据包。因此选择压缩之后的测试数据包来建立和匹配路由表。有些显示屏端执行的测试命令只要CMD字段为特定值,就可以判断在显示屏端执行,这种情况,路由表param字段对应的就是0xFF。这样做有利于减少串口传输量和提高匹配效率。
进一步的,请参阅图3,所述步骤S220具体包括:
S221、所述硬件抽象层提取所述测试数据包的命令提示符(CMD字段)的第一字节和测试数据包的param字段的第一字节。该步骤具体有硬件抽象层的路由模块执行,即,路由模块提取测试数据包的Cmd和Param字段的第一字节。由于测试数据包和数据路由表包含的信息较多,字节很长。如果直接将测试数据包和数据路由表进行匹配,则需要花费较长时间,不利于测试的展开,因此,本发明先将测试数据包和数据路由表进行压缩,即,从测试数据包和数据路由表中只提取匹配所需的字段(命令提示符的第一字节和测试数据包的param字段的第一字节)进行匹配,节省了匹配时间,提高了测试效率。
S222、将测试数据包的命令提示符的第一字节与数据路由表中的命令提示符进行匹配,判断命令提示符(CMD字段)是否匹配成功,在所述第一字节与数据路由表中的命令提示符不匹配时,进入步骤S226;在所述第一字节与数据路由表中的命令提示符匹配时,进入步骤S223。所述匹配,指的是字符代码相同;不匹配,指的是字符代码不同。
S223、查看数据路由表的param字段,在数据路由表的param字段是第一字符时,进入步骤S224;在数据路由表的param字段不是第一字符时,进入步骤S225。所述第一字符可根据实际情况设定,本实施例中,所述第一字符为0xFF。即,该步骤可简略表述为:判断路由表Param字段是否为0xFF。
S224、根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试。所述硬件抽象层还包括数据传输模块。所述步骤S224具体包括:所述数据传输模块将测试数据包发送到显示屏端;所述路由模块将数据路由表的Flag字段和Head字段将作为匹配结果返回给中间件层,中间件层根据Flag字段和Head字段,通知功能卡端的测试执行模块执行测试或者不通知功能卡端的测试执行模块执行测试。
S225、将测试数据包的param字段与数据路由表的param字段进行匹配(即,判断测试数据包的param字段匹配路由表的param字段是否成功);在测试数据包和数据路由表的param字段匹配时,返回步骤S224;在测试数据包和数据路由表的param字段不匹配时,进入步骤S226。
S226、将功能卡端需执行的结果返回给中间件层(即,返回0x0000给中间件层);中间件层接收到功能卡端需执行的结果,通知功能卡端的测试执行模块,测试执行模块执行测试。
综上所述,本发明通过匹配测试数据包与数据路由表,来判断测试数据包是给功能卡端测试的还是给显示屏端测试的,实现了自动识别,无需手动选择,提高了测试效率。
请参阅图4,基于上一实施例提供的模块电视的串口测试方法,本发明还提供一种模块电视的串口测试系统,包括如上一实施例中所述的功能卡端20和显示屏端30。
所述模块电视的功能卡端20,用于预先从显示屏端30获取数据路由表;通过测试串口接收测试数据包,并将所述测试数据包与数据路由表进行匹配,判断测试数据包需功能卡端20执行还是显示屏端30执行;在测试数据包仅需功能卡端20执行时,执行测试,在测试数据包仅需显示屏端30执行时,将测试数据包发送到显示屏端30;在测试数据包需功能卡端20和显示屏端30都执行时,执行测试并将测试数据包发送到显示屏端30;所述功能卡端20的测试串口连接自动调试设备10。其中,所述自动调试设备10是测试模块电视的设备,用于将串口测试命令(测试数据包)通过测试串口发送到功能卡端,实时接收测试结果并显示出来。本测试系统中,自动调试设备10只需连接功能卡端20即可完成整个模块电视的测试,较现有技术节省了一半的测试资源。
所述模块电视的显示屏端30,用于在功能卡端20获取数据路由表时,发送数据路由表给功能卡端20,在接收到功能卡端20发出的测试数据包时,执行测试。
由此可知,本发明提供的测试系统,自动调试设备只需连接功能卡端即可完成整个模块电视的测试,较现有技术节省了一半的测试资源。而且,将模块电视功能卡端和显示屏端的测试统一到一个流程,只需将测试数据包发送给功能卡端即可,无需手工操作,实现了模块电视的自动测试,简化了测试步骤,缩短了生产测试时间,提高了测试效率,最终降低了生产成本;节约了串口连接设备资源;避免人为区分测试命令而引起的误操作。
进一步的,所述功能卡端20包括中间件层210、硬件抽象层220和测试执行模块230。
所述中间件层210,用于从测试串口接收测试数据包并发送给硬件抽象层220;在接收到功能卡端需执行的结果时,通知功能卡端的测试执行模块执行测试。
所述硬件抽象层220用于预先从显示屏端获取数据路由表;将测试数据包与数据路由表进行匹配,判断所述测试数据包需功能卡端20执行还是显示屏端30执行;在测试数据包仅需功能卡端20执行时,将功能卡端20需执行的结果返回给中间件层210;在测试数据包仅需显示屏端30执行时,将测试数据包发送到显示屏端30;在测试数据包需功能卡端20和显示屏端30都执行时,将功能卡端20需执行的结果返回给中间件层210,并将测试数据包发送到显示屏端30。
所述测试执行模块230,用于在接收到中间件层210的通知后,执行测试并将测试结果返回给测试串口,通过测试串口返回给自动调试设备。
其中,所述硬件抽象层220返回给中间件层210的结果为一返回值,该返回值具体由硬件抽象层220的路由模块返回,该返回值为一组十六进制码,所述返回值有以下三种:
(1)0x0000;表示测试仅功能卡端20需要执行,路由模块返回给中间件层功能卡端20需要执行测试。功能卡端20执行测试,在测试完毕后,所述中间件层210将测试结果通过测试串口返回给返回给自动调试设备。
(2)0xFA00;表示测试仅显示屏端30需要执行,路由模块发送完整的测试数据包给显示屏端30,并返回给中间件层功能卡端20不需要执行。显示屏端30执行测试,在测试完毕后,所述硬件抽象层220将测试结果通过测试串口返回给自动调试设备10。
(3)0xFA01;表示功能卡端20和显示屏端30都需要执行测试,路由模块发送完整的测试数据包给显示屏端30,并返回给中间件层功能卡端20需要执行测试。功能卡端20和显示屏端30执行完毕后,所述中间件层210将功能卡端20的测试结果通过测试串口返回给自动调试设备10,所述硬件抽象层220将显示屏端30的测试结果通过测试串口返回给自动调试设备10。
本发明提供的测试系统中,所述压缩后的测试数据包包括Head字段、Len字段、CMD字段、param字段和CRC字段,其具体含义如下:
Head字段:包头固定为0xAA;
Len字段:代表测试数据包的长度;表三中Len为0x06,表示测试数据包的长度为6字节;
CMD字段(命令提示符):命令id;
param字段:命令参数,可能有多个字节;表三中,由于测试数据包的长度为6字节,除param字段外其他部分的总长度固定不变,为5字节,故param的长度为6-5=1字节;
CRC字段:crc校验码。
所述测试数据包的格式如下表三所示(其中各个组成部分的代码依测试需要进行设置):
表三。
所述压缩的数据路由表包括Head字段、Flag字段、Param字段和CMD字段,其具体含义如下:
Head字段:包头固定为0xFA;
Flag字段:为0x00时表示仅显示屏端执行测试,为0x01时表示显示屏端和卡端都执行测试。此字段和Head字段将作为匹配结果返回给中间件层;
param字段:为0xFF时,表示测试数据包的param字段第一个字节为任何值都由显示屏端执行测试,这样,匹配时,无需遍历测试数据包的param字段,缩短了匹配的时间;如果不是0xFF,则此测试数据包的param字段第一个字节必须为此Param时,才由显示屏端执行测试;
CMD字段(命令提示符):测试数据包的CMD字段为此CMD时才由显示屏端执行。
所述数据路由表的格式如下表四所示:
表四。
因为一个测试数据包的CMD字段和param字段的第一个字节组合之后,可以唯一标识一个测试数据包。因此选择压缩之后的测试数据包来建立和匹配路由表。有些显示屏端执行的测试命令只要CMD字段为特定值,就可以判断在显示屏端执行,这种情况,路由表param字段对应的就是0xFF。这样做有利于减少串口传输量和提高匹配效率。
所述硬件抽象层包括路由模块,所述路由模块用于提取所述测试数据包的命令提示符的第一字节和测试数据包的param字段的第一字节;将测试数据包的命令提示符的第一字节与数据路由表中的命令提示符进行匹配,在所述第一字节与数据路由表中的命令提示符不匹配时,将功能卡端需执行的结果返回给中间件层;在所述第一字节与数据路由表中的命令提示符匹配时,查看数据路由表的param字段;在数据路由表的param字段是第一字符时,根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试;在数据路由表的param字段不是第一字符时,将测试数据包的param字段与数据路由表的param字段进行匹配;在测试数据包和数据路由表的param字段匹配时,根据数据路由表的Flag字段,由显示屏端执行测试或者由显示屏端、功能卡端都执行测试;在测试数据包和数据路由表的param字段不匹配时,将功能卡端需执行的结果返回给中间件层。
由于测试数据包和数据路由表包含的信息较多,字节很长。如果直接将测试数据包和数据路由表进行匹配,则需要花费较长时间,不利于测试的展开,因此,本发明先将测试数据包和数据路由表进行压缩,即,从测试数据包和数据路由表中只提取匹配所需的字段(命令提示符的第一字节和测试数据包的param字段的第一字节)进行匹配,节省了匹配时间,提高了测试效率。
所述硬件抽象层还包括数据传输模块,所述数据传输模块用于在开机初始化时,从显示屏端获取压缩过的数据路由表数据,根据所述数据路由表数据,建立数据路由表;在测试数据包需显示屏端执行时,将测试数据包发送到显示屏端。
综上所述,本发明通过匹配测试数据包与数据路由表,来判断测试数据包是给功能卡端测试的还是给显示屏端测试的,实现了自动识别,无需手动选择,提高了测试效率。
基于上一实施例提供的模块电视的串口测试系统,本发明还提供一种模块电视,包括如上所述的模块电视的串口测试系统。由于所述模块电视的测试原理和具体结构在上一实施例中已详细阐述,在此不再赘述。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。