《那些年啊,那些事——一个程序员的奋斗史》——44
最后更新于:2022-04-01 11:50:30
蓝牙程序,对于写了几个小程序的段伏枥来说,其实并不是一个非常难以企及的目标。产品的蓝牙是用模块的方式,通过串口和CPU进行连接的,只需要发送相应的AT指令即可操作。因为通信的管道是串口,而串口基本上是每个CPU必备的,何况在Windows CE里面也有相应的串口驱动,所以这个蓝牙也不需要特别的驱动。像这样的蓝牙模块方式,在操作上是非常简便的,但缺点也是很明显,就是声音的控制无法统一。因为声音是直接从蓝牙模块发出来的,只要直接接上喇叭即可;看似简单,就是很难和系统CPU的音源统一。也就是说,当系统的音量调到最小甚至静音时,很可能蓝牙声音却是很大的。
模块的另一种连接方式,则不是直接输出模拟音频,而是I2S,直接输入到CPU里面。因为音频是输入到CPU,然后CPU又输出,所以CPU不仅可以控制音量的大小,还能够给声音增加特效,比如什么音乐厅啊,Pop之类杂七杂八的。但这样的问题在于,这声音还需要相应的驱动,对程序员的要求比较高;不仅如此,也需要CPU有相应的I2S输入。只不过AU1200没有I2S接口,倒也省去不少麻烦,否则这驱动绝对是让段伏枥掉头发的。
蓝牙还有一个指标,就是通话的质量,有无什么杂讯或回音之类,但这些却不属于段伏枥的职责,这是硬件所要注意的。只不过,采用这种完全模块的方式,其实连这点也不用考虑的:模块能做到什么水准,就必须要接受。唯一能改善的,就是选择不同的麦克风,以此对比质量而已。而对于软件,从总体上来说,并没有太多的技术难点,对于新手而言,可能就是多线程的配合。比如说,因为来电的时候,模块就会通过串口来发送信息告诉现在的状态,而这就必须要有一个线程一直在监控数据。看起来似乎和音频播放器差不多,但实际上要处理的意外还比较多的。音频播放器再怎么折腾,也是在同一个系统中;而蓝牙,则是和外部的模块交流。于是,有一些难点就来了:开始拨号,要有一个线程来监控数据,确定什么时候挂机;可如果在开始拨号,并且已经开始监控的时候,蓝牙模块突然接收到了来电,而这时发送的状态肯定不是预计所想的。那么就必须要重新清空之前的状态,更改相应的监控准则。类似的状况,还不止一种,如果互相交杂,那么就疲于应付了,段伏枥现在就处于这种状态。因为一开始的架构设计并不是非常好,如果遇到一种异常情况,就加多一个BOOL变量的标志,然后代码中再来一个esle if来延伸。随着异常的逐渐发现,标志也越来越多,else if也越来越长,到后来段伏枥已经觉得这代码膨胀地已经失控了,根本无法再受自己控制。
状况无法掌控的情形,不仅出现在段伏枥,沈俊也是如此。在段伏枥开始写蓝牙程序几天之后,沈俊就已经从学校回来了。知道来了新硬件工程师,倒不觉得有什么不妥,反而非常高兴,因为觉得终于有人可以带自己了。只不过这高兴劲没持续多久,就被工作任务折磨得疲惫不堪:这个第二版有一个非常严重的问题,GPS收星非常差。这个问题在当年浩程微的时候也是如此,并且一直都没有很好地解决;而现在的状况比那时候更糟,以前的还能够偶尔接收到三颗卫星进行定位,现在的这个最多就只能接个两颗,从来无法定位。
黄华中的说法是沈俊没经验没关系,他带着她来调试这GPS。可吊儿郎当的黄华中,说起话来倒是好听,但做起事来可真不敢恭维。虽然没有制度约束,大家都是九点之前来到办公室,可黄华中能在11点之前来到就是谢天谢地了;而每天等段伏枥他们下班之后,还要强制拉着沈俊加班,要知道那时候已经差不多11点了啊。对此沈俊也叫苦不迭:为何其它同事都已经下班了,她还要单独被留下和黄华中一起加班?到底打的是什么主意。所幸什么事情都没有发生,应该说,黄华中什么正经事都没有做——他就呆在办公室纯粹玩斗地主了。他唯一所做的事情,就是不停变化主意,让沈俊弄弄这个,测测那样。只可惜,这些简直是瞎指挥,还能有什么好的结果?
武总对于这GPS的收星也非常关心,毕竟一个导航仪无法正常接收卫星信号,那算是什么?因此,武总基本上每天晚上都询问黄华中,而黄华中每次都会信誓旦旦地说:“经过今天的各种调试,现在GPS信号非常好,不到一分钟就能够定位。你要知道,为了这个,我搞得头都疼了。”的确是搞得头都疼了,不过并不是因为调试这GPS模块,而是因为斗地主搞的。
等到第二天,武总过来查看状况,发现这收星没有之前所说那么完美,质问黄华中的时候,黄华中就会非常义正言辞地说:“沈俊,这GSP怎么回事?昨天晚上我一直测试到晚上3点钟,一直都是好好的。你是不是今天弄了什么?”
沈俊上班到现在,都没碰过黄华中办公室的那片板子,自然反驳到:“我什么都没弄啊!”
黄华中暴跳如雷,气愤地说:“怎么可能?你肯定是在上面弄了什么!之前这板子都是好好的!我不管,你负责将这板子给弄好!”
弄好?怎么弄啊?这板子之前是好的,鬼才信!调试到3点?估计是玩游戏到3点吧?可人家是老大,能说些什么呢?在武总面前总不能拂老大的面子吧?于是,每逢这时候,沈俊总是强忍委屈,默默含着泪开始毫无头绪折腾这该死的GPS模块。
这种类似的推卸责任,其实也发生在曹燕身上。只不过曹燕没有像沈俊那般忍气吞声,而是当场反驳,颇有种誓不低头的气势,黄华中见状,知道无法将责任强加于她身上,便也什么话都没说了。这么顶撞黄华中,曹燕本以为自己免不了要吃一顿炒鱿鱼,可没想到什么事情也没发生,反而后续黄华中对自己还客客气气的。欺软怕硬,看来是黄华中的本性。虽然曹燕后来告诉沈俊,有一些事情如果并不是自己的责任,必须要硬起来。可沈俊虽然听进去了,却不敢付诸于行动,理由很简单:自己刚毕业,什么都不懂,好不容易有这么个机会,可以长进技术水平,不想因为和老大冲突而导致离开。
听起来,沈俊的想法是有一点道理,但如果再细想,却并非如此。现在公司是一个什么状况?人员只有三四个人,一间小小的办公室也破破落落,没有社保,没有任何福利,有几个有经验的人士会过来?如果薪水开得很高,也许还能招到一些水平不错的,可估计武总根本就不会舍得出钱。所能招的,也就是一些毫无经验,什么都不懂的应届生。从这个角度来说,也不难理解为何沈俊虽然来得比曹燕早,但却经常受到黄华中呵斥,而对曹燕却客客气气——因为曹燕是有经验的,难得骗来一个;沈俊属于应届生,满街一抓一大把。
段伏枥也知道自己在公司的位置举足轻重:张文香是管采购的,也就会买卖元器件,顺便兼任一下日常事务;黄华中、沈俊和曹燕都是做硬件的,对软件可谓一窍不通;另外一个做软件的柳,可惜也不思进取,只能凭着以前单片机的经验做做底层驱动的调试,对于应用程序绝对没有半点涉猎;因此只剩下段伏枥一人,顶起了公司应用程序的一边天。这边天可不能倒啊,没有应用程序的公司要怎么继续生存下去?虽然黄华中做人不靠谱,但这点厉害关系还是看得清清楚楚的,所以对于段伏枥也是非常客客气气。不仅如此,还口口声声称段伏枥为兄弟,让人感觉关系非常铁。
所幸段伏枥不是那种恃宠而骄的人,虽然对此也心知肚明,但还是和以前一样,恭恭敬敬称呼黄华中为老大,对于老柳也颇为尊敬。很多初出茅庐的应届生,当上头对他有所青睐的时候,往往容易得意忘形,开始看很多同事都不顺眼。于是慢慢地,很多同事都看不惯他,慢慢他也就被孤立,甚至还有可能被同事在背后捅刀子,最后导致一发不可收拾的悲惨结果。
应届生的技术水平普遍不咋地,提高自己的技术水平是首要任务,毕竟关系到自己的前途。可在提高技术水平的同时,也不能忘记人际关系的磨练,可偏偏很多应届生就栽在这里。同事间的关系不像同学,同学关系其实非常单纯,没有任何利益关系;而同事呢,更多的是一种利益,如果这利益互相没有冲突,那么还好,但如果有冲突的话,因为一个萝卜也就一个坑,如果那个坑被占满了,那么其它的萝卜也种不进去。所以这时候,不是同事踩着自己,就是自己踩着同事,总之爬上去的只有一个人。因此,如何正确处理同事间的关系,便显得尤为重要。
所幸的是,现在利剑公司就只有这么几个人,所以这些勾心斗角的关系还不存在。因此段伏枥还能不管这些人际关系,可以心无旁骛地专研技术,这应该也算是不幸中的大幸了。