我所亲历的“神”迹(一)

来源:互联网 发布:快手娃娃姐淘宝店名字 编辑:程序博客网 时间:2024/05/21 08:42
导读:
  一,到底谁不懂
  第一次见到马克,根本不能相信他就是总公司从美国派来这里帮我们解决技术问题的专家。因为这哥们儿根本不象:一头长长的金毛呈披头散发状--要不因为他是男的,我会以为他刚被人强X过;身上是摇滚T恤破口牛仔裤,脚上的马靴早就磨白了边。两只胳膊上是大片大片的纹身,美国黑社会打算进军高科技领域?还是要向亚洲渗透?当初咱年轻时最暴力的打扮也没他这么“火”。 他来的目的很简单,公司某型号的机器视觉系统的成象不稳定,时亮时暗,于是让他来解决。由于我们公司是国际性大公司,全部的源程序都在美国总公司存着。我们亚洲这边如果用到哪部分的程序,要向总公司申请,他们再把那部分程序交给我们。但我们也只是能“看”而已--不能编译(compile),所以不能生成可执行的文件。如果实在要改,也只能是改好之后把源程序送回美国总部,在那里编译。一句话,老外既不相信也看不起亚洲人。 所以在马克来之前我心里就已经憋着口气,被人处处防着也就算了。怎么说咱也搞视觉这么多年了,这么个简单的问题还用得着从美国送个什么专家来?直接把源程序交给我,不出两天我就能把问题解决了。
  马克来是带着视觉部分的源程序来的,于是我直接带着他提着电脑来到机器前。等他把程序装进电脑,我便凑过去和他一起看。不出两分种咱就找到了问题:程序的步骤写错了。检测系统的检测程序都是这样的:
  while//循环
  {
  if(IO通讯口收到讯号)
  { 激发闪光灯源; if(拍照成功)
  { 检测; }
  }
  }//循环结束
  而我们公司的程序却是:
  while//循环
  {
  if(IO通讯口收到讯号)
  {
  激发闪光灯源;
  检测;
  if(拍照成功)
  { }
  }
  }//循环结束
  一看到这里当时得意极了!靠!早就说不必派个什么专家来,看!问题不是被我发现了么。哪有还没拍照先作检测的道理?这不是等于系统正在检测的是上一次拍的图象吗?当时我就马克说了,他却摇了摇头,只说了一句“不可能,你不懂”便不再理我了。我的火立刻蹿了上来:你丫有什么了不起啊!不就是个洋人么,这么看不起人。于是我们两个就吵了起来。其实并不真的在吵,主要是我在说,而他翻来覆去就只是那么句:“不可能,你不懂”。最后,他在我的一再要求下,按照我的要求把程序改了,并且当即就编译(他的手提电脑可以编译)放到机器里运行。可运行的结果让我一下子蔫了,无话可说--原来系统的成象只是时明时暗,可是现在按我的意思改的程序却是一片漆黑,连个影儿都没有。简直想找个洞钻进去——脸丢到家了。 一连两天,马克都用他自己的方法进行测试,我再也不吭一声。到了第三天居然成功了!真他妈见鬼了。没办法,我只能拉下脸来向他请教。
  原来,我过去写程序的那种顺序,只能适用于普通低速运行的系统。以我那种方法写出来的程序,其实在整个远行过程中间浪费了许多时间,于是我们公司的一帮“神”们,对系统进行了一系列的改进。具体的改进有许多方面,至于为什么一定要先检测后拍照?马克画了一条曲线给我看,说我们公司灯源所用的是XX公司生产的XX型号的LED。而根据厂家所提供的规格说明书上所讲,这种LED从通电到亮度达到最高,其过程就是这条曲线。一般公司的视觉系统,都是要等到LED亮到是亮的时候才拍照。而从LED通电到亮度达到最高这中间的几个毫秒的时间,系统处于 “等待”状态--什么都没作,浪费掉了这几个毫秒。所以,我们公司的系统的步骤是,当LED通电以后,系统去作别的事情,等事情作完刚好LED也达到最亮,这时候系统才来拍照。这就是为什么检测在前而拍照在后了,因为第一次循环进来,其实系统并没有真的在作检测,而是仍在处理上一次检测余下的收尾工作,但同时LED已经激活了;等第二次循环进来,系统才开始拍照;第三次循环进来,系统才开始检测。这就是为什么我们公司的机器,比竞争对手的运行速度要快出许多的原因之一。 最后,马克告诉我说,我们这里的机器之所以有问题,是因为我们亚洲所安装的机器中使用的电脑,与美国所用的不同。他作的改进只是把他带来的一张电脑主板换了进去。“估计是你们用的电脑主板运行不稳定”这是他最后得出的推论。 是不是我们亚洲厂家提供的电脑主板就真的不如美国生产的主板稳定,咱是搞不清楚。反正,从此我们公司的机器一律固定使用美国某家公司的产品,而且再也没有出过问题。靠!神了! 后来听去过美国的同事讲,马克不仅是某名牌大学博士毕业,而且那个“先检测后拍照”的程序,就是他提出的改进措施之一,让系统节省了几个毫秒。另外还有就是他天天骑着戴维。哈里森的巨型摩托上下班。酷毙了!

本文转自
http://mvtom.blogcn.com/diary,106583696.shtml
原创粉丝点击