初来乍到Foxda,刚刚熟悉了下SigmaTel的SDK,BOSS就布置任务要做一个MP3的自动测试程序。意思就是编写一个程序在开机的时候自动读取一个文件,其中这个文件当中列出了按键步骤与间隔时间(完全由你自己定义),当程序读到的时候,就自动发出一个按键消息,除了开机,无需人手,全自动依照你文件中的步骤执行。对比起以往的手工测试,这样一来省了人力和时间,二来能够在人所不能接触的极端环境下对MP3进行测试。
进一步与BOSS和师兄沟通过之后,有了大概的思路:在MP3启动的过程中,建立一个定时器,由这个定时器定时读取某个文件的内容,而根据BOSS的指示,文件的格式大概是一行定义按键,一行定义间隔时间,然后发出相应的按键消息。
现在看来似乎并不困难,于是乎便开始动手。主要分三个阶段进行:
首先便是寻找按键消息的发送的方法,还好,由于师兄之前做过相关的工作,所以经他的指点很快就可以实现了。在sigmaTel的SDK里使用的是以下两句
BUILD_NONALLOCATED_MSG(&msg, OS_MSG_UI_GROUP, MSG_UI_BTN_EVENT, BTN_EVENT_IS(BTN_FF,EVENT_CLICK)); //意思是建立“FF(快进)键单击一次”的消息
tx_queue_send(g_ptx_queue_ui,&msg, 10);
所以这个问题很快就解决了。相信在其它相关的做MP3、手机的SDK里面都会有发送按键消息的函数,例如我现在在做的DV,就是在接收到按键消息之后,发送一个handler,所以在做自动测试的时候,只需要发送handler就可以达到与案件相同的效果了。也因此,我相信各种便携式产品都可以做出自动测试的程序,这样就可以减少测试人员的工作量,提高效率,在相对短的时间内发现更多问题。
接下来要做的是文件读写的操作。由于以前只编过一次有关文件读写的程序,所以在这里花费了很多的时间。主要是因为这里只能应用SDK自带的文件处理函数(原型定义有些奇怪),不能够直接调用C语言里的文件处理函数,尽管在我查看了SDK里文件处理函数的定义后发现最终它都是要调用C语言中的文件处理函数。不过不管怎样,终归也是自己C语言不过关,特此潜心研究C语言文件处理函数,专门开贴写给大家看。这里就不详述。
最后要做的就是加上定时器。虽然知道有定时器这么一回事,但是从来都没有用过,也遇到了一些困难。建立一个timer要5个参数,直到现在我都没有弄明白其中两个参数的意义,只好照葫芦画瓢,用上了。
tx_timer_create(&testtimer,"test1",moveup,0x1234,OS_MSECS_TO_TICKS(1000),OS_MSECS_TO_TICKS(1000), TX_AU