《那些年啊,那些事——一个程序员的奋斗史》——12

最后更新于:2022-04-01 11:49:15

     录音机程序对于一个初学者来说,其实可以说是难,也可以说不难。难是在于初学者经验少,可能碰到一些bug不知道如何处理;不难是因为类似的应用,只要懂得使用搜索引擎,那么类似的例子就一大把。段伏枥是菜鸟,但并不是笨鸟,倒是找了不少代码,拼拼凑凑还做了个像模像样的程序。只不过这录音机程序却有一个很大的问题:不能录音!当然,这也是最致命的问题,不能录音的程序还能叫录音机么?         段伏枥开始头大了,感觉这一周来的辛苦,还是没有找到突破口。所幸老章看到冥思苦想的段伏枥,提了个建议:不严格来说,Windows CE的API函数可以看成是Windows的子集,不妨将代码编译成Windows程序试试看,先确认代码是否正确。经老章这么一指点,段伏枥觉得忽然豁然开朗起来。说干就干,打开Visual Studio 6.0,将Windows CE的代码全部放进去编译。还真别说,这代码确实没问题,在Windows XP上能够正确录音!         那为什么在Windows CE上不行呢?等等,Windows XP上如果无法录音的话,一般就是驱动程序的问题,那么在这Windows CE设备是不是也是如此呢?很有可能!段伏枥将目光锁定于驱动程序。         公司的研发部分为硬件部和软件部,而软件部又细分为应用组和系统组。段伏枥,老章和一个姓郃的女孩属于应用组;而系统组只有一个人,便是老柳。当段伏枥兴冲冲地跟老柳讲解自己的怀疑时,老柳还半信半疑,末了,说一句:“不一定啦!你再试试看!说不定是你代码问题呢!”         没办法,老柳不同意,段伏枥也无计可施,只好回自己的办公桌冥冥思索。时间又过两天,还是没有在应用代码上找出任何有可能的地方。没辙,段伏枥再一次找到了老柳。老柳估计这次是躲不掉了,想了想,便同意了,于是便在段伏枥的电脑上安装Platform Build 4.2。         Windows CE是一个可定制的系统,Platform Build 4.2便是用来定制的工具。简单点来说,该工具首先将C++代码编译成exe和dll文件,然后将这些生成的文件拷贝到工程目录,最后打包成系统nk.bin。在这里老柳耍了个滑头,虽然给段伏枥安装了Platform Build,但并没有将所有的驱动代码文件给他,而仅仅是给了音频驱动的代码,以及已经编译生成的exe和dll文件。老柳告诉段伏枥,首先进入命令行,用“build”来编译音频驱动,最后调用“Make Image”来生成系统,并且还特意警告段伏枥,绝对不能点击菜单上的“Sysgen”。为什么不能点击“Sysgen”呢?因为该命令会重新编译所有的驱动程序,而老柳根本就没有将所有的驱动程序给段伏枥,如果选择此命令,那么绝对会出现一大堆的错误。只不过这原因老柳没有告诉段伏枥,而他自然也不懂得这些。但既然能够开始调试音频驱动,那别的什么都无所谓了。         其实这完全算不上调试,因为段伏枥什么工具都没有,就连一个最简单的串口调试版也没有。当然,段伏枥自然不会去计较这些,或是说,其实他根本就不知道这些。他知道自己所能做的是,一行一行看代码,试图找出蛛丝马迹。只不过这工作对于菜鸟来说,确实是太困难了,连日来的不断思索,还是没有找到真正的源泉。段伏枥正垂头丧气地趴在桌子上之时,忽然手机短信响起,是刘思敏的:“今晚能早点回来么?”         段伏枥看了看电脑,发现已经差不多九点。虽然平时都是加班到十点多才回去,但今天想得实在是头大,并且反正暂时没有头绪,干脆先回去吧。和技术总监说了一下,段伏枥背起包包往公交站走去。         算起来,干姐搬走已经差不多半个月了。段伏枥本以为只有两个人的时候,总会发生点什么,但事实上,两人的话语反而比三个人还在的时候要少多了。也不知道为什么,干姐还在的时候,段伏枥自己还能和刘思敏说说笑笑。可当只有两个人的时候,面对面,却不知道该说些什么了。气氛很沉闷,很尴尬,于是段伏枥干脆每天都加班到很晚,回去的时候刘思敏也差不多睡了。这时候往往是刘思敏问一声:“你加班回来了?”         “嗯。”然后段伏枥便去洗澡,洗完衣服,出来之后一般刘思敏也熄灯睡觉了。既然两人面对面尴尬,干脆就什么都不要说了吧,段伏枥觉得这样挺好,虽然心底有那么点点失望。         只不过今天刘思敏居然会主动让自己早点回去,莫不是有什么不好的事情吧?这么一想,段伏枥一激灵,放弃了省钱坐公交的打算,直接奔向地铁口。30分钟的地铁,相对于要1个小时的公交,其快速自然不言而喻。只是在心急如焚的段伏枥心理,这30分钟却是那么的难熬,第一次觉得地铁居然那么慢。好不容易在世界之窗下了地铁,段伏枥赶紧快步往出租屋奔去。匆匆打开大门,就听到痛苦的呻吟声:刘思敏究竟怎么了?
';