老头子耕种的土地 只有果实没有花朵

股票不知道你拥有它。当然,它也不在乎。

我们仨 左手剑 思无虑 岁月诗 扯股淡 他山玉 无主题
« 上一篇: 数字电视 下一篇: 谁来服务低端市场? »
老头子 @ 2005-06-21 15:59

引子
       早上写数字电视的时候,让我想起来在黎明网络的经历。我在那里工作了一个月,写了一个机顶盒主控程序。6年过去,也算个文物了,但我觉得其实还是有些用处的。

       我进黎明网络那会,他们正在热火朝天地搞所谓的“黎明6A理想”,电视机顶盒,也是这6A理想的一份子。我进去的时候,这个机顶盒组包括我,一共两人。一个是我,一个是我的老板。

老板
       我的老板负责搞硬件,定制小PC机,遥控键盘和鼠标之类的,同时也管管整个项目的规划。他姓龚,是个博士,年纪并不大。在我所接触过的博士里面,他大概是唯一一个让我非常佩服的了。上个月,有个黎明网络出来的人来面试,聊起来,我才知道他已经成了黎明的CTO。这证明了我的眼光非虚啊。我得承认,他的水平,比我确实牛B很多。

软件
       我负责写软件,也就是那个主控程序。我们的机顶盒是个单板机,但仍然是个PC,只是小很多,上面装的操作系统是win98。所以,我这个所谓的主控程序,实际上就是一个可执行文件,名为explorer.exe,用来将98系统中自带的桌面explorer.exe替换掉。这样的话,机顶盒一打开,启动完成之后,就进入了我写的主控程序。当然,我在主控程序里面留了个后门,通过某个热键就可直接激活原装的那个桌面,这样方便进行管理和调试。

       主控程序非常傻瓜。进去是一个无标题栏,无边框的窗口。窗口中间从上到下一溜菜单。菜单上的字都大大的,因为屏幕在电视上,操作都是在几米远的地方,字不大是看不清楚的。对于这个问题,我后来曾经非常认真细致地考虑过。我的结论是:要把数字电视屏幕,当手机屏幕一样去开发。

菜单
       用遥控鼠标或者键盘,可以在一溜菜单上移动并进行选定。选定之后,就是执行相应的动作,所谓相应的动作,实际就是打开相应的进程。如果进程已经存在实例在运行,就把它调到前台,否则就启动一个。一般的,应用就是VCD播放,DVD播放,CD播放,上网浏览,混音器,游戏之类的。但这些,都是可以配置的。所有的屏幕元素,都是可以配置的。

       任何时候,屏幕上只有一个窗口运行,窗口太多会把人搞晕。任何时候,都可以通过热键回到主菜单。除了主菜单,配合电视用户的使用习惯,我还搞了一个OSD菜单。可以在任何时候用热键激活,这个菜单就比较小,跟我们在电视机上调节音量看到的差不多。OSD菜单得是透明的,这一点不能含糊。反正我是没看过电视机上有不透明的OSD菜单。

       以上这些,都是电视机处于视频模式的时候,用户看到的。因为机顶盒是接在一个AV的输入上,所以用户可以随时在电视和机顶盒之间进行切换。当时的机顶盒比较笨拙,必须通过另外的线路上网。因为有线电视复用信道上网,当时还没有开发出来。

难题
       别小看这么一个程序,做好它不容易。越傻瓜的程序越难做。抛开加载遥控器驱动,读入遥控码这些技术问题不谈,我还碰到了两个技术难题。

       一个是透明的OSD菜单,光是搞这个就费了我老鼻子劲。现在不知道发展得咋样了,反正当时微软的API在这方面做得不太成熟,直接用不大灵光。最后好象是拼凑了好几个API调用才勉强搞定。这个问题说起来,其实也很简单,就是前景和背景叠加时,位图运算的算法选择的问题。我不想自己去读位图,然后搞算法,老想着去借用系统的东西,所以就有点狼狈。

       还有一个,就是前面说的,把一个进程主窗口调到最前面。咋一看,这不是一个问题。不就是把窗口的Z Order设置在最上面吗。说起来是这样,调起来就看运气了。有的时候好使,到前面来了,有时候就是不好使,没有任何反应。看我折腾了半天,还是解决不了,老板决定给我介绍一个黎明的大牛。说是此人对API调用非常精通。

大牛
       大牛果然是大牛,我前去拜访他的时候,基本没拿正眼瞧我。我把我的问题讲完,他翻了翻白眼,仿佛听到了一个最愚蠢的问题。用那个设置Z Order的API啊,或者一个好象是BringToFront的东东,他断然地说。

       都试过了,两个都试过了。有时候不灵啊,不知道咋回事。我小心翼翼地说。
       不可能!他这样结束了我们的谈话。

       专家是很不可信的,本来我就不想去问,不过碍于老板的面子才去了。他这么一说,我自然扭头就走。

土法
       其实,我早就想好了,并已经试验过了一个可行的土法。拜访大牛,只是希望看看究竟有没有更优雅的方法。现在看来,连大牛都不灵了。那就土法吧。

       土法很简单,是基于这样的原理:当你用鼠标点击位于后面的一个窗口时,这个窗口就成为当前窗口,并被推到屏幕最前面。除非当前存在那种AlwaysOnTop属性的窗口。

       土法步骤:
       1。任何进程窗口都取消AlwaysOnTop属性
       2。最大化欲激活的窗口
       3。向该窗口发送一个鼠标点击事件。该点击发生在其窗口标题栏的正中位置

       土法虽然土,但是屡试不爽。

离开
       进黎明整整一个月时间,我刚好做完这个程序,还去南头小学装了很多机。我很自信地跟老板说,这个程序没有BUG。

       离开黎明,一方面是不适应它的文化。每天必须穿衬衫上班,早餐不能在办公室吃。办公室气氛很沉闷,人们几乎不怎么相互交谈。有个家伙一到午休时间就放齐秦的最新大碟,那是我在黎明唯一的文化生活。

       当然,另一方面,是那时候的网络泡沫给了我一次与人合伙创业的机会。接下来的一年,是亲历泡沫并看见它们破灭的一年,动荡不安而又异常精彩的一年。很过瘾的一年。

但是
       黎明短短的一个月时间,留给我关于产品设计的思考却非常非常多。

       到了今天,数字电视即将成为最牛B的网络终端的时候,这些经历和思考也许会重新派上用场。

最新评论


蜗牛

2005-06-22 11:22

老大,是啥用场?
俺也想跟着掺合



RedFox

2005-12-20 10:25

关于这个 OSD ,如果背景是静态的那还好办,但如果背景是动态的我真不行了。

Win2000以上到时有个现成的函数可以用。

老头子是用什么方法的呢?想听听。



老头子

2005-12-20 12:29

日久年深,都忘记了。呵呵。是,关键是动态的。


评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定

捐款赞助
同道中人
· 管理通道
· 先生不死
· 名将左权
· 追我魂魄
· 读库
· 舵手
· KOKO
· 快乐朵朵
· 比客Allen
· samuel
站内搜索

订阅 RSS

0112536

歪酷博客