蓝牙程序,对于写了几个小程序的段伏枥来说,其实并不是一个非常难以企及的目标。产品的蓝牙是用模块的方式,通过串口和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模块。
这种类似的推卸责任,其实也发生在曹燕身上。只不过曹燕没有像沈俊那般忍气吞声,而是当场反驳,颇有种誓不低头的气势,黄华中见状,知道无法将责任强加于她身上,便也什么话都没说了。这么顶撞黄华中,曹燕本以为自己免不了要吃一顿炒鱿鱼,可没想到什么事情也没发生,反而后续黄华中对自己还客客气气的。欺软怕硬,看来是黄华中的本性。虽然曹燕后来告诉沈俊,有一些事情如果并不是自己的责任,必须要硬起来。可沈俊虽然听进去了,却不敢付诸于行动,理由很简单:自己刚毕业,什么都不懂,好不容易有这么个机会,可以长进技术水平,不想因为和老大冲突而导致离开。
听起来,沈俊的想法是有一点道理,但如果再细想,却并非如此。现在公司是一个什么状况?人员只有三四个人,一间小小的办公室也破破落落,没有社保,没有任何福利,有几个有经验的人士会过来?如果薪水开得很高,也许还能招到一些水平不错的,可估计武总根本就不会舍得出钱。所能招的,也就是一些毫无经验,什么都不懂的应届生。从这个角度来说,也不难理解为何沈俊虽然来得比曹燕早,但却经常受到黄华中呵斥,而对曹燕却客客气气——因为曹燕是有经验的,难得骗来一个;沈俊属于应届生,满街一抓一大把。
段伏枥也知道自己在公司的位置举足轻重:张文香是管采购的,也就会买卖元器件,顺便兼任一下日常事务;黄华中、沈俊和曹燕都是做硬件的,对软件可谓一窍不通;另外一个做软件的柳,可惜也不思进取,只能凭着以前单片机的经验做做底层驱动的调试,对于应用程序绝对没有半点涉猎;因此只剩下段伏枥一人,顶起了公司应用程序的一边天。这边天可不能倒啊,没有应用程序的公司要怎么继续生存下去?虽然黄华中做人不靠谱,但这点厉害关系还是看得清清楚楚的,所以对于段伏枥也是非常客客气气。不仅如此,还口口声声称段伏枥为兄弟,让人感觉关系非常铁。
所幸段伏枥不是那种恃宠而骄的人,虽然对此也心知肚明,但还是和以前一样,恭恭敬敬称呼黄华中为老大,对于老柳也颇为尊敬。很多初出茅庐的应届生,当上头对他有所青睐的时候,往往容易得意忘形,开始看很多同事都不顺眼。于是慢慢地,很多同事都看不惯他,慢慢他也就被孤立,甚至还有可能被同事在背后捅刀子,最后导致一发不可收拾的悲惨结果。
应届生的技术水平普遍不咋地,提高自己的技术水平是首要任务,毕竟关系到自己的前途。可在提高技术水平的同时,也不能忘记人际关系的磨练,可偏偏很多应届生就栽在这里。同事间的关系不像同学,同学关系其实非常单纯,没有任何利益关系;而同事呢,更多的是一种利益,如果这利益互相没有冲突,那么还好,但如果有冲突的话,因为一个萝卜也就一个坑,如果那个坑被占满了,那么其它的萝卜也种不进去。所以这时候,不是同事踩着自己,就是自己踩着同事,总之爬上去的只有一个人。因此,如何正确处理同事间的关系,便显得尤为重要。
所幸的是,现在利剑公司就只有这么几个人,所以这些勾心斗角的关系还不存在。因此段伏枥还能不管这些人际关系,可以心无旁骛地专研技术,这应该也算是不幸中的大幸了。
- 前言
- 《那些年啊,那些事——一个程序员的奋斗史》——01
- 《那些年啊,那些事——一个程序员的奋斗史》——02
- 《那些年啊,那些事——一个程序员的奋斗史》——03
- 《那些年啊,那些事——一个程序员的奋斗史》——04
- 《那些年啊,那些事——一个程序员的奋斗史》——05
- 《那些年啊,那些事——一个程序员的奋斗史》——06
- 《那些年啊,那些事——一个程序员的奋斗史》——07
- 《那些年啊,那些事——一个程序员的奋斗史》——08
- 《那些年啊,那些事——一个程序员的奋斗史》——09
- 《那些年啊,那些事——一个程序员的奋斗史》——10
- 《那些年啊,那些事——一个程序员的奋斗史》——11
- 《那些年啊,那些事——一个程序员的奋斗史》——12
- 《那些年啊,那些事——一个程序员的奋斗史》——13
- 《那些年啊,那些事——一个程序员的奋斗史》——14
- 《那些年啊,那些事——一个程序员的奋斗史》——15
- 《那些年啊,那些事——一个程序员的奋斗史》——16
- 《那些年啊,那些事——一个程序员的奋斗史》——17
- 《那些年啊,那些事——一个程序员的奋斗史》——18
- 《那些年啊,那些事——一个程序员的奋斗史》——19
- 《那些年啊,那些事——一个程序员的奋斗史》——20
- 《那些年啊,那些事——一个程序员的奋斗史》——21
- 《那些年啊,那些事——一个程序员的奋斗史》——22
- 《那些年啊,那些事——一个程序员的奋斗史》——23
- 《那些年啊,那些事——一个程序员的奋斗史》——24
- 《那些年啊,那些事——一个程序员的奋斗史》——25
- 《那些年啊,那些事——一个程序员的奋斗史》——26
- 《那些年啊,那些事——一个程序员的奋斗史》——27
- 《那些年啊,那些事——一个程序员的奋斗史》——28
- 《那些年啊,那些事——一个程序员的奋斗史》——29
- 《那些年啊,那些事——一个程序员的奋斗史》——30
- 《那些年啊,那些事——一个程序员的奋斗史》——31
- 《那些年啊,那些事——一个程序员的奋斗史》——32
- 《那些年啊,那些事——一个程序员的奋斗史》——33
- 《那些年啊,那些事——一个程序员的奋斗史》——34
- 《那些年啊,那些事——一个程序员的奋斗史》——35
- 《那些年啊,那些事——一个程序员的奋斗史》——36
- 《那些年啊,那些事——一个程序员的奋斗史》——37
- 《那些年啊,那些事——一个程序员的奋斗史》——38
- 《那些年啊,那些事——一个程序员的奋斗史》——39
- 《那些年啊,那些事——一个程序员的奋斗史》——40
- 《那些年啊,那些事——一个程序员的奋斗史》——41
- 《那些年啊,那些事——一个程序员的奋斗史》——42
- 《那些年啊,那些事——一个程序员的奋斗史》——43
- 《那些年啊,那些事——一个程序员的奋斗史》——44
- 《那些年啊,那些事——一个程序员的奋斗史》——45
- 《那些年啊,那些事——一个程序员的奋斗史》——46
- 《那些年啊,那些事——一个程序员的奋斗史》——47
- 《那些年啊,那些事——一个程序员的奋斗史》——48
- 《那些年啊,那些事——一个程序员的奋斗史》——49
- 《那些年啊,那些事——一个程序员的奋斗史》——50
- 《那些年啊,那些事——一个程序员的奋斗史》——51
- 《那些年啊,那些事——一个程序员的奋斗史》——52
- 《那些年啊,那些事——一个程序员的奋斗史》——53
- 《那些年啊,那些事——一个程序员的奋斗史》——54
- 《那些年啊,那些事——一个程序员的奋斗史》——55
- 《那些年啊,那些事——一个程序员的奋斗史》——56
- 《那些年啊,那些事——一个程序员的奋斗史》——57
- 《那些年啊,那些事——一个程序员的奋斗史》——58
- 《那些年啊,那些事——一个程序员的奋斗史》——59
- 《那些年啊,那些事——一个程序员的奋斗史》——60
- 《那些年啊,那些事——一个程序员的奋斗史》——61
- 《那些年啊,那些事——一个程序员的奋斗史》——62
- 《那些年啊,那些事——一个程序员的奋斗史》——63
- 《那些年啊,那些事——一个程序员的奋斗史》——64
- 《那些年啊,那些事——一个程序员的奋斗史》——65
- 《那些年啊,那些事——一个程序员的奋斗史》——66
- 《那些年啊,那些事——一个程序员的奋斗史》——67
- 《那些年啊,那些事——一个程序员的奋斗史》——68
- 《那些年啊,那些事——一个程序员的奋斗史》——69
- 《那些年啊,那些事——一个程序员的奋斗史》——70
- 《那些年啊,那些事——一个程序员的奋斗史》——71
- 《那些年啊,那些事——一个程序员的奋斗史》——72
- 《那些年啊,那些事——一个程序员的奋斗史》——73
- 《那些年啊,那些事——一个程序员的奋斗史》——74
- 《那些年啊,那些事——一个程序员的奋斗史》——75
- 《那些年啊,那些事——一个程序员的奋斗史》——76
- 《那些年啊,那些事——一个程序员的奋斗史》——77
- 《那些年啊,那些事——一个程序员的奋斗史》——78
- 《那些年啊,那些事——一个程序员的奋斗史》——79
- 《那些年啊,那些事——一个程序员的奋斗史》——80
- 《那些年啊,那些事——一个程序员的奋斗史》——81
- 《那些年啊,那些事——一个程序员的奋斗史》——82
- 《那些年啊,那些事——一个程序员的奋斗史》——83
- 《那些年啊,那些事——一个程序员的奋斗史》——84
- 《那些年啊,那些事——一个程序员的奋斗史》——85
- 《那些年啊,那些事——一个程序员的奋斗史》——86
- 《那些年啊,那些事——一个程序员的奋斗史》——87
- 《那些年啊,那些事——一个程序员的奋斗史》——88
- 《那些年啊,那些事——一个程序员的奋斗史》——89
- 《那些年啊,那些事——一个程序员的奋斗史》——90
- 《那些年啊,那些事——一个程序员的奋斗史》——91
- 《那些年啊,那些事——一个程序员的奋斗史》——92
- 《那些年啊,那些事——一个程序员的奋斗史》——93
- 《那些年啊,那些事——一个程序员的奋斗史》——94
- 《那些年啊,那些事——一个程序员的奋斗史》——95
- 《那些年啊,那些事——一个程序员的奋斗史》——96
- 《那些年啊,那些事——一个程序员的奋斗史》——97
- 《那些年啊,那些事——一个程序员的奋斗史》——98
- 《那些年啊,那些事——一个程序员的奋斗史》——99
- 《那些年啊,那些事——一个程序员的奋斗史》——100
- 《那些年啊,那些事——一个程序员的奋斗史》——101
- 《那些年啊,那些事——一个程序员的奋斗史》——102
- 《那些年啊,那些事——一个程序员的奋斗史》——103
- 《那些年啊,那些事——一个程序员的奋斗史》——104
- 《那些年啊,那些事——一个程序员的奋斗史》——105
- 《那些年啊,那些事——一个程序员的奋斗史》——106
- 《那些年啊,那些事——一个程序员的奋斗史》——107
- 《那些年啊,那些事——一个程序员的奋斗史》——108
- 《那些年啊,那些事——一个程序员的奋斗史》——109
- 《那些年啊,那些事——一个程序员的奋斗史》——110
- 《那些年啊,那些事——一个程序员的奋斗史》——111
- 《那些年啊,那些事——一个程序员的奋斗史》——112
- 《那些年啊,那些事——一个程序员的奋斗史》——113
- 《那些年啊,那些事——一个程序员的奋斗史》——114
- 《那些年啊,那些事——一个程序员的奋斗史》——115
- 《那些年啊,那些事——一个程序员的奋斗史》——116
- 《那些年啊,那些事——一个程序员的奋斗史》——117
- 《那些年啊,那些事——一个程序员的奋斗史》——118
- 《那些年啊,那些事——一个程序员的奋斗史》——119
- 《那些年啊,那些事——一个程序员的奋斗史》——120
- 《那些年啊,那些事——一个程序员的奋斗史》——121
- 《那些年啊,那些事——一个程序员的奋斗史》——122
- 《那些年啊,那些事——一个程序员的奋斗史》——123
- 《那些年啊,那些事——一个程序员的奋斗史》——124
- 《那些年啊,那些事——一个程序员的奋斗史》——125
- 《那些年啊,那些事——一个程序员的奋斗史》——126
- 《那些年啊,那些事——一个程序员的奋斗史》——127
- 《那些年啊,那些事——一个程序员的奋斗史》——128 (终章)